SCW アイコン
ヒーロー背景(区切りなし)
ブログ

Les codeurs conquièrent la sécurité : série Share & Learn - Injection de code

Jaap Karan Singh
2019年5月16日 発行
最終更新日: 2026年3月8日

コードインジェクション攻撃は、多くのWebサイトやアプリケーションが遭遇する最も一般的な攻撃であり、また最も危険な攻撃でもあります。コードインジェクション攻撃は、その巧妙さと危険性の両面で様々な種類がありますが、ユーザーの入力を受け付けるサイトやアプリケーションであれば、ほぼすべてのものが脆弱になる可能性があります。実際、この種の攻撃は、ほとんどすべてのサイバーセキュリティ担当者がキャリアの中でいつかは対処しなければならないものであり、おそらく何度も対処することになるでしょう。

コードインジェクション攻撃は、アプリケーションやWebサイトがユーザーからの入力を受け付ける際に発生します。これは、検索機能を提供したり、ユーザーに識別情報の入力を求めたりするような単純なものです。この攻撃は、悪意のあるユーザーが、通常のテキスト入力ではなく、開いているフィールドにコードを入力することで起こります。攻撃者の目的は、サーバーに入力されたコードを有効なコードと勘違いさせ、攻撃者が望むあらゆる機能を実行させることです。

コード・インジェクション攻撃は非常に一般的なものですが、それを阻止するために利用可能な防御策もあります。このエピソードでは、以下のことを学びます。

  • 仕組み
  • なぜ彼らは危険なのか
  • それを阻止するためには、どのような防御策を講じるべきか。

攻撃者はどのようにコードインジェクションを利用するのか?

コード・インジェクション攻撃の具体的な内容は、使用するプログラミング言語によって変わりますが、ユーザーにデータを入力させるアプリやWebサイトであれば、どのようなものでも脆弱になり得ます。コード・インジェクション攻撃は、SQL、HTML、XML、CSSなど、あらゆる一般的なプログラミング言語で引き起こされています。

まず、攻撃者はアプリケーション内で脆弱なコードを見つけなければなりません。通常、ユーザーが自分で入力することが許されている箇所です。例えば、このコードは、PHPのeval()関数を受け取り、それをユーザーに渡して変更させますが、その際、戻り値の文字列については何の検証も行いません。

$myvar = "varname";
$x = $_GET[arg];
eval("˶‾᷅˵‾᷄˵‾᷅˵")

巧妙な攻撃者は、独自の文字列をeval関数に簡単に追加でき、選択次第ではシステムコマンドを実行することも可能です。

/index.php?arg=1; system(id)

コード・インジェクション攻撃では、システム・コマンドを送信することもありますが、それだけに限定されないことに注意してください。実際、コード・インジェクション攻撃では、ハッカーは言語自体の機能によってのみ制限されます。今回の例では、攻撃者は対象となるシステムに、PHPフレームワークで許可されているほぼすべての機能をプログラムすることができます。

コードインジェクション攻撃はなぜ危険なのか?

コードインジェクション攻撃は、攻撃者の技量によっては非常に危険なものになる可能性があります。攻撃者は、プログラミング言語で許可されていることなら何でもできるため、アプリのプログラマーと同じ立場になることができます。攻撃者は事実上、自分自身のアプリを作成し、それをターゲット環境で実行させることができます。

熟練度の低い攻撃者であっても危険です。自分でアプリケーションやコードを書くのではなく、対象となるシステムにあらかじめプログラムされたマルウェアを受け入れさせ、インストールさせることができるのです。これは、サイトの改ざんやランサムウェアの攻撃につながるだけでなく、サイトのユーザーを狙ったフィッシングキャンペーンの根拠にもなります。

