Coders Conquer Security: Share & Learnシリーズ - リモートファイルインクルージョン

本ブログシリーズを読まれている方は、リモートファイルインクルージョンの脆弱性と、前回解説したローカルファイルインクルージョンやパストラバーサルの脆弱性との間に多くの共通点があることにお気づきかもしれません。根本的な原因や推奨される修正方法も同様です。
リモートファイルインクルージョンの脆弱性は、多くの面でローカルファイルインクルージョンよりもはるかに危険であり、悪用も容易です。そのため、早急に発見し、修正する必要があります。さらに言えば、そもそも脆弱性が発生しないようにWebアプリケーションを設計することが最善です。
本エピソードでは、以下の内容を学びます。
- ハッカーによるリモートファイルインクルージョンの悪用手法
- リモートファイルインクルージョンを許可することが危険な理由
- この問題を解決するための技術
攻撃者はどのようにリモートファイルインクルージョンを悪用するのか?
リモートファイルインクルージョンの脆弱性は、ほとんどのプログラミングフレームワークに存在する「動的ファイルインクルード」コマンドやメカニズムを悪用します。この機能は、開発者が別のサーバーにあるファイルを使用してアプリケーションサーバー上で処理を実行できるようにすることを目的としています。当然ながら、悪意のある者に利用されれば非常に危険です。
攻撃者は、HTTPヘッダーやインタラクティブなフォームの入力エリアなど、制御されていないユーザー入力を許可しているWebサイトやアプリケーションを見つけることで、この機能を悪用します。彼らはそれを足がかりにして、ファイルインクルードコマンドを生成します。
例えば、サイトがpage = request.getParameter("page'); include page; のようにGET関数を使用してページを読み込む場合、攻撃者はpageコマンドを使用してクエリを送信できます。その際、攻撃者が制御するサイトのURLと実行したいファイルへのパスを指定します。クエリがサーバーに渡されると、リモートファイルがホスト上で実行されます。この動作は、信頼されたアプリの一部として扱われるため許可されてしまいます。
なぜリモートファイルインクルージョンの脆弱性は危険なのか?
リモートファイルインクルージョンがもたらす危険性は極めて高いです。攻撃者が実行するファイルがホスト上に存在し、かつ試行錯誤して見つけ出す必要があるローカルファイルインクルージョンとは異なり、リモートファイルインクルージョンにはそのような制限がありません。攻撃者は、自身のマシンや制御下のサイトに存在するファイルを悪用するため、その場所を把握しています。ファイルは攻撃者が自由に選択でき、攻撃前にターゲットマシン上に存在している必要もありません。リモートホストを攻撃するために特別に作成されたスクリプトである可能性さえあります。
要するに、攻撃者がリモートファイルインクルージョンの脆弱性を発見して悪用できれば、アプリケーションやサイト全体を完全に掌握することを止める術はありません。そこに保存されているデータも、侵入から守ることはできないでしょう。
リモートファイルインクルージョンの脆弱性を排除する
ユーザー入力を直接ファイルインクルードコマンドに渡して実行させることは絶対に避けてください。代わりに、コマンドの間接参照マップを使用し、そこにあるコマンドのみを実行するようにします。間接参照マップは、信頼できないユーザー入力をサーバー上のハードコードされた信頼できる値のセットにマッピングします。ユーザーがデータを入力できる領域はすべてホワイトリスト化し、HTTPヘッダー、フォームパラメータ、さらにはCookieも含めることを忘れないでください。そうすることで、攻撃者がファイルインクルードコマンドを作成するための隙を塞ぐことができます。
さらに、ユーザー生成コンテンツの適切なサニタイズと検証を行い、コマンド実行に参照マップを採用することは、リモートファイルインクルージョンの脆弱性だけでなく、このバグの危険な親戚であるローカルファイルインクルージョンやパストラバーサルといった他の多くの脆弱性も一掃します。
リモートファイルインクルージョンに関する詳細情報
詳細については、OWASPのリファレンスガイド(リモートファイルインクルージョンの悪用について)をご覧ください。また、サイバーセキュリティチームを究極のサイバー戦士へと育成するSecure Code Warriorプラットフォームの無料デモで、学んだ防御知識を試すこともできます。この脆弱性やその他の脅威を克服する方法については、Secure Code Warriorブログをご覧ください。
AI主導の開発をリリース前にガバナンスする
AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。
他のブログ記事を見る
セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
AIを活用した開発をリリース前にセキュアに
開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。



.avif)