Log4j 脆弱性詳細レビュー シリーズ 1: 攻撃の背景

Log4j 脆弱性詳細レビュー シリーズ 1: 攻撃の背景

オープンソースのログツールApache Log4j は、かつて重大なリモートコード実行の脆弱性にさらされていました。この脆弱性により、攻撃者は悪意のあるリクエストを作成し、リモートで悪意のあるコードの実行をトリガーできるようになります。ニュースが報じられると、この脆弱性は大きな注目を集めました。半年が経ち、関連の暑さも徐々に和らいできました。今こそ、プロセス全体を徹底的に見直し、そこから教訓を得て、将来同様の問題に遭遇しないようにすべき時です。

クライアント側の保護とコンプライアンスに参加して、すべてのユーザーデータの漏洩を防ぎましょう。

PCI DSS v4.0 標準に準拠しており、Web サイト上の悪意のあるコードや脆弱性を防ぐのに役立ちます。

Akama iのネットワーク セキュリティ サービス ソリューションについて詳しくご覧ください

この 4 部構成の記事シリーズでは、 Akamaiは自社の技術チームの理解、世界中の顧客と協力してこの脆弱性やその他のセキュリティ リスクに対処する中でAkamaiが蓄積してきた経験、インターネット トラフィック全体に対するAkamai の洞察を組み合わせて、 Log4j脆弱性の原因、範囲、悪用方法、進化の道筋、そして最も重要な、私たち全員がそこから学ぶべき教訓を紹介します。

始めましょう。この記事では主に、 Log4j の脆弱性に関する背景情報を紹介します。

1.タイムライン

2021年11月24日 Apache Foundation、広く使用されているJavaベースのログライブラリツールLog4jに、プライバシー情報の漏洩やリモートコード実行( RCE )につながる可能性のある重大な脆弱性があるという通知を受け取りました。この脆弱性は2013年から存在していました

翌日、 Apache Foundation はCVE-2021-44228を保持し、解決策の作業を開始しました。その後12日間にわたり、問題を解決するためにソースコードに複数の変更を加え、 2021年12月9日脆弱性を公表した

公開後、この脆弱性を狙った攻撃が急増し、それ以来、攻撃の規模と範囲は驚くべき速度で拡大し続けています

2. Log4jとは何ですか?

脆弱性を真に理解するには、まずLog4jとは何かを知る必要があります。 Log4jは、 Javaコミュニティの開発者によって広く使用されているライブラリであり、エラー情報や診断情報などをログに記録するためのシンプルでありながら強力なフレームワークを提供します。

Log4j は多くの優れた機能を提供しますが、その 1 つは、コンソール、ファイル、リモートTCPサーバー、 Syslog NT イベント ログ、電子メールなど、複数の宛先にログを記録する機能です。さらに、ログ メッセージ、ログ イベント、カスタム レイアウトなどの階層型フィルタリングもサポートしています

つまり、 Log4j は完全かつ豊富な機能セットを提供しているため、開発者の間で広く普及しており、 Webアプリケーションから組み込みデバイスまでさまざまな場所でLog4j が見られるようになっています

3. 検索とネスト

Log4j は多くの強力な関数をサポートしていますが、最もよく知られている関数の 1 つはLookupです。この機能により、開発者は変数や式をテキストに埋め込んでLog4j がそれを出力する前に自動的に評価できるようになります。たとえば、開発者は次のテキストをログに記録するコードを記述できます

 “${date:MM-dd-yyyy} All Systems Good”

Log4j は、パターン${date:MM-dd-yyyy} をログ検索として認識し、その式を今日日付に置き換えます。たとえば、今日が2021 年12 月20 日の場合 Log4j は上記のログの内容を次のように変更してから、対象の場所に出力します

 “12-20-2021 All Systems Good”

これは開発者にとって非常に便利です。この機能がなければ、開発者は日付を検索し、それを文字列としてフォーマットし、ログ行に追加して出力するコードを手動で記述する必要があります。このようなコードは書くのが面倒でも時間もかからないものの、結局はソフトウェアのコアビジネスロジックとは何の関係もなく、次から次へとプロジェクトに残っていくことになります

Log4jライブラリの既成関数を使用することで、開発者はプロジェクト内のより重要な開発作業に集中でき、ロギングに関連するさまざまなタスクをLog4jに処理させることができます

Log4j は、これらのタイプの検索式の多くをサポートしています。この記事の内容に密接に関連するenvlower の2 つを見てみましょう env は、ホスト システム上の環境変数をログ行に含めることができます。たとえば、開発者は次のテキストをログに記録できます

 “The current user is ${env:USER}”

ソフトウェアが管理者ユーザーとして実行されていると仮定すると、上記のログには次のように出力されます

 “The current user is Administrator”

envdatetext に新しいデータを挿入しますが lower は既存のコンテンツを操作するために使用できます。 Log4j は、式に現れる英語の文字を直接小文字に変換します。例えば​​:

 “The lower case text is ${lower:ABCDEFG}”

出力は次のようになります:

 “The lower case text is abcdefg”

この例自体は意味をなさないようですが、自分で文字を小文字に変換してみてはいかがでしょうか?忘れないでください、 Log4jでは検索式をネストすることも可能で、これは非常に便利です

