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

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

Jaap Karan Singh
2019年02月07日 掲載
最終更新日: 2026年3月8日

OS コマンドインジェクション攻撃は、アプリケーションがユーザーにシェルへの入力を許可しているにもかかわらず、入力文字列が有効であるかどうかを確認するアクションを取らない場合に発生します。これにより、攻撃者は、アプリケーションをホストしている OS に直接コマンドを投下することができ、その際、侵害されたアプリケーションに設定されているあらゆる許可レベルを使用することができます。  

OSコマンドインジェクション攻撃は、エントリーレベルのハッカーやスキルの低いハッカーでも行うことができるため、セキュリティチームが経験する最も一般的な弱点の1つとなっています。ありがたいことに、これらの攻撃を防ぐための非常に効果的な方法がいくつかあります。このエピソードでは、次のことを学びます。

       仕組み

       なぜ彼らは危険なのか

       それを阻止するためには、どのような防御策を講じるべきか。

OSコマンドインジェクションはどのように利用されるのか?

OSコマンドインジェクション攻撃を行うために、攻撃者が最初にしなければならないことは、アプリケーション内のユーザー入力を見つけることです。ユーザーが入力するフォームは、良い出発点となる可能性があります。最も巧妙な攻撃者は、ほとんどすべてのアプリケーションやWebサイトで使用されている、クッキーやHTTPヘッダーなども攻撃の起点として使用します。

次に必要なのは、アプリケーションをホストしているOSを把握することです。選択肢が限られているので、この段階では試行錯誤が有効です。ほとんどのアプリケーションサーバは、Windowsベース(Windowsのフレーバーは通常問題ではありません)、何らかのLinuxボックス、またはUnixである可能性があります。

この時、ハッカーは入力を修正して、一見無害に見える入力にOSのコマンドを注入します。これにより、ホスティングOSを騙し、アプリケーションが持つあらゆる許可レベルで意図しないコマンドを実行させることができます。

例えば、次のコマンドは、アプリケーション内の有効なユーザーがファイルの内容を見るために使用することができます(この場合は、月例理事会のメモ)。

exec("cat " + filename")

この例では、次のコマンドを実行して、ユーザーに会議のメモを返します。

$ ./cat MeetingNotes.txt
7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

これは、Linuxでディレクトリの内容を一覧表示するときに使われるような、入力の最後に攻撃者が追加のコマンドを追加したときに起こる現象です。このケースでは、会議のメモを表示するという元のコマンドはそのまま実行されます。しかし、悪意のあるユーザーには、ディレクトリ内の他のすべての内容が表示され、OSのコマンドインジェクション攻撃のフォローアップに使用できる他のコマンドも表示されます。彼らは入力します。

$ ./cat MeetingNotes.txt && ls

そして、代わりにこれを手に入れる。

7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

このケースでは、ハッカーはディレクトリの内容を見せられただけでなく、ホストOS上で実行できることがわかっている他のコマンドのメニューを渡されました。

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

ユーザーが対象となるアプリケーションの目的を回避して、オペレーティングシステムのコマンドを実行するために使用できるようにすることは、非常に危険です。攻撃者は、例えば、機密データを盗んだり、サーバーのドライブ全体をフォーマットするなど、壊滅的な行為を簡単に行うことができます。攻撃者が利用できる選択肢は、オペレーティングシステムで許可されているコマンドと、それを使用する際の創造性によってのみ制限されます。

OSのコマンドは、アプリケーションと同じ権限レベルで実行されます。管理者権限で実行されるアプリケーションは、それを侵害したハッカーがOSのあらゆるコマンドを実行できることを意味します。

OS コマンドインジェクションの攻撃パターンはよく知られており、文書化されています。脆弱なアプリケーションは、プロのハッカーと同様に、スクリプトキディの影響を受けやすくなります。ほとんどスキルのない攻撃者は、OS のコマンドをアプリケーションにカット&ペーストして、何が起こるかを試すことができます。

OSコマンドインジェクションに対するセキュリティOKの取得

OSのコマンドインジェクションを阻止するための優れた技術がいくつかあります。まず、アプリケーションを、その機能を果たすために必要な最小限の権限で実行することです。これによって攻撃を防ぐことはできませんが、万が一侵害が発生した場合には被害を最小限に抑えることができます。

ほとんどのプログラミング言語やフレームワークは、ディレクトリの内容の一覧表示や、ハードディスク上のファイルの作成や読み取りなど、OSの一般的なメソッドのAPIコールを提供しています。OSコマンドインジェクションを環境から排除する完璧な方法は、すべてのアプリケーションがOSコマンドを直接使用する代わりに、これらのAPIコールを使用することです。

これが不可能な場合は、ユーザーの入力を検証してからOSのコマンドで使用する。ホワイトリストを使用すると、信頼できる小さな値のセットのみを使用することができます。技術的にはブラックリストを使っても可能ですが、許可されるコマンドの数が圧倒的に少ないので、ホワイトリストの方が簡単な場合がほとんどです。ホワイトリストには、有効なPOSTとGETのパラメータを含めることを忘れないでください。また、クッキーのような見落とされがちなユーザー入力ベクターも含めてください。

最後に、利用可能なプログラミングAPIがなく、ホワイトリストを使用できない場合は、サニタイズライブラリを使用して、ユーザーの入力に含まれる特殊文字をOSのコマンドで使用する前にエスケープします。

OSコマンドインジェクション攻撃の詳細情報

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

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

Les attaques par injection de commandes du système d'exploitation peuvent être effectuées par des pirates informatiques débutants et moins expérimentés, ce qui en fait l'une des faiblesses les plus courantes rencontrées par les équipes de sécurité. Heureusement, il existe de nombreux moyens très efficaces de les empêcher de réussir.

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

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年02月07日掲載

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

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

OS コマンドインジェクション攻撃は、アプリケーションがユーザーにシェルへの入力を許可しているにもかかわらず、入力文字列が有効であるかどうかを確認するアクションを取らない場合に発生します。これにより、攻撃者は、アプリケーションをホストしている OS に直接コマンドを投下することができ、その際、侵害されたアプリケーションに設定されているあらゆる許可レベルを使用することができます。  

OSコマンドインジェクション攻撃は、エントリーレベルのハッカーやスキルの低いハッカーでも行うことができるため、セキュリティチームが経験する最も一般的な弱点の1つとなっています。ありがたいことに、これらの攻撃を防ぐための非常に効果的な方法がいくつかあります。このエピソードでは、次のことを学びます。

       仕組み

       なぜ彼らは危険なのか

       それを阻止するためには、どのような防御策を講じるべきか。

OSコマンドインジェクションはどのように利用されるのか?

OSコマンドインジェクション攻撃を行うために、攻撃者が最初にしなければならないことは、アプリケーション内のユーザー入力を見つけることです。ユーザーが入力するフォームは、良い出発点となる可能性があります。最も巧妙な攻撃者は、ほとんどすべてのアプリケーションやWebサイトで使用されている、クッキーやHTTPヘッダーなども攻撃の起点として使用します。

次に必要なのは、アプリケーションをホストしているOSを把握することです。選択肢が限られているので、この段階では試行錯誤が有効です。ほとんどのアプリケーションサーバは、Windowsベース(Windowsのフレーバーは通常問題ではありません)、何らかのLinuxボックス、またはUnixである可能性があります。

この時、ハッカーは入力を修正して、一見無害に見える入力にOSのコマンドを注入します。これにより、ホスティングOSを騙し、アプリケーションが持つあらゆる許可レベルで意図しないコマンドを実行させることができます。

例えば、次のコマンドは、アプリケーション内の有効なユーザーがファイルの内容を見るために使用することができます(この場合は、月例理事会のメモ)。

exec("cat " + filename")

この例では、次のコマンドを実行して、ユーザーに会議のメモを返します。

$ ./cat MeetingNotes.txt
7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

これは、Linuxでディレクトリの内容を一覧表示するときに使われるような、入力の最後に攻撃者が追加のコマンドを追加したときに起こる現象です。このケースでは、会議のメモを表示するという元のコマンドはそのまま実行されます。しかし、悪意のあるユーザーには、ディレクトリ内の他のすべての内容が表示され、OSのコマンドインジェクション攻撃のフォローアップに使用できる他のコマンドも表示されます。彼らは入力します。

$ ./cat MeetingNotes.txt && ls

そして、代わりにこれを手に入れる。

7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

このケースでは、ハッカーはディレクトリの内容を見せられただけでなく、ホストOS上で実行できることがわかっている他のコマンドのメニューを渡されました。

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

ユーザーが対象となるアプリケーションの目的を回避して、オペレーティングシステムのコマンドを実行するために使用できるようにすることは、非常に危険です。攻撃者は、例えば、機密データを盗んだり、サーバーのドライブ全体をフォーマットするなど、壊滅的な行為を簡単に行うことができます。攻撃者が利用できる選択肢は、オペレーティングシステムで許可されているコマンドと、それを使用する際の創造性によってのみ制限されます。

OSのコマンドは、アプリケーションと同じ権限レベルで実行されます。管理者権限で実行されるアプリケーションは、それを侵害したハッカーがOSのあらゆるコマンドを実行できることを意味します。

OS コマンドインジェクションの攻撃パターンはよく知られており、文書化されています。脆弱なアプリケーションは、プロのハッカーと同様に、スクリプトキディの影響を受けやすくなります。ほとんどスキルのない攻撃者は、OS のコマンドをアプリケーションにカット&ペーストして、何が起こるかを試すことができます。

OSコマンドインジェクションに対するセキュリティOKの取得

OSのコマンドインジェクションを阻止するための優れた技術がいくつかあります。まず、アプリケーションを、その機能を果たすために必要な最小限の権限で実行することです。これによって攻撃を防ぐことはできませんが、万が一侵害が発生した場合には被害を最小限に抑えることができます。

ほとんどのプログラミング言語やフレームワークは、ディレクトリの内容の一覧表示や、ハードディスク上のファイルの作成や読み取りなど、OSの一般的なメソッドのAPIコールを提供しています。OSコマンドインジェクションを環境から排除する完璧な方法は、すべてのアプリケーションがOSコマンドを直接使用する代わりに、これらのAPIコールを使用することです。

これが不可能な場合は、ユーザーの入力を検証してからOSのコマンドで使用する。ホワイトリストを使用すると、信頼できる小さな値のセットのみを使用することができます。技術的にはブラックリストを使っても可能ですが、許可されるコマンドの数が圧倒的に少ないので、ホワイトリストの方が簡単な場合がほとんどです。ホワイトリストには、有効なPOSTとGETのパラメータを含めることを忘れないでください。また、クッキーのような見落とされがちなユーザー入力ベクターも含めてください。

最後に、利用可能なプログラミングAPIがなく、ホワイトリストを使用できない場合は、サニタイズライブラリを使用して、ユーザーの入力に含まれる特殊文字をOSのコマンドで使用する前にエスケープします。

OSコマンドインジェクション攻撃の詳細情報

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

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

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

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

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

OS コマンドインジェクション攻撃は、アプリケーションがユーザーにシェルへの入力を許可しているにもかかわらず、入力文字列が有効であるかどうかを確認するアクションを取らない場合に発生します。これにより、攻撃者は、アプリケーションをホストしている OS に直接コマンドを投下することができ、その際、侵害されたアプリケーションに設定されているあらゆる許可レベルを使用することができます。  

OSコマンドインジェクション攻撃は、エントリーレベルのハッカーやスキルの低いハッカーでも行うことができるため、セキュリティチームが経験する最も一般的な弱点の1つとなっています。ありがたいことに、これらの攻撃を防ぐための非常に効果的な方法がいくつかあります。このエピソードでは、次のことを学びます。

       仕組み

       なぜ彼らは危険なのか

       それを阻止するためには、どのような防御策を講じるべきか。

OSコマンドインジェクションはどのように利用されるのか?

OSコマンドインジェクション攻撃を行うために、攻撃者が最初にしなければならないことは、アプリケーション内のユーザー入力を見つけることです。ユーザーが入力するフォームは、良い出発点となる可能性があります。最も巧妙な攻撃者は、ほとんどすべてのアプリケーションやWebサイトで使用されている、クッキーやHTTPヘッダーなども攻撃の起点として使用します。

次に必要なのは、アプリケーションをホストしているOSを把握することです。選択肢が限られているので、この段階では試行錯誤が有効です。ほとんどのアプリケーションサーバは、Windowsベース(Windowsのフレーバーは通常問題ではありません)、何らかのLinuxボックス、またはUnixである可能性があります。

この時、ハッカーは入力を修正して、一見無害に見える入力にOSのコマンドを注入します。これにより、ホスティングOSを騙し、アプリケーションが持つあらゆる許可レベルで意図しないコマンドを実行させることができます。

例えば、次のコマンドは、アプリケーション内の有効なユーザーがファイルの内容を見るために使用することができます(この場合は、月例理事会のメモ)。

exec("cat " + filename")

この例では、次のコマンドを実行して、ユーザーに会議のメモを返します。

$ ./cat MeetingNotes.txt
7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

これは、Linuxでディレクトリの内容を一覧表示するときに使われるような、入力の最後に攻撃者が追加のコマンドを追加したときに起こる現象です。このケースでは、会議のメモを表示するという元のコマンドはそのまま実行されます。しかし、悪意のあるユーザーには、ディレクトリ内の他のすべての内容が表示され、OSのコマンドインジェクション攻撃のフォローアップに使用できる他のコマンドも表示されます。彼らは入力します。

$ ./cat MeetingNotes.txt && ls

そして、代わりにこれを手に入れる。

7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

このケースでは、ハッカーはディレクトリの内容を見せられただけでなく、ホストOS上で実行できることがわかっている他のコマンドのメニューを渡されました。

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

ユーザーが対象となるアプリケーションの目的を回避して、オペレーティングシステムのコマンドを実行するために使用できるようにすることは、非常に危険です。攻撃者は、例えば、機密データを盗んだり、サーバーのドライブ全体をフォーマットするなど、壊滅的な行為を簡単に行うことができます。攻撃者が利用できる選択肢は、オペレーティングシステムで許可されているコマンドと、それを使用する際の創造性によってのみ制限されます。

OSのコマンドは、アプリケーションと同じ権限レベルで実行されます。管理者権限で実行されるアプリケーションは、それを侵害したハッカーがOSのあらゆるコマンドを実行できることを意味します。

OS コマンドインジェクションの攻撃パターンはよく知られており、文書化されています。脆弱なアプリケーションは、プロのハッカーと同様に、スクリプトキディの影響を受けやすくなります。ほとんどスキルのない攻撃者は、OS のコマンドをアプリケーションにカット&ペーストして、何が起こるかを試すことができます。

OSコマンドインジェクションに対するセキュリティOKの取得

OSのコマンドインジェクションを阻止するための優れた技術がいくつかあります。まず、アプリケーションを、その機能を果たすために必要な最小限の権限で実行することです。これによって攻撃を防ぐことはできませんが、万が一侵害が発生した場合には被害を最小限に抑えることができます。

ほとんどのプログラミング言語やフレームワークは、ディレクトリの内容の一覧表示や、ハードディスク上のファイルの作成や読み取りなど、OSの一般的なメソッドのAPIコールを提供しています。OSコマンドインジェクションを環境から排除する完璧な方法は、すべてのアプリケーションがOSコマンドを直接使用する代わりに、これらのAPIコールを使用することです。

これが不可能な場合は、ユーザーの入力を検証してからOSのコマンドで使用する。ホワイトリストを使用すると、信頼できる小さな値のセットのみを使用することができます。技術的にはブラックリストを使っても可能ですが、許可されるコマンドの数が圧倒的に少ないので、ホワイトリストの方が簡単な場合がほとんどです。ホワイトリストには、有効なPOSTとGETのパラメータを含めることを忘れないでください。また、クッキーのような見落とされがちなユーザー入力ベクターも含めてください。

最後に、利用可能なプログラミングAPIがなく、ホワイトリストを使用できない場合は、サニタイズライブラリを使用して、ユーザーの入力に含まれる特殊文字をOSのコマンドで使用する前にエスケープします。

OSコマンドインジェクション攻撃の詳細情報

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

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

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

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

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

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
Jaap Karan Singh
2019年02月07日掲載

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

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

OS コマンドインジェクション攻撃は、アプリケーションがユーザーにシェルへの入力を許可しているにもかかわらず、入力文字列が有効であるかどうかを確認するアクションを取らない場合に発生します。これにより、攻撃者は、アプリケーションをホストしている OS に直接コマンドを投下することができ、その際、侵害されたアプリケーションに設定されているあらゆる許可レベルを使用することができます。  

OSコマンドインジェクション攻撃は、エントリーレベルのハッカーやスキルの低いハッカーでも行うことができるため、セキュリティチームが経験する最も一般的な弱点の1つとなっています。ありがたいことに、これらの攻撃を防ぐための非常に効果的な方法がいくつかあります。このエピソードでは、次のことを学びます。

       仕組み

       なぜ彼らは危険なのか

       それを阻止するためには、どのような防御策を講じるべきか。

OSコマンドインジェクションはどのように利用されるのか?

OSコマンドインジェクション攻撃を行うために、攻撃者が最初にしなければならないことは、アプリケーション内のユーザー入力を見つけることです。ユーザーが入力するフォームは、良い出発点となる可能性があります。最も巧妙な攻撃者は、ほとんどすべてのアプリケーションやWebサイトで使用されている、クッキーやHTTPヘッダーなども攻撃の起点として使用します。

次に必要なのは、アプリケーションをホストしているOSを把握することです。選択肢が限られているので、この段階では試行錯誤が有効です。ほとんどのアプリケーションサーバは、Windowsベース(Windowsのフレーバーは通常問題ではありません)、何らかのLinuxボックス、またはUnixである可能性があります。

この時、ハッカーは入力を修正して、一見無害に見える入力にOSのコマンドを注入します。これにより、ホスティングOSを騙し、アプリケーションが持つあらゆる許可レベルで意図しないコマンドを実行させることができます。

例えば、次のコマンドは、アプリケーション内の有効なユーザーがファイルの内容を見るために使用することができます(この場合は、月例理事会のメモ)。

exec("cat " + filename")

この例では、次のコマンドを実行して、ユーザーに会議のメモを返します。

$ ./cat MeetingNotes.txt
7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

これは、Linuxでディレクトリの内容を一覧表示するときに使われるような、入力の最後に攻撃者が追加のコマンドを追加したときに起こる現象です。このケースでは、会議のメモを表示するという元のコマンドはそのまま実行されます。しかし、悪意のあるユーザーには、ディレクトリ内の他のすべての内容が表示され、OSのコマンドインジェクション攻撃のフォローアップに使用できる他のコマンドも表示されます。彼らは入力します。

$ ./cat MeetingNotes.txt && ls

そして、代わりにこれを手に入れる。

7月のミーティングには、3人の実行委員が出席しました。新予算プロジェクトについて議論されましたが、アクションや投票は行われませんでした。

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

このケースでは、ハッカーはディレクトリの内容を見せられただけでなく、ホストOS上で実行できることがわかっている他のコマンドのメニューを渡されました。

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

ユーザーが対象となるアプリケーションの目的を回避して、オペレーティングシステムのコマンドを実行するために使用できるようにすることは、非常に危険です。攻撃者は、例えば、機密データを盗んだり、サーバーのドライブ全体をフォーマットするなど、壊滅的な行為を簡単に行うことができます。攻撃者が利用できる選択肢は、オペレーティングシステムで許可されているコマンドと、それを使用する際の創造性によってのみ制限されます。

OSのコマンドは、アプリケーションと同じ権限レベルで実行されます。管理者権限で実行されるアプリケーションは、それを侵害したハッカーがOSのあらゆるコマンドを実行できることを意味します。

OS コマンドインジェクションの攻撃パターンはよく知られており、文書化されています。脆弱なアプリケーションは、プロのハッカーと同様に、スクリプトキディの影響を受けやすくなります。ほとんどスキルのない攻撃者は、OS のコマンドをアプリケーションにカット&ペーストして、何が起こるかを試すことができます。

OSコマンドインジェクションに対するセキュリティOKの取得

OSのコマンドインジェクションを阻止するための優れた技術がいくつかあります。まず、アプリケーションを、その機能を果たすために必要な最小限の権限で実行することです。これによって攻撃を防ぐことはできませんが、万が一侵害が発生した場合には被害を最小限に抑えることができます。

ほとんどのプログラミング言語やフレームワークは、ディレクトリの内容の一覧表示や、ハードディスク上のファイルの作成や読み取りなど、OSの一般的なメソッドのAPIコールを提供しています。OSコマンドインジェクションを環境から排除する完璧な方法は、すべてのアプリケーションがOSコマンドを直接使用する代わりに、これらのAPIコールを使用することです。

これが不可能な場合は、ユーザーの入力を検証してからOSのコマンドで使用する。ホワイトリストを使用すると、信頼できる小さな値のセットのみを使用することができます。技術的にはブラックリストを使っても可能ですが、許可されるコマンドの数が圧倒的に少ないので、ホワイトリストの方が簡単な場合がほとんどです。ホワイトリストには、有効なPOSTとGETのパラメータを含めることを忘れないでください。また、クッキーのような見落とされがちなユーザー入力ベクターも含めてください。

最後に、利用可能なプログラミングAPIがなく、ホワイトリストを使用できない場合は、サニタイズライブラリを使用して、ユーザーの入力に含まれる特殊文字をOSのコマンドで使用する前にエスケープします。

OSコマンドインジェクション攻撃の詳細情報

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

目次

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 ロゴ
リソースセンター

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

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

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

投稿はありません