怠惰の極み

怠惰な学生かもしれない

Log4jの脆弱性を薄く浅くまとめる

セキュリティキャンプのリレーブログです。前回の僕の記事はZennでかきましたが、今回ははてなブログを使ってみようと思います。前回の方のブログはこちら

今回のテーマは Log4j脆弱性(CVE-2021-44228) Twitterでかなり騒がれていましたが、実際にどのようなものなのでしょうか? (Javaをほとんど触ったことがない人がまとめます。)

Log4gって何?

そもそも今回脆弱性が見つかったLog4jとは何者なのか。簡単に。

Log4jは、オープンソースで提供されている Javaプログラム用のロギングライブラリ。Apache Software Foundationが提供していて、正式にはApache log4jというらしい。 Log4jは、設定ファイルで設定することで、デバッグ情報やエラー情報などをプログラム内からコンソールやファイルやログサーバなどに出力することができるっぽい。

脆弱性の概要

今回の脆弱性は、任意のコード実行の脆弱性IPAによると、「遠隔の第三者が細工したデータを送る事で、任意のコマンドを実行される可能性がある」そう。要は、任意のJavaコードをサーバーやコンピュータ上で実行されていまいかねないということ。 LunaSecは「壊滅的な割合の設計上の失敗」、Tenableは「過去10年間で最大かつ最も重大な単一の脆弱性」といっている。 ちなみに、この脆弱性にはLog4Shellという名前がついているらしい。

何が起きる(た)

今回悪用されたのは、Lookupという機能。 JavaにはJNDI(Java Naming and Directory Interface)というAPIがある。これを利用すると、実行時にデータへのパスを指定してJavaオブジェクトがLookup できるようになる。また、LDAP(Lightweight Directory Access Protocol)というものがあり、任意の場所にあるサーバーからURLとしてオブジェクトデータを取ってきてしまう。これらによって、悪意のあるコードを読み込ませることや、データを攻撃者のサーバーに送信してしまうことがあるらしい。

参考資料

Log4Shell Wikipedia

Apache Log4j の脆弱性対策について(CVE-2021-44228) IPA

【注意喚起】Log4jの脆弱性を狙う攻撃を多数検知、至急対策を! LAC

log4jとは Qiita