Apache Log4jとは何か?
Log4jはJavaのログ出力に使われるライブラリーのこと(ロギングユーティリティー)API
Log4jは設定ファイルの設定により、デバック・エラー情報を、プログラム内からコンソール、ファイル、その他ログサーバー 等に出力することができるもの
柔軟性があるAPIのため広く一般に浸透しているものである
Log4jの「JNDI Lookup」で見つかった脆弱性とは?
今回見つかった脆弱性は「CVE-2021-44228」と名付けられ、深刻度レベルは最高レベルになっています
通常ログを出力するだけなら、文字列を任意のファイルなどに記録するだけです
でもLog4jはなぜか、「ログに記録した時特定の命令が書いてあったら外部からプログラムを読み込む」という設定ができてしまうそうです
ログに文字列を送信することができれば、サーバー のデータ改ざんや盗み出しができてしまう恐れがある
ログとして記録させるためには、通信リクエストを送ればいいだけなので結構簡単
かつ、Javaは非常に多くのサービスに使われていることから被害が大きく・広範囲におよぶ可能性があるのです
対策は?
まず、Javaを使っているシステムがあるならログを確認して攻撃の痕跡を探します
一番いいのはLog4jのアップデートです
アップデート情報:https://logging.apache.org/log4j/2.x/security.html
回避方法として取れるものは、アクセス制限の強化や以下の設定変更を行うことです
Log4jバージョン2.10及びそれ以降
(1)Log4jを実行するJava仮想マシンを起動時に「log4j2.formatMsgNoLookups」というJVMフラグオプションを「true」に指定する 例: -Dlog4j2.formatMsgNoLookups=true
(2)環境変数「LOG4J_FORMAT_MSG_NO_LOOKUPS」を「true」に設定する