多くの場合、コードインジェクション攻撃は、ユーザーリストやパスワードなどを盗み出したり、システムをさらに危険にさらすために貴重な偵察を行ったりするために使用されます。しかし、注意していただきたいのは、熟練したコーダーはコードインジェクション攻撃でほとんど何でもできるということです。だからこそ、コードインジェクション攻撃の可能性があるものをすべて発見し、環境から取り除くことが重要なのです。

誰も信じない。少なくとも、ユーザーではない

コード・インジェクション攻撃の脆弱性を排除するために、まず最初に見るべき場所は、ユーザーの入力を要求したり、許可したりする場所です。ユーザーが入力したものは、どのような場合でも信用できません。フィルタリングや検査を行わずにユーザーの入力を許可することは、基本的に攻撃者がシステムやネットワークへの侵入を自由に行えるようにしていることになります。

常に可能とは限りませんが、コード・インジェクション攻撃を阻止する最善の方法は、関数がユーザーの入力を直接実行したり解釈したりしないようにすることです。例えば、ユーザーは自由にクエリを入力できる代わりに、静的な選択肢を与えられ、アプリケーションはそれらの限られた選択肢のみを有効なものとして受け入れるようにプログラムされています。必ずしも適切な方法ではないかもしれませんが、可能な限りこの方法を用いることで、コード・インジェクションが始まる前に排除することができます。

ユーザーが自分で入力する必要がある分野では、そのデータを厳重に管理する必要があります。すべてのものが攻撃の対象になると考えるのは、良いスタート地点です。クライアント側とサーバー側の両方で、ユーザーのアクセスを読み取り専用にするなど、最小権限のポリシーを実施することで、ほとんどのコードの実行を防ぐことができます。

もうひとつの有効な防御策は、アプリケーション全体でフィルターを実装し、ユーザーが入力するものすべてをサニタイズすることです。開発者は何年も前からコード・インジェクション攻撃に気付いており、実績のあるフィルタのライブラリがあらゆるフレームワークや言語に対応しています。これらのフィルタを適用する際には、明らかなユーザ入力領域や、GetやPostコマンドのような一般的なパラメータに対してだけでなく、CookieやHTTPヘッダに対してもフィルタを適用するようにしてください。

コードインジェクションの修正の適用

不必要なユーザー入力領域を環境から削除し、最小権限主義を徹底し、最新のフィルタリング・サニタイズツールを使用して潜在的な攻撃を検査・検出することで、この危険な脆弱性の扉を閉めることができます。また、ユーザーの入力を決して信用しないという考え方を持つことも、今後の活動に役立ちます。このようにして、この危険なタイプの攻撃の一歩先を行くことができるのです。

さらに詳しく知りたい方は、コードインジェクションに関するOWASPの記事をご参照ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

今すぐコードインジェクションに真正面から向き合う。ゲーム化されたトレーニングプラットフォームでチャレンジしてみましょう。 [Start Here] (ここからスタート)

リソースを表示する
リソースを表示する

Les attaques par injection de code sont parmi les plus courantes, mais aussi les plus dangereuses, auxquelles de nombreux sites Web et applications seront confrontés. Ils sont très variés en termes de sophistication et de danger, mais presque tous les sites ou applications qui acceptent les entrées des utilisateurs peuvent être vulnérables.

さらに詳しく知りたいですか?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

共有する:
リンクトインのブランドソーシャルx ロゴ

コードインジェクション攻撃は、多くのWebサイトやアプリケーションが遭遇する最も一般的な攻撃であり、また最も危険な攻撃でもあります。コードインジェクション攻撃は、その巧妙さと危険性の両面で様々な種類がありますが、ユーザーの入力を受け付けるサイトやアプリケーションであれば、ほぼすべてのものが脆弱になる可能性があります。実際、この種の攻撃は、ほとんどすべてのサイバーセキュリティ担当者がキャリアの中でいつかは対処しなければならないものであり、おそらく何度も対処することになるでしょう。

