CVE-2021-44228について
Javaアプリケーションで広く使われているロギング・コンポーネント,Apache Log4jのVersion 2.x系で発見された脆弱性です。リモートから任意のコードの実行が可能な脆弱性(RCE:Remote Code Execution)であること,攻撃の手段が多岐にわたり外的な緩和策が有効ではないこと,有名なOSSコンポーネントで使用されている範囲が広いことから,脆弱性の危険度を示す業界標準の尺度CVSS Base Scoreは,各所で満点の10.0と評価されています。
WASに対するCVE-2021-44228の影響についての,正式なQ&A文章はこちらになりますので,適宜そちらも参照ください。
WebSphere traditionalランタイム
WAS本体には,Log4jとは別の独自のロギングコンポーネントが実装され使用されています。アプリケーションサーバー本体にはLog4jは含まれていません。しかし,WAS上で稼働するシステムアプリケーション,具体的には管理コンソールとUDDIが,Log4j Version 2.xを含んでいます。UDDIを使用しているケースはないとおもわれますが,管理コンソールはほぼ全ての環境で使用されているとおもいますので対処が必要です。
管理コンソールでは,旧バージョンで使用されていたローカル環境でマニュアルを参照するコンポーネント(kc.war)内でLog4jが使用されています。現在はマニュアルは全てオンラインで参照するようになっていますので,この機能は使用されていません。そのため,バージョンによっては問題のあるファイルをサーバーから削除することでも対応は可能です。
対処方法は,こちらのサポート文章を参照ください。下記のいずれかの対応が必要です。
- パッチを適用する
WAS V7.0 / 8.0 / 8.5 / 9.0に対して,CVE-2021-44228だけでなく,CVE-2021-4104,CVE-2021-45046にも対応したAPAR PH42762が公開されています。こちらを適用ください。すでにAPAR PH42728を適用いただいているお客様は,UDDIを使用していなければ,追加でPH42762を適用する必要はありません。管理コンソール内のLog4jは,PH42728を適用いただいた時点で削除されます。
- JDKを更新する
WASが利用しているJDKのバージョンが7.0.10.35, 7.1.4.35, または8.0.5.25以上であれば,リモートから送り込まれたコードが実行されることはなくなります。
- WASを起動するJVMにシステムプロパティを設定する
WASの管理コンソールを実行している全てのプロセスの,JVMのカスタムプロパティに,名前log4j2.formatMsgNoLookups,値tureを追加します。Log4jが文字列を解釈してJDNIのLookupをすることを抑止します。メッセージのフォーマット以外の攻撃方法が発見されたため,この対処方法は現在は推奨されていません。
- サーバー上のファイルを直接削除する
WAS V9.0は,<WAS導入ディレクトリ>/systemApps/isclite.ear/kc.war/WEB-INF/lib/にある,ファイル名がlog4jで始まる全てのファイルを削除することでも対応可能です。
WebSphere Libertyランタイム
分散系(zOS以外)およびIBM iの環境では,WebSphere LibertyランタイムにLog4jの実装コードは含まれていません。対応は不要です。また,Open Libertyも同様に対応は不要です。
zOS環境でのみ提供されているFeature,zosConnect-1.0 / zosConnect-1.2を使用している場合には,対応が必要です。APAR PH42762を適用してください
その他のWAS関連コンポーネント
アプリケーションや既存のサーバー環境を調査し,Libertyへの移行するための修正箇所や工数などを分析するTransformation AdvisorにもLog4jが使用されています。Version 2.5.1以上に更新してください。ただ,そもそもTransformation Advisorを外部からアクセス可能な状態で利用すると,アプリケーションの内部構造など重要な機密情報が漏洩します。Transformation Advisorは,かならず外部から利用できないようにアクセス制御された環境で利用してください。また,悪意ある攻撃者が作成した調査データを分析させることで,脆弱性を利用することも可能ですので,信頼できる状況で採取された情報以外は分析しないでください。
WASなどの導入に使用するInstallation Managerには,ファイル名にlog4jを含むJARファイルが使用されていますが,この中にLog4jの実装コードは含まれていません。CVE-2021-44228の影響はありません。
アプリケーションでLog4jを使用した場合の影響
WASがLog4jの脆弱性を持っていなくても,その上で動くアプリケーションがLog4jを含み,利用している場合には,この脆弱性は影響します。アプリケーションにLog4j Version 2.xの実装コードが含まれている場合には,直ちに対応をしてください。
WAS TraditionalランタイムのVersion 8.5/9.0を使用している場合は,APAR PH42899を適用することでも対応が可能です。このFixを適用すると,WASのクラスローダーが,ブラックリストに登録された特定のクラスのロードを拒否するようになります。現在は,org.apache.logging.log4j.core.lookup.JndiLookupがブラックリストに登録されています。Webアプリケーション内のWEB-INF/libにLog4jのJARファイルが置かれている場合などには,このAPARで脆弱性を防止できます。ただ,アプリケーションが独自のクラスローダーを持っていて他の場所からクラスをロードしている場合には,このAPARを適用してもCVE-2021-44228の脆弱性には対応できません。
他のIBM製品への影響について
PSIRTサイトに情報がまとめられていますので,こちらを参照ください。