最初の 2 つの式を次の形式にネストできます

 “The lower case current user is ${lower:${env:USER}}”

これにより、 Log4j は最初に${env:USER}式をAdministrator評価し、次にそれをlowerに渡して小文字のadministratorを生成し、最終的に次のような出力を生成します

 “The lower case current user is administrator”

4. JNDI

date env lower は興味深く便利ですが、脆弱性はJNDIルックアップによってのみ発生します JNDI ( Java Naming and Directory Interface)は、 Java開発および実行環境に組み込まれたメカニズムあり、共通インターフェースを通じてさまざまなディレクトリ サービス内の情報を簡単に照会できます

実際には、サポートできるディレクトリ サービスにはいくつかの種類があります。たとえば、 JNDI はDNSサーバーにクエリを実行してホストのIPアドレスを検出することをサポートしADおよびLDAP内のディレクトリ エントリをクエリできます。現在実行中のソフトウェアに固有の構成オプションなどの環境エントリについて実行中のJava環境自体を照会することもサポートしています

Log4jJNDIルックアップ式を使用すると、開発者はログ テキストに埋め込まれた式を通じてこの非常に強力なサブシステムに直接アクセスできます。たとえば、開発者が次の文字列をログに記録しようとすると

 “The current mail host is ${jndi:java:comp/env/mailhost}”

Log4j は$ {jndi:java:comp/env/mailhost}式をJNDIルックアップとして認識し疑似URL java:comp/env/mailhost をJNDIサブシステム渡します JNDI はこの特定のURLタイプをクエリとして認識し現在実行中のコンポーネントでmailhostと呼ばれる構成オプションを探します

このオプションが http://mymailserver.example.com に設定されていると仮定すると、 JNDI はこの情報をLog4jに返し Log4j は検索式を http://mymailserver.example.com に置き換えて、次の出力を生成します

 “The current mail host is mymailserver.example.com”

5.脆弱性を理解する

つまり、 Apache Log4jのこの脆弱性は、このライブラリ、特にそのルックアップ、ネスト、およびJNDI機能の人気により、攻撃者にとって大きなチャンスとなります。これらの機能は開発者にとって非常に便利ですが、リクエストを通じてデータ漏洩やリモートコード実行の機会も生み出します。この背景情報があれば、脆弱性と、攻撃者がそれをどのように悪用するかをより深く理解できるようになります

<<:  SpringBootはElasticSearchを詳細に統合し、関連する使用方法を説明します

>>:  クラウドネイティブテクノロジーを導入してデジタル変革を加速する方法

推薦する

SEOの共有方法: ウェブサイトの修正に関するヒント

昨日、その友人は、私のウェブサイトにいくつかのコラムを追加して、私のWebサイトを見せてくれたことを...

ドイツチームの視点からウェブサイト運営の欠陥リスクを回避する方法

今回のヨーロッパカップの盛り上がりは、明らかに過去2回よりも良い。グループリーグの2ラウンドを終えて...

Xiaoshengのウェブサイト最適化プロセス

毎日ウェブサイトでニュースを更新し、外部リンクを公開し、数百のリンクを公開していると常に考えている企...

Kubernetes を監視する際に避けるべき 4 つの落とし穴

[51CTO.com クイック翻訳] Kubernetes (K8S) は現在、マイクロサービスとコ...

Baidu Enterprise は誰のチーズが移動されたか知っていますか?

Baidu Knows は Baidu の最も強力な製品の一つです。Baidu Tieba と合わせ...

2018年、これらの新しいクラウドコンピューティング技術は注目に値する

マルチクラウド展開、Kubernetes コンテナ オーケストレーション、サーバーレス アーキテクチ...

企業向けWeiboマーケティングスキル: Weiboマーケティングツールの賢い活用

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeibo はセルフメデ...

Apple iCloud の停止により、一部の地域でサービスが遅くなったり利用できなくなったりする

Apple は iCloud サーバーに問題が発生しているようで、多くのユーザーがメッセージ、App...

needaserver-$50/L5520/24g メモリ/1T ハードディスク/100m 無制限/ロサンゼルス

needaserver は、1990 年代から超低価格のサーバーを提供してきました。全体的にネットワ...

digitalocean - 5月の割引コード第一弾

DigitalOcean は 5 月に最初の割引コードをリリースしました: SSDMAY10。この割...

Redis分散ロックの正しい実装原理の進化とRedissonの実用的な概要

[[437124]] Redis 分散ロックは SET コマンドを使用して実装できますか? CAP ...

エッジ コンピューティングのセキュリティを確保し、企業の「免疫力」を向上させる 5 つのベスト プラクティス

ますます多くの企業にとって、エンタープライズ ネットワークの「エッジ」が IT 投資の焦点になりつつ...

中国SEO業界の奇妙な現状についてのコメント

昨日、ロビンはDianshiのVIPメンバーとこの非常に興味深いトピックについて話し合いました。私は...

SEO で結果がいつも出ない?ここにあなたが欲しいヒントがあります

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO 最...

映画「サーチ」に見るSEOとは?

土曜日の夜の空き時間を利用して、久々に公開された映画「Search」を観ました。なぜこの映画を観たの...