コードインジェクション攻撃は、アプリケーションやWebサイトがユーザーからの入力を受け付ける際に発生します。これは、検索機能を提供したり、ユーザーに識別情報の入力を求めたりするような単純なものです。この攻撃は、悪意のあるユーザーが、通常のテキスト入力ではなく、開いているフィールドにコードを入力することで起こります。攻撃者の目的は、サーバーに入力されたコードを有効なコードと勘違いさせ、攻撃者が望むあらゆる機能を実行させることです。

コード・インジェクション攻撃は非常に一般的なものですが、それを阻止するために利用可能な防御策もあります。このエピソードでは、以下のことを学びます。

  • 仕組み
  • なぜ彼らは危険なのか
  • それを阻止するためには、どのような防御策を講じるべきか。

攻撃者はどのようにコードインジェクションを利用するのか?

コード・インジェクション攻撃の具体的な内容は、使用するプログラミング言語によって変わりますが、ユーザーにデータを入力させるアプリやWebサイトであれば、どのようなものでも脆弱になり得ます。コード・インジェクション攻撃は、SQL、HTML、XML、CSSなど、あらゆる一般的なプログラミング言語で引き起こされています。

まず、攻撃者はアプリケーション内で脆弱なコードを見つけなければなりません。通常、ユーザーが自分で入力することが許されている箇所です。例えば、このコードは、PHPのeval()関数を受け取り、それをユーザーに渡して変更させますが、その際、戻り値の文字列については何の検証も行いません。

$myvar = "varname";
$x = $_GET[arg];
eval("˶‾᷅˵‾᷄˵‾᷅˵")

巧妙な攻撃者は、独自の文字列をeval関数に簡単に追加でき、選択次第ではシステムコマンドを実行することも可能です。

/index.php?arg=1; system(id)

コード・インジェクション攻撃では、システム・コマンドを送信することもありますが、それだけに限定されないことに注意してください。実際、コード・インジェクション攻撃では、ハッカーは言語自体の機能によってのみ制限されます。今回の例では、攻撃者は対象となるシステムに、PHPフレームワークで許可されているほぼすべての機能をプログラムすることができます。

コードインジェクション攻撃はなぜ危険なのか?

コードインジェクション攻撃は、攻撃者の技量によっては非常に危険なものになる可能性があります。攻撃者は、プログラミング言語で許可されていることなら何でもできるため、アプリのプログラマーと同じ立場になることができます。攻撃者は事実上、自分自身のアプリを作成し、それをターゲット環境で実行させることができます。

熟練度の低い攻撃者であっても危険です。自分でアプリケーションやコードを書くのではなく、対象となるシステムにあらかじめプログラムされたマルウェアを受け入れさせ、インストールさせることができるのです。これは、サイトの改ざんやランサムウェアの攻撃につながるだけでなく、サイトのユーザーを狙ったフィッシングキャンペーンの根拠にもなります。

多くの場合、コードインジェクション攻撃は、ユーザーリストやパスワードなどを盗み出したり、システムをさらに危険にさらすために貴重な偵察を行ったりするために使用されます。しかし、注意していただきたいのは、熟練したコーダーはコードインジェクション攻撃でほとんど何でもできるということです。だからこそ、コードインジェクション攻撃の可能性があるものをすべて発見し、環境から取り除くことが重要なのです。

誰も信じない。少なくとも、ユーザーではない

コード・インジェクション攻撃の脆弱性を排除するために、まず最初に見るべき場所は、ユーザーの入力を要求したり、許可したりする場所です。ユーザーが入力したものは、どのような場合でも信用できません。フィルタリングや検査を行わずにユーザーの入力を許可することは、基本的に攻撃者がシステムやネットワークへの侵入を自由に行えるようにしていることになります。

