2021年12月10日、Javaベースのログ出力ライブラリ「Apache Log4j」の2.x系バージョン(以降はLog4j2と記載)で確認された深刻な脆弱性を修正したバージョンが公開されました。セキュリティ関係組織では過去話題になったHeartbleedやShellshockと同レベルの脆弱性とも評価しています。ここでは関連する情報をまとめます。
1.何が起きたの?
- Javaベースのログ出力ライブラリLog4j2で深刻な脆弱性(CVE-2021-44228)を修正したバージョンが公開された。その後も修正が不完全であったことなどを理由に2件の脆弱性が修正された。
- 広く利用されているライブラリであるため影響を受ける対象が多く存在するとみられ、攻撃が容易であることから2014年のHeartbleed、Shellshock以来の危険性があるとみる向きもあり、The Apache Software Foundationも脆弱性の深刻度を最高(Critical)と評価している。
- 脆弱性に関連したスキャンや攻撃への悪用が報告されており、脆弱性の悪用による影響発生を考慮した対応が推奨されている。
2.脆弱性を悪用されると何が起きるの?
- 脆弱性を悪用された場合、機密情報の窃取やリモートから任意コード実行(CVE-2021-44228またはCVE-2021-45046)が行われる恐れがある。またDoS攻撃を受ける恐れもある。(CVE-2021-45105)
- Log4j2 には特定の文字列が出力されるログ中に含まれる場合、変数として置換する Lookup と呼称される機能が存在する。例えば、この機能を使って日付や環境情報などを動的に出力する。
- 2.0-beta9から2.15.0まではJNDI(Java Name and Directory Interface)のLookup機能が実装されており、このJNDI Lookup機能を悪用することでLDAPやRMIを使い外部の通信先や内部パスからclassファイルの読み込みを行わせたり、アプリケーション上でローカル class をインスタンス化したりすることで、任意のコードを実行が可能。またDNSを使い外部へサーバー内の情報(例えば環境変数)を送信することもできる。*1
- インターネットに公開されているシステムでJavaが利用されていない場合も、接続された別のシステムにおいて入力された値がそのまま引き渡されログ出力されるのであればJavaを利用するバックエンドのシステムが影響を受ける可能性がある。
脆弱性(CVE-2021-44228)デモ動画
3.影響を受ける条件は何?
次の条件をすべて満たす場合、脆弱性の影響を受ける可能性がある。影響を受ける最初のバージョン(2.0-beta9)のリリース日は2013年9月14日である*2ことから、8年前からリリースされているシステムやソフトウエア、アプライアンスなどでJavaを利用している場合は影響を受けている可能性を前提に対応することが推奨される。Log4j2のライブラリが存在するかはlog4j-core-*.jar
の名称に合致するファイルを探したり、実際に利用しているか確認する手段として-verbose:class
オプションを使った探し方がある。
対象となる前提条件
- 次のLog4j2に該当するライブラリ(
log4j-core
)を利用している。
CVE-2021-44228 | Apache Log4j 2.0-beta9から2.14.1 (2.15.0-rc1も含まれる) |
---|---|
CVE-2021-45046 | Apache Log4j 2.0-beta9から2.15.0(2.12.2を除く) |
CVE-2021-45105 | Apache Log4j 2.0-beta9から2.16.0(2.12.3を除く) |
CVE-2021-44832 | Apache Log4j 2.0-alpha7から2.17.0(2.3.2、2.12.4を除く) |
- 外部から入力された値をそのままログに出力する処理が実装されている。
- Log4j2のMessage Lookup機能が有効になっている。(2.14.1まで既定設定は有効)
(訂正-2021/12/14)実行環境のバージョンに係わらず任意のコード実行が可能であったため、「特定のバージョン以下のJava利用時」について3の条件および4の回避策から記載を削除。
Just added support to LDAP Serialized Payloads in the JNDI-Exploit-Kit. This attack path works in *ANY* java version as long the classes used in the Serialized payload are in the application classpath. Do not rely on your java version being up-to-date and update your log4j ASAP! pic.twitter.com/z3B2UolisR
— Márcio Almeida (@marcioalm) 2021年12月13日
1.x系への影響
既にサポートが終了している1.xバージョンも脆弱性の影響を受けることが検証で確認されている*3が予め構成を変更している必要があり、2.xと比較して相当にリスクは低いと評価されている。なお、既に1.xはサポートが終了していることから今回の問題にかかわらず早々に後継のライブラリへ移行することが推奨されている。(1.xの関係者はSLF4J/logbackに移行することを推奨している。)
〇影響が限定的とされる理由
4.脆弱性にどう対応すれば良いの?
緊急性の高い脆弱性であることから、詳細把握と並行(あるいは優先)して攻撃影響を緩和する対応を行うことが推奨される。
- Javaを利用するシステムでリスク受容が可能かを最優先で評価し、必要に応じて低減策(アウトバウンド通信の制限、一時的なサーバー停止など)を講じる。
- 影響を受ける資産を確認する(関係者へ問合せをかける)。影響を受ける場合はLog4j2を最新版へ更新する。
- ソフトウエアの更新と合わせて攻撃による影響有無を確認する。(SOCなど担当するチームで適切に処理されているかを確認する。)
対応① 最新版への更新
- 脆弱性への対応が行われたバージョン(2.16.0、または近々リリースされる2.12.2)に更新する。
- Javaの実行環境に起因して更新が行えないなどの場合は回避策の適用を検討する。*7
利用しているJava | 推奨対応策 |
---|---|
Java 6 | 2.3.2に更新 |
Java 7 | 2.12.4に更新 |
Java 8 以上 | 2.17.1に更新 |
それ以外 | 回避策の適用を検討 |
また2.16.0以降への更新による影響は次の通り。
対応② 回避策(更新が行えない場合)
Log4j2の更新がすぐに行えない場合は回避策として、classpathから特定の class ファイル(Jndilookup.class
)を削除する。zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
対応③ 攻撃有無の確認
- 不審なプロセスの起動、第三者によるファイル作成が行われていないかを確認する。
- 出力されたログを確認する際は、cheat sheetで記載されているようなバイパスで用いられる文字列(jndiで検索にかからない可能性も考慮)やログの出力タイミング(リアルタイムに出力されるとは限らないことから)に留意する。
不適切な「Log4shell対策」
この記事でも過去掲載していた内容など、脆弱性の回避策として紹介された方法の中には、長期的な観点からみた有効性や回避手段の存在を理由に適切ではない対策があるとして注意が呼び掛けられている。以下はその例。
不適切な対策 | 理由 |
---|---|
①Javaを最新に更新する | 直接 class を読み込ませる以外にApache Tomcatなどではアプリケーション上でローカル class をインスタンス化する方法でコード実行される恐れがある。またコード実行には到らずとも情報窃取やDoS攻撃を受ける恐れがある。 |
②WAF一辺倒での対策 | HadoopやSparkなどの内部データパイプラインや、デスクトップアプリはWAFでは保護されない。またフィルターに依存した単純な対策を行うWAFの場合は抜けが発生する恐れもある。 |
③PatternLayoutの変更(%m →%m{nolookups} )④Lookup機能の無効化(起動時オプションに -Dlog4j2.formatMsgNoLookups=true を追加。または環境変数にLOG4J_FORMAT_MSG_NO_LOOKUPS="true" を設定) |
Lookupが行われる可能性のあるコードが残っており、これらの設定が行われていたとしても特定のシナリオでコード実行が行われる恐れがある。 |
WAFなどのセキュリティ製品の対応状況
WAFなどセキュリティ製品やサービスで遮断への対応状況が公表されている。シグネチャをバイパスできないかと検証*10も行われており、多層防御の1つとして組み入れることが望ましい。
- Cloudflare CVE-2021-44228 - Log4j RCE 0-day mitigation
- AWS Apache Log4j2 Issue (CVE-2021-44228)
- SST Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)について
- Akamai CVE-2021-44228 - Zero Day Vulnerability in Apache Log4j That Allows Remote Code Execution (RCE)
- Microsoft Microsoft’s Response to CVE-2021-44228 Apache Log4j 2
- Paloalto Another Apache Log4j Vulnerability Is Actively Exploited in the Wild (CVE-2021-44228)
- TrendMicro SECURITY ALERT: Apache Log4j "Log4Shell" Remote Code Execution 0-Day Vulnerability (CVE-2021-44228)
- Zscaler Security Advisory: log4j 0-day Remote Code Execution Vulnerability (CVE-2021-44228)
- Google Google Cloud Armor WAF rule to help mitigate CVE-2021-44228 Apache Log4j vulnerability
- ビットフォレスト クラウド型 Web 脆弱性診断ツール「VAddy」、Apache Log4jの脆弱性(CVE-2021-44228)検査に緊急対応
- EG Secure Solutions 緊急アラート・セキュリティ情報Apache Log4jの深刻な脆弱性(CVE-2021-44228)と「SiteGuardシリーズ」の対応
5.既に悪用はされているの?
- 2021年12月1日にCVE-2021-44228のExploitを初めて確認したとCloudflare CEOのMatthew Prince氏が投稿。Cisco Talosも12月2日に悪用を観測したことを報告しており、影響有無の確認を数週間広げて行うことを強く推奨している。*11
- 2021年12月10日頃より、脆弱性を悪用するアクセスが多数確認されているとしてCloudflareやimpervaが報告している。Cloudflareが遮断したピークは1分当たり2万回、impervaは1時間当たり28万回を数えるまでに至っている。Fastlyも同様の傾向を報告している。
- Microsoftは中国、イラン、北朝鮮、トルコの国家支援を受けているとみられるグループ、アクセスブローカーとして追跡している複数のグループによる悪用を確認したと報告。*12
スキャニング行為以外の悪用の動きとして次のケースがTwitterやセキュリティ関連組織より報告されている。
- 暗号資産のマイナーが設置される *13 *14 *15 LDAPからRMIに切替が行われているケースの報告もある。*16
- MiraiなどのLinuxボットネットに感染する *17
- 認証情報が窃取される。*18
- Cobalt Strikeに感染する。*19
- ランサムウエアに感染する。(確認事例:Khonsariランサムウエア、Conti ランサムウエア)
影響を受けた事例としてはベルギーの国防省で攻撃により数日間の影響が生じたことが報じられている。*20
実証コードやツール
脆弱性を検証する実証コードやツール類もGithubに複数公開されている。リモートコード実行を直接確認しているものが存在する可能性を考慮し、実行前に挙動確認を十分に行う必要がある。
- https://github.com/takito1812/log4j-detect
- https://github.com/Neo23x0/log4shell-detector
- https://github.com/Cybereason/Logout4Shell
- https://github.com/whwlsfb/Log4j2Scan
- https://github.com/pmiaowu/BurpShiroPassiveScan/
- https://github.com/tangxiaofeng7/BurpLog4j2Scan
- https://github.com/whwlsfb/Log4j2Scan
- https://github.com/xiajun325/apache-log4j-rce-poc
- https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce
- https://twitter.com/marcioalm/status/1471740771581652995
脆弱性のテストサイトも公開されている。
- Trend Micro Log4j Vulnerability Tester
攻撃に関する観測情報
- 警察庁 Javaライブラリ「Apache Log4j」の脆弱性(CVE-2021-44228)を標的とした攻撃の観測について
- LAC 【注意喚起】Log4jの脆弱性を狙う攻撃を多数検知、至急対策を!
- ISC Log4j / Log4Shell Followup: What we see and how to defend (and how to access our data)
- 360 Netlab Ten families of malicious samples are spreading using the Log4j2 vulnerability Now
- Cloudflare Exploitation of Log4j CVE-2021-44228 before public disclosure and evolution of evasion and exfiltration
- JPCERT/CC Apache Log4j2のRCE脆弱性(CVE-2021-44228)を狙う攻撃観測
6.脆弱性の詳細を知りたい
CVE | CVE-2021-44228 | CVE-2021-45046 | CVE-2021-45105 | CVE-2021-44832 |
---|---|---|---|---|
深刻度 | Critical | Critical | High→Moderate | Moderate |
CVSSv3(base) (The Apache Software Foundation評価) |
10.0 | 9.0 | 7.5→5.9 | 6.6 |
種類 | RCE | DoS→RCE | DoS | RCE |
報告日 | 2021年11月24日 | 2021年12月14日 | 2021年12月15日 | 2021年12月28日 |
修正版公開日 | 2021年12月10日頃 | 2021年12月14日 | 2021年12月18日 | 2021年12月28日 |
報告者 | Alibaba Cloud Security Team ChenZhaojun氏 | iCConsult Kai Mindermann氏 | Akamai Hideki Okamoto氏、他匿名の脆弱性研究者 | - |
脆弱性の通称 | Log4shell | - | - | - |
- Alibaba Cloud Security Teamの記事
【漏洞预警】Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)
本当に深刻なの?
- SANS ISC(Internet Strom Center)はinfoconのThreat LevelをYellowに変更した。Yellowは新規の重大な脆弱性の評価が行われており影響が未知数の状況を示す。影響緩和のための対策を迅速に行うことが推奨されている。
- Yellowになるのは2017年のWannaCryから4年ぶりとなる。それ以前の脆弱性ではHeartbleed、ShellshockもYellowと評価された。その後14日夜にCNNがトップニュースとして取り上げられ広く周知されたことを理由にGreenへ戻されている。*21
- WannaCryの攻撃阻止に係わったセキュリティ研究者 Marcus Hutchins氏も「非常に悪い」と評価している。
This log4j (CVE-2021-44228) vulnerability is extremely bad. Millions of applications use Log4j for logging, and all the attacker needs to do is get the app to log a special string. So far iCloud, Steam, and Minecraft have all been confirmed vulnerable.
— Marcus Hutchins (@MalwareTechBlog) 2021年12月10日
7.公式情報や注意喚起は出ている?
注意喚起など
- JPCERT/CC(日本) Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起
- IPA (日本)Apache Log4j の脆弱性対策について(CVE-2021-44228)
- NISC(日本) ApacheLog4j の脆弱性(CVE-2021-44228)に関する注意喚起
- CISA(米国) STATEMENT FROM CISA DIRECTOR EASTERLY ON “LOG4J” VULNERABILITY
- CISA(米国)EMERGENCY DIRECTIVE 22-02 MITIGATE APACHE LOG4J VULNERABILITY
- FBI(米国)FBI Statement on Log4j Vulnerability
- NCSC(英国) Alert: Active scanning for Apache Log4j 2 vulnerability (CVE-2021-44228)
影響を受けていると公表されているサービスや製品の例
影響無しと確認された製品情報もアップデートが進められている。以下は2021年12月13日時点で影響を受けない製品を掲載しているベンダ。
製品別に影響の有無を整理されたページも公開されている。
Googleはlog4j-coreを対象にMavenのリポジトリを走査し、12月19日時点で約1万7000パッケージが影響を受けると報告。またこの内25%では修正リリースが行われているとした。
参考となる技術情報やメモ
- Log4Shell log4j vulnerability (CVE-2021-44228) - cheat-sheet reference guide
- CISA Apache Log4j Vulnerability Guidance
- CISA Alert (AA21-356A) Mitigating Log4Shell and Other Log4j-Related Vulnerabilities
- LunaSec Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package
- LunaSec Log4Shell Update: Second log4j Vulnerability Published (CVE-2021-44228 + CVE-2021-45046)
- LunaSec Log4Shell Update: Severity Upgraded 3.7 -> 9.0 for Second log4j Vulnerability (CVE-2021-45046)
- Mandiant Log4Shellの初期エクスプロイトと緩和に関する推奨事項
- JVN JVNVU#96768815 Apache Log4jにおける任意のコードが実行可能な脆弱性
- SST 情報システム部門・IT管理者、ITに関わるすべての方向け『Apache Log4j脆弱性の影響緩和のために今できること』
- log4jの脆弱性について
- log4j2の脆弱性(CVE-2021-44228) - てきとうなメモ
- Azure WAFでlog4jの脆弱性(CVE-2021-44228)対策をしてみる。
- Log4j 2.14.1の脆弱性対応
- 【図解】Log4jの脆弱性 CVE-2021-44228 (Log4shell or LogJam) について | SEの道標
- Log4j2 脆弱性問題における SpringBoot アプリケーションの検証
- NTTデータ先端 Apache Log4jに存在する RCE 脆弱性(CVE-2021-44228)についての検証レポート
- JPCERT/CC 2021年12月に公表されたLog4jの脆弱性について
- Hacker Newsの該当スレッド https://news.ycombinator.com/item?id=29504755
- Redditの該当スレッド https://old.reddit.com/r/programming/comments/rcxehp/rce_0day_exploit_found_in_log4j_a_popular_java/
関連タイムライン
日時 | 出来事 |
---|---|
2021年11月24日 | Alibaba Cloud Security TeamがThe Apache Software Foundationへ脆弱性について報告。 |
2021年12月9日 | TwitterにLog4j2のJNDI Lookupを使用したRCEに関する投稿が行われる。*22 |
2021年12月10日 | Alibaba Cloud Security Teamがリリース候補(rc1)にバイパスされる脆弱性が含まれていることを確認。 |
同日 | 脆弱性を修正したApache Log4j 2.15.0がリリース。 |
同日 | CVE-2021-44228を悪用する攻撃活動が多数観測され始める。 |
2021年12月13日 | CVE-2021-45046の脆弱性修正やJNDIの既定無効化等が行われたApache Log4j 2.16.0がリリース。 |
2021年12月15日 | Java 7 向けの修正版であるApache Log4j 2.12.2がリリース。 |
2021年12月17日 | CVE-2021-45046の情報が更新され、深刻度が緊急として再評価。 |
2021年12月18日 | 米CISAがLog4j2に係る緊急指令を発令。 |
同日 | Apache Log4j 2.17.0がリリース。 |
2021年12月22日 | Apache Log4j 2.3.1、2.12.3がリリース。 |
2021年12月28日 | CVE-2021-44832の情報公開、修正されたApache Log4j 2.3.2、2.12.4、2.17.1がリリース。 |
主な更新履歴
- 2021年12月13日 AM 新規作成
- 2021年12月13日 AM 悪用に関する情報を追加、一部表現を修正
- 2021年12月13日 PM 影響対象の製品を追加
- 2021年12月13日 PM 影響を受ける前提条件を修正
- 2021年12月14日 PM 影響を受ける前提条件、回避策からJava実行環境のバージョンを削除
- 2021年12月14日 PM 悪用状況等を更新
- 2021年12月15日 PM Log4jをLog4j2に表記修正、CVE-2021-45046の情報追加、回避策、悪用状況を更新
- 2021年12月16日 PM 悪用状況等を更新
- 2021年12月17日 PM CVE-2021-45046の情報を更新
- 2021年12月19日 AM CVE-2021-45105の情報を更新
- 2021年12月25日 AM その後のリリースなど情報反映。
- 2021年1月4日 AM CVE-2021-44832に関連する情報を更新。
*1:https://isc.sans.edu/https://isc.sans.edu/forums/diary/RCE+in+log4j+Log4Shell+or+how+things+can+get+bad+quickly/28120/
*2:https://logging.apache.org/log4j/2.x/changes-report.html
*3:https://github.com/apache/logging-log4j2/pull/608#issuecomment-990661374
*4:https://twitter.com/ceki/status/1469449618316533762
*5:https://github.com/apache/logging-log4j2/pull/608#issuecomment-991723301
*6:https://github.com/apache/logging-log4j2/pull/608#issuecomment-991730650
*7:https://twitter.com/WeldPond/status/1469313738029289476
*8:https://issues.apache.org/jira/browse/LOG4J2-3208
*9:https://issues.apache.org/jira/browse/LOG4J2-3211
*10:https://www.cyberkendra.com/2021/12/log4shell-advisory-resource-cheat-sheet.html
*11:https://blog.talosintelligence.com/2021/12/apache-log4j-rce-vulnerability.html
*12:https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/
*13:https://twitter.com/GossiTheDog/status/1469322120840708100
*14:https://isc.sans.edu/diary/28172
*15:https://isc.sans.edu/diary/rss/28124
*16:https://blogs.juniper.net/en-us/threat-research/log4j-vulnerability-attackers-shift-focus-from-ldap-to-rmi
*17:https://blog.netlab.360.com/threat-alert-log4j-vulnerability-has-been-adopted-by-two-linux-botnets/
*18:例えば環境変数に含まれるAWS_ACCESS_KEYを探る行為が報告されている。
*19:https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/
*20:https://www.standaard.be/cnt/dmf20211220_92316559