Shikata Ga Nai

Private? There is no such things.

情報漏洩(Information Disclosure)とは?―意図しない情報開示が攻撃の突破口になる理由

Hello there, ('ω')ノ

🔍 情報漏洩とは?

情報漏洩(または情報開示、情報リーク)とは、Webサイトが本来公開すべきでない機密情報をユーザーに意図せず見せてしまう状態のことを指します。

この情報には、以下のようなものが含まれます:

種類
他ユーザーのデータ ユーザー名、メールアドレス、クレジットカード情報など
業務・商用機密 製品仕様、内部文書、価格設定情報など
技術情報 サーバー構成、バージョン情報、エラーログ、ソースコードなど

⚠️ 技術情報の漏洩も危険

単なるサーバーのバージョンやディレクトリ構造といった技術的な情報でも、それが他の脆弱性を突く手がかりになる可能性があります。

🧩 攻撃者の視点では…

  • 情報漏洩 = 脆弱性を組み合わせるための「パズルのピース」
  • 例えば:スタックトレース → 使用中のフレームワーク → 既知の脆弱性検索 → 攻撃成立

🧪 典型的な情報漏洩の例

漏洩手段 内容
robots.txt や directory listing 隠されたパスやファイル構成が見える
バックアップファイルへのアクセス index.php.bak, .git/, .DS_Storeなど
エラーメッセージ SQL文の断片やテーブル名、スタックトレース
クレジットカードやAPIキーの露出 本番コードにベタ書きされたキーや認証情報
レスポンスの挙動差 存在するユーザーとしないユーザーで違うメッセージが出る(ブルートフォースのヒントになる)

👨‍💻 攻撃者の手法

  1. Webサイトに対して予期しない方法でリクエストを送信
  2. レスポンスを詳細に観察(エラー、コメント、挙動差など)。
  3. 手がかりになる情報を見つけ、他の攻撃につなげる

🛡 防止策(開発者向け)

対策 内容
本番環境では詳細なエラー表示を無効に 開発中は有効でも、本番では suppress_errors にする
開発・一時ファイルのアップロード禁止 .bak, .git, .env などをサーバーから除外
ソースコードやキーのベタ書きを禁止 環境変数やシークレット管理機構を利用
アクセス制御の徹底 ユーザーごとに表示する情報を制限する
レスポンスの統一 エラー内容や存在有無を推測されないようにする(例:ログイン失敗時のメッセージを統一)

✅ まとめ

  • 情報漏洩は「攻撃にならないから軽微」ではなく、他の重大な攻撃の導入口になる。
  • ペネトレーションテストでは、エラーメッセージ、コメント、ディレクトリ、バックアップファイルなどの調査が基本中の基本。
  • 攻撃者は「見える情報をヒントにして見えないものを崩す」。

🔐 情報漏洩の発見力は、ペネトレーションテスト全体の精度に直結します。細かい挙動の違い、ログ、隠されたファイルなど、すべての情報をチャンスに変えられるかが、プロと素人の差です。

Best regards, (^^ゞ