常に可能とは限りませんが、コード・インジェクション攻撃を阻止する最善の方法は、関数がユーザーの入力を直接実行したり解釈したりしないようにすることです。例えば、ユーザーは自由にクエリを入力できる代わりに、静的な選択肢を与えられ、アプリケーションはそれらの限られた選択肢のみを有効なものとして受け入れるようにプログラムされています。必ずしも適切な方法ではないかもしれませんが、可能な限りこの方法を用いることで、コード・インジェクションが始まる前に排除することができます。

ユーザーが自分で入力する必要がある分野では、そのデータを厳重に管理する必要があります。すべてのものが攻撃の対象になると考えるのは、良いスタート地点です。クライアント側とサーバー側の両方で、ユーザーのアクセスを読み取り専用にするなど、最小権限のポリシーを実施することで、ほとんどのコードの実行を防ぐことができます。

もうひとつの有効な防御策は、アプリケーション全体でフィルターを実装し、ユーザーが入力するものすべてをサニタイズすることです。開発者は何年も前からコード・インジェクション攻撃に気付いており、実績のあるフィルタのライブラリがあらゆるフレームワークや言語に対応しています。これらのフィルタを適用する際には、明らかなユーザ入力領域や、GetやPostコマンドのような一般的なパラメータに対してだけでなく、CookieやHTTPヘッダに対してもフィルタを適用するようにしてください。

コードインジェクションの修正の適用

不必要なユーザー入力領域を環境から削除し、最小権限主義を徹底し、最新のフィルタリング・サニタイズツールを使用して潜在的な攻撃を検査・検出することで、この危険な脆弱性の扉を閉めることができます。また、ユーザーの入力を決して信用しないという考え方を持つことも、今後の活動に役立ちます。このようにして、この危険なタイプの攻撃の一歩先を行くことができるのです。

さらに詳しく知りたい方は、コードインジェクションに関するOWASPの記事をご参照ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

今すぐコードインジェクションに真正面から向き合う。ゲーム化されたトレーニングプラットフォームでチャレンジしてみましょう。 [Start Here] (ここからスタート)

リソースを表示する
リソースを表示する

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

当社製品および/またはセキュアコーディング関連の情報をお送りするにあたり、ご承諾を頂戴できれば幸いです。お客様の個人情報は常に細心の注意をもって取り扱い、マーケティング目的で他社に販売することは一切ございません。

提出する
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、Analyticsクッキーを有効にしてください。完了後は再度無効化しても構いません。

コードインジェクション攻撃は、多くのWebサイトやアプリケーションが遭遇する最も一般的な攻撃であり、また最も危険な攻撃でもあります。コードインジェクション攻撃は、その巧妙さと危険性の両面で様々な種類がありますが、ユーザーの入力を受け付けるサイトやアプリケーションであれば、ほぼすべてのものが脆弱になる可能性があります。実際、この種の攻撃は、ほとんどすべてのサイバーセキュリティ担当者がキャリアの中でいつかは対処しなければならないものであり、おそらく何度も対処することになるでしょう。

コードインジェクション攻撃は、アプリケーションやWebサイトがユーザーからの入力を受け付ける際に発生します。これは、検索機能を提供したり、ユーザーに識別情報の入力を求めたりするような単純なものです。この攻撃は、悪意のあるユーザーが、通常のテキスト入力ではなく、開いているフィールドにコードを入力することで起こります。攻撃者の目的は、サーバーに入力されたコードを有効なコードと勘違いさせ、攻撃者が望むあらゆる機能を実行させることです。

コード・インジェクション攻撃は非常に一般的なものですが、それを阻止するために利用可能な防御策もあります。このエピソードでは、以下のことを学びます。

  • 仕組み
  • なぜ彼らは危険なのか
  • それを阻止するためには、どのような防御策を講じるべきか。

攻撃者はどのようにコードインジェクションを利用するのか?

コード・インジェクション攻撃の具体的な内容は、使用するプログラミング言語によって変わりますが、ユーザーにデータを入力させるアプリやWebサイトであれば、どのようなものでも脆弱になり得ます。コード・インジェクション攻撃は、SQL、HTML、XML、CSSなど、あらゆる一般的なプログラミング言語で引き起こされています。

