Hello there, ('ω')ノ
🔍 情報漏洩脆弱性とは?
情報漏洩脆弱性とは、本来ユーザーや攻撃者に見せてはいけない情報が、意図せず表示・出力・取得可能な状態になっていることを指します。
🔓 漏洩しやすい情報の例:
種類 | 具体例 |
---|---|
システム情報 | サーバー名、ソフトウェアのバージョン、フレームワーク名 |
認証情報 | セッションID、APIキー、パスワードリセットトークン |
デバッグ情報 | スタックトレース、内部エラー、デバッグログ |
機密データ | メールアドレス、パスワード、個人情報、ソースコード断片 |
🎯 なぜ重要なのか?
情報漏洩は一見、軽微なバグに見えることがありますが、他の重大な攻撃のきっかけ(起点)になりうる点で非常に危険です。
- ディレクトリ構成が分かる → LFI/Path Traversal
- エラーメッセージにSQL文が表示 → SQLインジェクション発見
- APIキーが見える → アカウント乗っ取りや認証バイパス
- ソースコードが漏れる → 認証ロジックの解析やバグ発見
🧪 どうやって見つける?
✅ 1. エラーメッセージのチェック
500 Internal Server Error Traceback (most recent call last): File "app.py", line 42, in get_user return users[username] KeyError: 'admin'
→ 内部ファイル名やソースコードが露出
✅ 2. レスポンスに含まれる意図しない情報
- コメント内にAPIキーが書かれている
- 開発者用のデバッグツールが有効
- JSONレスポンスに
isAdmin: true
が含まれている
✅ 3. 公開ディレクトリやバックアップファイル
https://example.com/.git/config https://example.com/index.php.bak
→ 誤ってアップロードされたファイルに情報が残っている
⚠️ 実際の脆弱性事例
攻撃例 | 結果 |
---|---|
URLに誤ったパラメータ → スタックトレース表示 | 使用中のライブラリ、構成が判明 |
パスワードリセットURLのトークンが推測可能 | アカウント乗っ取り |
開発環境設定ファイル .env にアクセス |
DB認証情報が漏洩 |
APIレスポンスに全ユーザー情報が含まれていた | 個人情報流出(メール・氏名など) |
🛡 防止策
対策 | 内容 |
---|---|
本番環境でエラー表示を抑制 | ユーザーには汎用的なエラーメッセージだけ表示 |
開発用ファイルを公開しない | .git/ , .bak , .env などを除外設定にする |
デバッグ・ログを外部出力しない | ログレベルや出力先を環境変数で制御 |
不要な情報をレスポンスに含めない | JSONやHTML内のデバッグ属性を除去 |
✅ まとめ
- 情報漏洩は、他の脆弱性を見つけるための「情報源」になる。
- 目立たなくても、ペネトレーションテストにおいて極めて価値が高い。
- 意図せず出力されるあらゆる情報をチェックしよう。
🔐 情報漏洩を軽視してはいけません。たった一つのエラーメッセージ、たった一行のコメントが、システム全体を崩壊させる入口になることもあります。
Best regards, (^^ゞ