ブログ

最近のApacheの問題の原因となったPath Traversal脆弱性の影響を体験する

Charlie Eriksen
2021年10月18日発行

10月初旬、ApacheはPath Traversal and Remote Code Executionの脆弱性を修正したバージョン2.4.49と、2.4.49での修正が不完全だったことに対応した2.4.50をリリースしました。Apacheはインターネットの25%を占めていると言われていることから、これらのリスクを回避するために最新バージョンにアップデートすることの重要性について、ソーシャルメディアで話題になっているのを見たことがあるかもしれません。しかし、実際のところはどうなのでしょうか?どの程度のリスクがあるのでしょうか?

自分で試してみませんか? 

私たちは、実際の環境でリスクを実証するためのミッションを構築し、誰でも試すことができるように公開しました。このミッションでは、Path Traversal脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。このミッションに参加するには、以下をクリックしてください。

Apache CVE-2021-41773 Mission を試用する旨のバナー。
パブリック・ミッションのページへ


パス・トラバーサルの脆弱性について 

この脆弱性は、2.4.49 リリースで導入された(URL 正規化関数の変更による)新しいパス正規化関数にあります。残念ながら、URL エンコードされたパスを正しく正規化することができませんでした。このため、以下の設定がない場合、パストラバーサル攻撃が可能となります。

ディレクトリファイルシステムへのアクセスを拒否または許可する


また、mod_cgi が有効になっている場合、これを利用してリモートコード実行の脆弱性が発生する可能性があります。しかし、何が問題だったのかを理解するために、まずURLエンコーディングについて掘り下げてみましょう。

URLエンコーディング

最も基本的なことですが、この脆弱性は、URLエンコードされたURLに対する配慮が欠けているために発生します。新たに導入したパスの正規化機能では、ドットがURLエンコードされている場合に完全に対応できていませんでした。 

パストラバーサル攻撃を行うためには、../ というシーケンスでトラバースする必要があることを覚えておいてください。しかし、正規化関数は賢いので、それを取り除くことができます。では、どうすればいいのでしょうか?.(ドット)を%2eまでURLエンコードして、.%2e/のようなシーケンスを使うことができます。これは多くの場合、Apache 2.4.40に対して機能します。しかし、もう一歩進んで、二重にエンコードすることもできます。.%2e/ のURLエンコードバージョンは、.%252e/です。これはさらに、Apacheによる正規化の試みを回避することができました。

しかし、それには問題があります。

もし誰かがブラウザで直接この脆弱性を利用しようと思っても、成功しないでしょう。これは、ブラウザがサーバーに送信されるURLを正規化しようとすることが原因です。つまり、二重にエンコードされた配列であっても削除されてしまうのです。また、単純にブラウザを使って実証することはできないということです。

cURLでは、--path-as-is フラグを使用することで、送信前にURLを正規化することを防ぐことができ、これを実証することができます。

Curlパスそのままのコードとリンク

予防と緩和

この問題を完全に防ぐためには、Apacheの最新のパッチを入手することが重要です。具体的には、最低でも 2.4.51 にアップグレードすることをお勧めします。しかし、最新の状態を保つためには、定期的にアップグレードするのがよいでしょう。

2.4.49を使用している場合、この問題を回避するには、Apacheの設定に以下の項目が含まれていることを確認してください。

ディレクトリコードタグに allowoverride none と require all の拒否ルールを設定する。

また、リモートコード実行を防ぐために、mod_cgi を利用していない場合は無効にしてください。

そのインパクトを体感してください。

何が起こったのか、自分で試してみたいと思いませんか? 


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

10月初旬、ApacheはPath Traversal and Remote Code Executionの脆弱性を修正したバージョン2.4.49をリリースし、その後、修正が不完全であったことに対応した2.4.50をリリースしました。私たちは、実際の環境でリスクを実証するために、ミッションを構築しました。今すぐお試しください。

ご興味がおありですか?

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

デモを予約する
シェアする
著者
Charlie Eriksen
2021年10月18日発行

シェアする

10月初旬、ApacheはPath Traversal and Remote Code Executionの脆弱性を修正したバージョン2.4.49と、2.4.49での修正が不完全だったことに対応した2.4.50をリリースしました。Apacheはインターネットの25%を占めていると言われていることから、これらのリスクを回避するために最新バージョンにアップデートすることの重要性について、ソーシャルメディアで話題になっているのを見たことがあるかもしれません。しかし、実際のところはどうなのでしょうか?どの程度のリスクがあるのでしょうか?

自分で試してみませんか? 

私たちは、実際の環境でリスクを実証するためのミッションを構築し、誰でも試すことができるように公開しました。このミッションでは、Path Traversal脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。このミッションに参加するには、以下をクリックしてください。

Apache CVE-2021-41773 Mission を試用する旨のバナー。
パブリック・ミッションのページへ


パス・トラバーサルの脆弱性について 

この脆弱性は、2.4.49 リリースで導入された(URL 正規化関数の変更による)新しいパス正規化関数にあります。残念ながら、URL エンコードされたパスを正しく正規化することができませんでした。このため、以下の設定がない場合、パストラバーサル攻撃が可能となります。

ディレクトリファイルシステムへのアクセスを拒否または許可する


また、mod_cgi が有効になっている場合、これを利用してリモートコード実行の脆弱性が発生する可能性があります。しかし、何が問題だったのかを理解するために、まずURLエンコーディングについて掘り下げてみましょう。

URLエンコーディング

最も基本的なことですが、この脆弱性は、URLエンコードされたURLに対する配慮が欠けているために発生します。新たに導入したパスの正規化機能では、ドットがURLエンコードされている場合に完全に対応できていませんでした。 

パストラバーサル攻撃を行うためには、../ というシーケンスでトラバースする必要があることを覚えておいてください。しかし、正規化関数は賢いので、それを取り除くことができます。では、どうすればいいのでしょうか?.(ドット)を%2eまでURLエンコードして、.%2e/のようなシーケンスを使うことができます。これは多くの場合、Apache 2.4.40に対して機能します。しかし、もう一歩進んで、二重にエンコードすることもできます。.%2e/ のURLエンコードバージョンは、.%252e/です。これはさらに、Apacheによる正規化の試みを回避することができました。

しかし、それには問題があります。

もし誰かがブラウザで直接この脆弱性を利用しようと思っても、成功しないでしょう。これは、ブラウザがサーバーに送信されるURLを正規化しようとすることが原因です。つまり、二重にエンコードされた配列であっても削除されてしまうのです。また、単純にブラウザを使って実証することはできないということです。

cURLでは、--path-as-is フラグを使用することで、送信前にURLを正規化することを防ぐことができ、これを実証することができます。

Curlパスそのままのコードとリンク

予防と緩和

この問題を完全に防ぐためには、Apacheの最新のパッチを入手することが重要です。具体的には、最低でも 2.4.51 にアップグレードすることをお勧めします。しかし、最新の状態を保つためには、定期的にアップグレードするのがよいでしょう。

2.4.49を使用している場合、この問題を回避するには、Apacheの設定に以下の項目が含まれていることを確認してください。

ディレクトリコードタグに allowoverride none と require all の拒否ルールを設定する。

また、リモートコード実行を防ぐために、mod_cgi を利用していない場合は無効にしてください。

そのインパクトを体感してください。

何が起こったのか、自分で試してみたいと思いませんか? 


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

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

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

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

10月初旬、ApacheはPath Traversal and Remote Code Executionの脆弱性を修正したバージョン2.4.49と、2.4.49での修正が不完全だったことに対応した2.4.50をリリースしました。Apacheはインターネットの25%を占めていると言われていることから、これらのリスクを回避するために最新バージョンにアップデートすることの重要性について、ソーシャルメディアで話題になっているのを見たことがあるかもしれません。しかし、実際のところはどうなのでしょうか?どの程度のリスクがあるのでしょうか?

自分で試してみませんか? 

私たちは、実際の環境でリスクを実証するためのミッションを構築し、誰でも試すことができるように公開しました。このミッションでは、Path Traversal脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。このミッションに参加するには、以下をクリックしてください。

Apache CVE-2021-41773 Mission を試用する旨のバナー。
パブリック・ミッションのページへ


パス・トラバーサルの脆弱性について 

この脆弱性は、2.4.49 リリースで導入された(URL 正規化関数の変更による)新しいパス正規化関数にあります。残念ながら、URL エンコードされたパスを正しく正規化することができませんでした。このため、以下の設定がない場合、パストラバーサル攻撃が可能となります。

ディレクトリファイルシステムへのアクセスを拒否または許可する


また、mod_cgi が有効になっている場合、これを利用してリモートコード実行の脆弱性が発生する可能性があります。しかし、何が問題だったのかを理解するために、まずURLエンコーディングについて掘り下げてみましょう。

URLエンコーディング

最も基本的なことですが、この脆弱性は、URLエンコードされたURLに対する配慮が欠けているために発生します。新たに導入したパスの正規化機能では、ドットがURLエンコードされている場合に完全に対応できていませんでした。 

パストラバーサル攻撃を行うためには、../ というシーケンスでトラバースする必要があることを覚えておいてください。しかし、正規化関数は賢いので、それを取り除くことができます。では、どうすればいいのでしょうか?.(ドット)を%2eまでURLエンコードして、.%2e/のようなシーケンスを使うことができます。これは多くの場合、Apache 2.4.40に対して機能します。しかし、もう一歩進んで、二重にエンコードすることもできます。.%2e/ のURLエンコードバージョンは、.%252e/です。これはさらに、Apacheによる正規化の試みを回避することができました。

しかし、それには問題があります。

もし誰かがブラウザで直接この脆弱性を利用しようと思っても、成功しないでしょう。これは、ブラウザがサーバーに送信されるURLを正規化しようとすることが原因です。つまり、二重にエンコードされた配列であっても削除されてしまうのです。また、単純にブラウザを使って実証することはできないということです。

cURLでは、--path-as-is フラグを使用することで、送信前にURLを正規化することを防ぐことができ、これを実証することができます。

Curlパスそのままのコードとリンク

予防と緩和

この問題を完全に防ぐためには、Apacheの最新のパッチを入手することが重要です。具体的には、最低でも 2.4.51 にアップグレードすることをお勧めします。しかし、最新の状態を保つためには、定期的にアップグレードするのがよいでしょう。

2.4.49を使用している場合、この問題を回避するには、Apacheの設定に以下の項目が含まれていることを確認してください。

ディレクトリコードタグに allowoverride none と require all の拒否ルールを設定する。

また、リモートコード実行を防ぐために、mod_cgi を利用していない場合は無効にしてください。

そのインパクトを体感してください。

何が起こったのか、自分で試してみたいと思いませんか? 


リソースにアクセス

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

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

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

シェアする
著者
Charlie Eriksen
2021年10月18日発行

シェアする

10月初旬、ApacheはPath Traversal and Remote Code Executionの脆弱性を修正したバージョン2.4.49と、2.4.49での修正が不完全だったことに対応した2.4.50をリリースしました。Apacheはインターネットの25%を占めていると言われていることから、これらのリスクを回避するために最新バージョンにアップデートすることの重要性について、ソーシャルメディアで話題になっているのを見たことがあるかもしれません。しかし、実際のところはどうなのでしょうか?どの程度のリスクがあるのでしょうか?

自分で試してみませんか? 

私たちは、実際の環境でリスクを実証するためのミッションを構築し、誰でも試すことができるように公開しました。このミッションでは、Path Traversal脆弱性がインフラやアプリケーションにどのような影響を与えるかを説明します。このミッションに参加するには、以下をクリックしてください。

Apache CVE-2021-41773 Mission を試用する旨のバナー。
パブリック・ミッションのページへ


パス・トラバーサルの脆弱性について 

この脆弱性は、2.4.49 リリースで導入された(URL 正規化関数の変更による)新しいパス正規化関数にあります。残念ながら、URL エンコードされたパスを正しく正規化することができませんでした。このため、以下の設定がない場合、パストラバーサル攻撃が可能となります。

ディレクトリファイルシステムへのアクセスを拒否または許可する


また、mod_cgi が有効になっている場合、これを利用してリモートコード実行の脆弱性が発生する可能性があります。しかし、何が問題だったのかを理解するために、まずURLエンコーディングについて掘り下げてみましょう。

URLエンコーディング

最も基本的なことですが、この脆弱性は、URLエンコードされたURLに対する配慮が欠けているために発生します。新たに導入したパスの正規化機能では、ドットがURLエンコードされている場合に完全に対応できていませんでした。 

パストラバーサル攻撃を行うためには、../ というシーケンスでトラバースする必要があることを覚えておいてください。しかし、正規化関数は賢いので、それを取り除くことができます。では、どうすればいいのでしょうか?.(ドット)を%2eまでURLエンコードして、.%2e/のようなシーケンスを使うことができます。これは多くの場合、Apache 2.4.40に対して機能します。しかし、もう一歩進んで、二重にエンコードすることもできます。.%2e/ のURLエンコードバージョンは、.%252e/です。これはさらに、Apacheによる正規化の試みを回避することができました。

しかし、それには問題があります。

もし誰かがブラウザで直接この脆弱性を利用しようと思っても、成功しないでしょう。これは、ブラウザがサーバーに送信されるURLを正規化しようとすることが原因です。つまり、二重にエンコードされた配列であっても削除されてしまうのです。また、単純にブラウザを使って実証することはできないということです。

cURLでは、--path-as-is フラグを使用することで、送信前にURLを正規化することを防ぐことができ、これを実証することができます。

Curlパスそのままのコードとリンク

予防と緩和

この問題を完全に防ぐためには、Apacheの最新のパッチを入手することが重要です。具体的には、最低でも 2.4.51 にアップグレードすることをお勧めします。しかし、最新の状態を保つためには、定期的にアップグレードするのがよいでしょう。

2.4.49を使用している場合、この問題を回避するには、Apacheの設定に以下の項目が含まれていることを確認してください。

ディレクトリコードタグに allowoverride none と require all の拒否ルールを設定する。

また、リモートコード実行を防ぐために、mod_cgi を利用していない場合は無効にしてください。

そのインパクトを体感してください。

何が起こったのか、自分で試してみたいと思いませんか? 


目次

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

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

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

始めるためのリソース

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

始めるためのリソース

その他の記事