幅広く利用されているロギングライブラリlog4jに重大な脆弱性

By 清水 孝郎 - DECEMBER 11, 2021

SHARE:

本文の内容は、2021年12月10日にStefano Chiericiが投稿したブログ(https://sysdig.com/blog/cve-critical-vulnerability-log4j/)を元に日本語に翻訳・再構成した内容となっております。

最近、セキュリティリサーチャーApacheのlog4jにおける脆弱性CVE-2021-44228を公開しました。log4jは、ログを記録する目的で使用される一般的なJavaベースのライブラリです。Struts2、Kafka、Solrなどの人気プロジェクトでは、log4jが使用されています。この脆弱性は、Twitterで発表され、修正されたことを示すgithubのコミットへのリンクが掲載されています。

また、この脆弱性を利用するための概念を実証するコードもgithubに公開されており、この脆弱性が些細なものであることを示しています。

この脆弱性は、攻撃者が特別に細工した文字列をログ機能に送信するだけで発生します。具体的には、LDAPのJava Naming and Directory Interface(JNDI)サポートに脆弱性があります。

悪意がある文字列にLDAPを使用する指示が含まれている場合、サーバーは指定されたLDAPサーバーに連絡を取り、指定されたJavaリソースをロードしようとします。このサーバーとリソースが危険にさらされると、サーバー上でリモートコードが実行される可能性があります。

影響を受けるバージョン

特に、CVE-2021-44228 は脆弱なバージョンに影響します:2.0-ベータ9 から 2.14.1

修正バージョン: 2.15.0

詳細については、Apache のセキュリティアナウンスをご覧ください。log4j の修正コードは Apache の github で見ることができます。

脆弱性の管理

Sysdig Secureでは、レジストリーやランタイム環境で、脆弱なバージョンのlog4jを使用しているすべてのコンテナ・イメージの詳細をレポートすることができます。

これを素早く実行するには、まず管理者がSysdig Labsの「Scheduled Reports」を有効にしてください。


次に、「スキャニング」→「スケジュールレポート」→「レポートの追加」を選択し、「データ」タブに移動します。リポジトリを入力し、新しい条件を追加します。脆弱性ID。脆弱性IDのフィールドには、CVE-2021-44228に対応する「VULNDB-275958」を使用します。

sysdig secure detection
プレビューボタンでは数行しか表示されないので、Configurationタブでレポートをスケジュールする必要があります。レポートが実行されると、影響を受けたすべてのイメージのリストが表示され、脆弱性の修復作業を開始することができます。

ベスト・プラクティスにおけるCI/CDの一環としてイメージをデプロイする前にスキャンすることをお勧めします。Sysdigのスキャン・ポリシーを使えば、脆弱性のあるイメージを検出したり、デプロイをブロックすることができます。

脅威の検出

Falcoランタイム検知機能を使用して、コンテナからの異常な振る舞いを検知し、悪用を検出します。これには、LDAPポート(389)を介したリモートサーバへの予期せぬ接続が含まれます。ただし、攻撃者は使用するポートを変更できるため、通常とは異なる送信ネットワークトラフィックを調査する必要があります。

また、grepなどの簡単なツールを使用したり、SIEMで相関ルールを作成したりすることで、この脆弱性を悪用しようとする試みをログファイルで確認することができます。効果は、保存されているログの冗長度に依存します。例えば、以下のようになります。

sudo egrep -i -r '\$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+' /var/log

Florian Roth氏の功績です。その他の検出例はこちらをご覧ください。

まとめ

この脆弱性は、log4jが広く使われていることと、悪用されやすいことから、非常に危険な脆弱性です。できるだけ早くlog4jの最新バージョン(本稿執筆時点では2.15.0)にアップグレードすることを強くお勧めします。

可能であれば、apacheが提供する指示に従うか、攻撃者が制御するデータをログ機能に渡せないようにすることで緩和することができます。


Sysdig Secureでは、他のオープンソース・プロジェクトとともに、アウトオブボックスのルールでFalcoを拡張し、Kubernetesのセキュリティをより簡単に扱い、管理できるようにしています。30日間の無料トライアルに登録して、ご自身の目で確かめてください!