まず、攻撃者はアプリケーション内で脆弱なコードを見つけなければなりません。通常、ユーザーが自分で入力することが許されている箇所です。例えば、このコードは、PHPのeval()関数を受け取り、それをユーザーに渡して変更させますが、その際、戻り値の文字列については何の検証も行いません。

$myvar = "varname";
$x = $_GET[arg];
eval("˶‾᷅˵‾᷄˵‾᷅˵")

巧妙な攻撃者は、独自の文字列をeval関数に簡単に追加でき、選択次第ではシステムコマンドを実行することも可能です。

/index.php?arg=1; system(id)

コード・インジェクション攻撃では、システム・コマンドを送信することもありますが、それだけに限定されないことに注意してください。実際、コード・インジェクション攻撃では、ハッカーは言語自体の機能によってのみ制限されます。今回の例では、攻撃者は対象となるシステムに、PHPフレームワークで許可されているほぼすべての機能をプログラムすることができます。

コードインジェクション攻撃はなぜ危険なのか?

コードインジェクション攻撃は、攻撃者の技量によっては非常に危険なものになる可能性があります。攻撃者は、プログラミング言語で許可されていることなら何でもできるため、アプリのプログラマーと同じ立場になることができます。攻撃者は事実上、自分自身のアプリを作成し、それをターゲット環境で実行させることができます。

熟練度の低い攻撃者であっても危険です。自分でアプリケーションやコードを書くのではなく、対象となるシステムにあらかじめプログラムされたマルウェアを受け入れさせ、インストールさせることができるのです。これは、サイトの改ざんやランサムウェアの攻撃につながるだけでなく、サイトのユーザーを狙ったフィッシングキャンペーンの根拠にもなります。

多くの場合、コードインジェクション攻撃は、ユーザーリストやパスワードなどを盗み出したり、システムをさらに危険にさらすために貴重な偵察を行ったりするために使用されます。しかし、注意していただきたいのは、熟練したコーダーはコードインジェクション攻撃でほとんど何でもできるということです。だからこそ、コードインジェクション攻撃の可能性があるものをすべて発見し、環境から取り除くことが重要なのです。

誰も信じない。少なくとも、ユーザーではない

コード・インジェクション攻撃の脆弱性を排除するために、まず最初に見るべき場所は、ユーザーの入力を要求したり、許可したりする場所です。ユーザーが入力したものは、どのような場合でも信用できません。フィルタリングや検査を行わずにユーザーの入力を許可することは、基本的に攻撃者がシステムやネットワークへの侵入を自由に行えるようにしていることになります。

常に可能とは限りませんが、コード・インジェクション攻撃を阻止する最善の方法は、関数がユーザーの入力を直接実行したり解釈したりしないようにすることです。例えば、ユーザーは自由にクエリを入力できる代わりに、静的な選択肢を与えられ、アプリケーションはそれらの限られた選択肢のみを有効なものとして受け入れるようにプログラムされています。必ずしも適切な方法ではないかもしれませんが、可能な限りこの方法を用いることで、コード・インジェクションが始まる前に排除することができます。

ユーザーが自分で入力する必要がある分野では、そのデータを厳重に管理する必要があります。すべてのものが攻撃の対象になると考えるのは、良いスタート地点です。クライアント側とサーバー側の両方で、ユーザーのアクセスを読み取り専用にするなど、最小権限のポリシーを実施することで、ほとんどのコードの実行を防ぐことができます。

もうひとつの有効な防御策は、アプリケーション全体でフィルターを実装し、ユーザーが入力するものすべてをサニタイズすることです。開発者は何年も前からコード・インジェクション攻撃に気付いており、実績のあるフィルタのライブラリがあらゆるフレームワークや言語に対応しています。これらのフィルタを適用する際には、明らかなユーザ入力領域や、GetやPostコマンドのような一般的なパラメータに対してだけでなく、CookieやHTTPヘッダに対してもフィルタを適用するようにしてください。

