すべての解説
深刻度:重大設定ミス

露出した .env ファイル:攻撃者はどうやってシークレットを見つけるか

.env ファイルには、データベースのパスワード、APIキー、署名用のシークレットが入っています。これがWeb経由で到達可能だと——/.env、/.env.production、あるいは /.env.backup のようなバックアップで——誰でもダウンロードして、あなたのサービスを乗っ取れてしまいます。

これは何か

環境ファイルはサーバー上にとどめ、クライアントには決して配信しないためのものです。設定を誤った静的ファイルのハンドラー、Webルートに紛れ込んだコピー、あるいはドットファイルを配信してしまうフレームワークが、これらを露出させることがあります。

攻撃者は推測しません。/.env と数十種類の亜種を、何百万ものホストに対して自動スキャンで絶えず要求します。到達可能なファイルは数時間以内に見つかります。

なぜ重要か

これらのファイルには、本番のデータベースURL、Stripeのシークレットキー、JWTの署名用シークレット、クラウドの認証情報が日常的に含まれています。1回の漏洩が、全データの窃取、不正な請求、アカウント乗っ取りにつながりかねません。

シークレットはローテーションするまで有効なままなので、ファイルを削除しても、中身をすべてローテーションしない限り被害は続きます。

直し方

サーバーでドットファイルをブロックする

Webサーバーまたはプロキシの設定で、.env をはじめとするドットファイルへのアクセスを拒否してください。

location ~ /\.(?!well-known).* {
  deny all;
  return 404;
}
env ファイルをWebルートの外に置く

サーバーが静的配信するディレクトリの外に設定を保管し、ビルドが .env ファイルを公開成果物にコピーしないことを確認してください。

露出したものはすべてローテーションする

ファイルが一度でも到達可能だった場合は、その中のすべてのシークレットを漏洩したものとみなし、データベースのパスワード、APIキー、トークンを直ちにローテーションしてください。

FAQ

ファイルを削除しました。もう安全ですか?

シークレットをローテーションするまでは安全ではありません。ダウンロードした人は、あなたが変更するまで有効な認証情報を持ち続けます。

自分のものが露出しているかどうか、どうやって分かりますか?

ブラウザで https://yourdomain.com/.env にアクセスしてみてください。404ではなく KEY=value の行が表示されたら、露出しています。AppSafeはこれを自動でチェックします。

あなたのアプリは大丈夫ですか?

AppSafeなら、この問題を含む数十項目を1回の無料スキャンでチェックできます。

アプリを無料でスキャン