Hidden File Found

概要

  • 脆弱性の名前: Hidden File Found (隠しファイルの発見)
  • 問題の要点: Webサーバー上に意図せず公開されている隠しファイルやディレクトリが存在し、機密情報が漏洩する可能性がある状態。
  • よくある発生シーン: 開発者が誤って.git.envbackupなどのファイルをWebサーバーの公開ディレクトリにアップロードしてしまう、または設定ミスにより隠しファイルが公開されてしまう。

背景

Webアプリケーションの開発では、バージョン管理システム(Gitなど)や設定ファイル、バックアップファイルなど、Webサーバーからアクセスされるべきではないファイルが多数存在します。
これらのファイルは通常、隠しファイルまたは隠しディレクトリとして扱われますが、設定ミスや不適切なデプロイメントによって、Webサーバーからアクセス可能になってしまうことがあります。
クラウド環境では、設定ファイルやバックアップファイルが共有ストレージに保存されている場合、アクセス権の設定ミスにより情報漏洩のリスクが高まります。

セキュリティ上のリスク

  • ソースコードの漏洩による、アプリケーションの脆弱性の特定や悪用。
  • 設定ファイル(.envなど)の漏洩による、データベースの認証情報、APIキー、暗号化キーなどの機密情報の漏洩。
  • バックアップファイルの漏洩による、過去のバージョンのアプリケーションやデータベースの内容の漏洩。
  • .gitディレクトリの漏洩による、ソースコードの完全な履歴やコミットメッセージの漏洩。

対処方法の具体例

Apache2

誤った設定例

.htaccessファイルで隠しファイルへのアクセスを禁止していない例:

# 誤った例: 隠しファイルへのアクセス制限なし

正しい設定例

.htaccessファイルで隠しファイルへのアクセスを禁止する例:

# 正しい例: 隠しファイルへのアクセスを禁止
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

Nginx

誤った設定例

設定ファイルで隠しファイルへのアクセスを禁止していない例:

# 誤った例: 隠しファイルへのアクセス制限なし

正しい設定例

設定ファイルで隠しファイルへのアクセスを禁止する例:

# 正しい例: 隠しファイルへのアクセスを禁止
location ~ /\. {
    deny all;
    return 404;
}

PHP

PHP自体で隠しファイルへのアクセスを直接制御することはできません。Webサーバーの設定で制御する必要があります。

AWS

正しい設定例

S3バケットで隠しファイルへのアクセスを制限する例:

  • バケットポリシーで、隠しファイルへのアクセスを明示的に拒否する設定を追加します。
  • IAMロールを使用して、必要なユーザーまたはサービスのみがS3バケットにアクセスできるように制限します。

検出方法

OWASP ZAPでの出力例

  • Alert 名: Hidden File Found
  • リスク: Low
  • URL: 発見された隠しファイルのURL
  • パラメータ: なし
  • 詳細: 隠しファイルが発見されたという情報

手動再現例

  1. Webブラウザまたはcurlコマンドを使用して、一般的な隠しファイルやディレクトリ(.git.envbackupなど)へのアクセスを試みます。
  2. ファイルの内容が表示されたり、ダウンロードできる場合、脆弱性が存在します。
curl -I https://example.com/.git/config

上記コマンドを実行し、ファイルの内容が表示された場合、脆弱性が存在する可能性があります。

まとめ

  • CVSS 基本値: 5.3 (Medium)
  • 運用チームや開発者が意識すべきポイント:
    • Webサーバーの公開ディレクトリに、隠しファイルやディレクトリが意図せず公開されていないか定期的に確認する。
    • バージョン管理システム(Gitなど)のディレクトリ(.git)が公開されていないか確認する。
    • 設定ファイル(.envなど)やバックアップファイルが公開されていないか確認する。
    • クラウドストレージ(S3など)のアクセス権設定が適切であるか確認する。
  • 再発防止:
    • 開発プロセス全体でセキュリティを考慮する(Security by Design)。
    • コードレビューを実施し、隠しファイルが公開ディレクトリにアップロードされていないか確認する。
    • 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
    • CI/CDパイプラインで、隠しファイルが公開ディレクトリにデプロイされないように設定する。

以上の対策と検出方法を活用して、Hidden File Foundのリスクを低減してください。