ブログ

エンジニアのためのセキュリティ攻略:共有&学習シリーズ - 情報漏洩

May 2, 2019
Jaap Karan Singh

「不用意な発言は身を滅ぼす」という言葉は、第二次世界大戦中の米国で流行しました。英国では「不用意な会話が命取りになる」と言われていました。この格言の要点は、機密情報について不用意に話すとスパイに聞き漏らされ、深刻な結果を招く可能性があるというものです。

この原則は、Webアプリケーションを構築する際にも当てはまります。Webアプリが過剰な情報を公開してしまうと、攻撃者が侵入しやすくなるのです。

本記事では、情報漏洩とは何か、なぜ危険なのか、そしてどのように防ぐべきかについて解説します。

情報漏洩を理解する

情報漏洩とは、Webアプリケーションが本来公開すべきでない内部情報をさらしてしまうことを指します。また、ログファイルやユーザーインターフェースを通じて顧客の機密情報が漏洩することも含まれます。いずれの場合も、攻撃者は見つけた情報を利用して、システムやユーザーを攻撃します。

攻撃者の最初のステップは、アプリケーション内でエラーを発生させることであることがよくあります。不適切なエラーハンドリングやWebアプリケーションの設定は、エラーメッセージによる情報漏洩につながります。攻撃者がアプリケーション内でエラーを発生させるとどうなるでしょうか?スタックトレースなどの技術的な詳細を含むエラーメッセージが表示された場合、それは情報を出しすぎている証拠です。こうした詳細情報から、使用しているデータベースやアプリケーションサーバーのバージョンなどが特定されてしまいます。

機密情報の漏洩は、他の方法でも発生します。フォーム内に機密情報を保持する隠しフィールドはありませんか?攻撃者はページのソースを表示するだけで、その値を確認できてしまいます。

要するに、情報漏洩とは、本来ユーザーが必要な範囲でしか知るべきでない情報が、あまりにも簡単にアクセスできる状態になっていることを指します。

情報漏洩がなぜ危険なのかを理解する

アプリケーションによって公開された情報を、攻撃者はどのように利用するのでしょうか?その情報が機密性の高いものであれば、なりすましやユーザーの認証情報の窃取につながる恐れがあります。これは、経済的損失、プライバシー侵害、規制当局による罰金などを引き起こす可能性があります。

攻撃者がエラーメッセージを利用してアプリケーションに関する情報を収集した場合、その情報は将来の攻撃に利用される可能性があります。実際、OWASP Testing Guideには、情報収集に関するセクションが丸ごと設けられています。

OWASP Testing Guideでは、検索エンジンを使用して、意図しないWebサイトの情報が公開されていないか確認することを推奨しています。例えば、管理ページが検索エンジンに公開されていませんか?robots.txtファイルを使用して、特定のページをインデックスしないよう検索エンジンに指示しましょう。ただし、robots.txtファイル自体が情報を漏洩させる可能性もあります。機密性の高いURLがrobots.txtに記載されていることがあるからです。攻撃者はこのファイルをダウンロードし、サイトのディレクトリ構造を把握し始めます。

Googleには、Webサイトを詳細に調査できる高度な検索オプションがあります。例えば、「site: <ドメイン名>」という構文を使用して特定のサイトを検索できます。また、削除されたはずのページが以前のインデックス作業のキャッシュに残っている場合、それを閲覧することも可能です。BingやDuckDuckGoなど、異なる検索エンジンを使用すると異なる結果が得られることがあるため、各検索エンジンで自分のWebアプリケーションがどのように公開されているかを確認してください。

HTTPヘッダー、Webサイトのバナー、さらにはHTMLやJavaScriptコード内のコメントにも、攻撃者に見られるべきではない情報が含まれている可能性があります。HTTPヘッダーは、アプリケーションサーバーやバージョン番号を明らかにする場合があります。攻撃者はこの情報を利用して、特定のバージョンに対する脆弱性を探します。攻撃者が情報を発見できるあらゆる場所を把握し、適切に隠蔽するようにしてください。

情報漏洩を防ぐ

情報漏洩は、Webアプリケーションの設定ミスが原因であることがよくあります。多くのアプリケーションサーバーは、デフォルトでエラーメッセージにスタックトレースを表示します。本番環境のアプリケーションでは、この設定を変更し、トラブルシューティング用にエラーをログに記録しつつ、ユーザーには汎用的なエラーページを表示するようにしてください。詳細なエラーメッセージをユーザーのブラウザに返してはいけません。

アプリケーションに必要なファイルに機密情報が含まれている場合は、適切なアクセス制御を行い、アプリケーション自体のみが読み取れるようにしてください。サーバーのディレクトリリスティングを無効にし、これらのファイルをWebルートディレクトリの外に移動させます。これにより、攻撃者がディレクトリトラバーサル攻撃を使用してブラウザからファイルにアクセスするのを防ぐことができます。

ログの設定が不適切な場合、情報収集に悪用される恐れがあります。エラー発生時にパスワード、セッショントークン、個人情報(PII)などの機密情報をログに出力しないでください。攻撃者がログファイルにアクセスできた場合、そこから機密情報が盗み出される危険があります。ログには、アカウント識別子、詳細なエラーメッセージ、エラーが発生したメソッドや操作内容など、必要最小限の情報のみを記録するようにしてください。ログファイルは誰でも見られるものだという前提で運用すれば、機密情報を不用意に含めることはなくなるはずです。

Webアプリを危機にさらさないために

友人との何気ない会話から情報が漏洩し、第二次世界大戦で戦艦が沈没する事態を招く――そんなことが本当にあり得るのでしょうか。可能性は低いかもしれません。しかし、あえてリスクを冒す必要はあるでしょうか。「不用意な発言は船を沈める(Loose lips sink ships)」という格言には、まさにその教訓が込められています。

同様に、Webアプリケーションの内部構造を外部にさらす理由もありません。クレジットカード番号やパスワードをそのまま表示したり、ログファイルに個人情報を含めたりすることは避けるべきです。決して行わないでください。学習リソースで、情報漏洩についてさらに詳しく学びましょう。

アプリケーションの内部情報は、しかるべき場所に留めておきましょう。Webアプリを危機にさらしてはいけません。

今すぐ情報漏洩を食い止める準備はできていますか?さあ、挑戦の時です: [ここから開始]

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

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.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

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

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。