コードインジェクションの修正の適用

不必要なユーザー入力領域を環境から削除し、最小権限主義を徹底し、最新のフィルタリング・サニタイズツールを使用して潜在的な攻撃を検査・検出することで、この危険な脆弱性の扉を閉めることができます。また、ユーザーの入力を決して信用しないという考え方を持つことも、今後の活動に役立ちます。このようにして、この危険なタイプの攻撃の一歩先を行くことができるのです。

さらに詳しく知りたい方は、コードインジェクションに関するOWASPの記事をご参照ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

今すぐコードインジェクションに真正面から向き合う。ゲーム化されたトレーニングプラットフォームでチャレンジしてみましょう。 [Start Here] (ここからスタート)

ウェビナーを表示する
始めましょう
もっと詳しく

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

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

レポートを表示するデモを予約する
PDFをダウンロード
リソースを表示する
共有する:
リンクトインのブランドソーシャルx ロゴ
さらに詳しく知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

共有する:
リンクトインのブランドソーシャルx ロゴ

コードインジェクション攻撃は、多くのWebサイトやアプリケーションが遭遇する最も一般的な攻撃であり、また最も危険な攻撃でもあります。コードインジェクション攻撃は、その巧妙さと危険性の両面で様々な種類がありますが、ユーザーの入力を受け付けるサイトやアプリケーションであれば、ほぼすべてのものが脆弱になる可能性があります。実際、この種の攻撃は、ほとんどすべてのサイバーセキュリティ担当者がキャリアの中でいつかは対処しなければならないものであり、おそらく何度も対処することになるでしょう。

コードインジェクション攻撃は、アプリケーションやWebサイトがユーザーからの入力を受け付ける際に発生します。これは、検索機能を提供したり、ユーザーに識別情報の入力を求めたりするような単純なものです。この攻撃は、悪意のあるユーザーが、通常のテキスト入力ではなく、開いているフィールドにコードを入力することで起こります。攻撃者の目的は、サーバーに入力されたコードを有効なコードと勘違いさせ、攻撃者が望むあらゆる機能を実行させることです。

コード・インジェクション攻撃は非常に一般的なものですが、それを阻止するために利用可能な防御策もあります。このエピソードでは、以下のことを学びます。

  • 仕組み
  • なぜ彼らは危険なのか
  • それを阻止するためには、どのような防御策を講じるべきか。

攻撃者はどのようにコードインジェクションを利用するのか?

コード・インジェクション攻撃の具体的な内容は、使用するプログラミング言語によって変わりますが、ユーザーにデータを入力させるアプリやWebサイトであれば、どのようなものでも脆弱になり得ます。コード・インジェクション攻撃は、SQL、HTML、XML、CSSなど、あらゆる一般的なプログラミング言語で引き起こされています。

まず、攻撃者はアプリケーション内で脆弱なコードを見つけなければなりません。通常、ユーザーが自分で入力することが許されている箇所です。例えば、このコードは、PHPのeval()関数を受け取り、それをユーザーに渡して変更させますが、その際、戻り値の文字列については何の検証も行いません。

$myvar = "varname";
$x = $_GET[arg];
eval("˶‾᷅˵‾᷄˵‾᷅˵")

巧妙な攻撃者は、独自の文字列をeval関数に簡単に追加でき、選択次第ではシステムコマンドを実行することも可能です。

/index.php?arg=1; system(id)

コード・インジェクション攻撃では、システム・コマンドを送信することもありますが、それだけに限定されないことに注意してください。実際、コード・インジェクション攻撃では、ハッカーは言語自体の機能によってのみ制限されます。今回の例では、攻撃者は対象となるシステムに、PHPフレームワークで許可されているほぼすべての機能をプログラムすることができます。

