露出した .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 ファイルを公開成果物にコピーしないことを確認してください。
ファイルが一度でも到達可能だった場合は、その中のすべてのシークレットを漏洩したものとみなし、データベースのパスワード、APIキー、トークンを直ちにローテーションしてください。
FAQ
ファイルを削除しました。もう安全ですか?
シークレットをローテーションするまでは安全ではありません。ダウンロードした人は、あなたが変更するまで有効な認証情報を持ち続けます。
自分のものが露出しているかどうか、どうやって分かりますか?
ブラウザで https://yourdomain.com/.env にアクセスしてみてください。404ではなく KEY=value の行が表示されたら、露出しています。AppSafeはこれを自動でチェックします。
ブログ記事
偽のAIクローラーが.envファイルを狙っている。自分のアプリを確認する方法
認証情報を狙うスキャナーがAIクローラーの名前を借りて許可リストをすり抜け、ある1つのファイルを要求しています。それがあなたの.envです。自分のファイルにアクセスできてしまわないか確認する方法と、その塞ぎ方を解説します。
Railwayの侵害:ダウンタイムなしでアプリのシークレットをローテーションする方法
攻撃者がAIやプラットフォームのAPIキーを狙ったことを受け、Railwayは全ユーザーに環境変数のローテーションを呼びかけました。自分への影響を確認する方法、アプリを止めずにすべてを入れ替える方法、そして次の侵害の被害を小さくする方法をまとめます。
PHP2Shellが悪用されています:あなたのアプリが影響を受けるか確認する方法
PHP本体の重大なバグ2件が、数日のうちに「パッチ公開」から「実際に悪用中」へと移りました。あなたが運用しているものに影響を受けるバージョンがあるかを確認する方法と、今日やるべきことをまとめます。
AIで作ったアプリをリリースする?公開前にこの7つを確認しよう
AIコーディングツールは「安全にリリースできる」ではなく「動く」ことを最適化します。これは、リリースしたばかりのアプリでまず確認する7つの問題と、それぞれの対策です。