コードインジェクション攻撃はなぜ危険なのか?

コードインジェクション攻撃は、攻撃者の技量によっては非常に危険なものになる可能性があります。攻撃者は、プログラミング言語で許可されていることなら何でもできるため、アプリのプログラマーと同じ立場になることができます。攻撃者は事実上、自分自身のアプリを作成し、それをターゲット環境で実行させることができます。

熟練度の低い攻撃者であっても危険です。自分でアプリケーションやコードを書くのではなく、対象となるシステムにあらかじめプログラムされたマルウェアを受け入れさせ、インストールさせることができるのです。これは、サイトの改ざんやランサムウェアの攻撃につながるだけでなく、サイトのユーザーを狙ったフィッシングキャンペーンの根拠にもなります。

多くの場合、コードインジェクション攻撃は、ユーザーリストやパスワードなどを盗み出したり、システムをさらに危険にさらすために貴重な偵察を行ったりするために使用されます。しかし、注意していただきたいのは、熟練したコーダーはコードインジェクション攻撃でほとんど何でもできるということです。だからこそ、コードインジェクション攻撃の可能性があるものをすべて発見し、環境から取り除くことが重要なのです。

誰も信じない。少なくとも、ユーザーではない

コード・インジェクション攻撃の脆弱性を排除するために、まず最初に見るべき場所は、ユーザーの入力を要求したり、許可したりする場所です。ユーザーが入力したものは、どのような場合でも信用できません。フィルタリングや検査を行わずにユーザーの入力を許可することは、基本的に攻撃者がシステムやネットワークへの侵入を自由に行えるようにしていることになります。

常に可能とは限りませんが、コード・インジェクション攻撃を阻止する最善の方法は、関数がユーザーの入力を直接実行したり解釈したりしないようにすることです。例えば、ユーザーは自由にクエリを入力できる代わりに、静的な選択肢を与えられ、アプリケーションはそれらの限られた選択肢のみを有効なものとして受け入れるようにプログラムされています。必ずしも適切な方法ではないかもしれませんが、可能な限りこの方法を用いることで、コード・インジェクションが始まる前に排除することができます。

ユーザーが自分で入力する必要がある分野では、そのデータを厳重に管理する必要があります。すべてのものが攻撃の対象になると考えるのは、良いスタート地点です。クライアント側とサーバー側の両方で、ユーザーのアクセスを読み取り専用にするなど、最小権限のポリシーを実施することで、ほとんどのコードの実行を防ぐことができます。

もうひとつの有効な防御策は、アプリケーション全体でフィルターを実装し、ユーザーが入力するものすべてをサニタイズすることです。開発者は何年も前からコード・インジェクション攻撃に気付いており、実績のあるフィルタのライブラリがあらゆるフレームワークや言語に対応しています。これらのフィルタを適用する際には、明らかなユーザ入力領域や、GetやPostコマンドのような一般的なパラメータに対してだけでなく、CookieやHTTPヘッダに対してもフィルタを適用するようにしてください。

コードインジェクションの修正の適用

不必要なユーザー入力領域を環境から削除し、最小権限主義を徹底し、最新のフィルタリング・サニタイズツールを使用して潜在的な攻撃を検査・検出することで、この危険な脆弱性の扉を閉めることができます。また、ユーザーの入力を決して信用しないという考え方を持つことも、今後の活動に役立ちます。このようにして、この危険なタイプの攻撃の一歩先を行くことができるのです。

さらに詳しく知りたい方は、コードインジェクションに関するOWASPの記事をご参照ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

今すぐコードインジェクションに真正面から向き合う。ゲーム化されたトレーニングプラットフォームでチャレンジしてみましょう。 [Start Here] (ここからスタート)

目次

PDFをダウンロード
リソースを表示する
さらに詳しく知りたいですか?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません