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

露出した .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回の無料スキャンでチェックできます。

アプリを無料でスキャン

ブログ記事

偽のAIクローラーが.envファイルを狙っている。自分のアプリを確認する方法

認証情報を狙うスキャナーがAIクローラーの名前を借りて許可リストをすり抜け、ある1つのファイルを要求しています。それがあなたの.envです。自分のファイルにアクセスできてしまわないか確認する方法と、その塞ぎ方を解説します。

Railwayの侵害:ダウンタイムなしでアプリのシークレットをローテーションする方法

攻撃者がAIやプラットフォームのAPIキーを狙ったことを受け、Railwayは全ユーザーに環境変数のローテーションを呼びかけました。自分への影響を確認する方法、アプリを止めずにすべてを入れ替える方法、そして次の侵害の被害を小さくする方法をまとめます。

PHP2Shellが悪用されています:あなたのアプリが影響を受けるか確認する方法

PHP本体の重大なバグ2件が、数日のうちに「パッチ公開」から「実際に悪用中」へと移りました。あなたが運用しているものに影響を受けるバージョンがあるかを確認する方法と、今日やるべきことをまとめます。

AIで作ったアプリをリリースする?公開前にこの7つを確認しよう

AIコーディングツールは「安全にリリースできる」ではなく「動く」ことを最適化します。これは、リリースしたばかりのアプリでまず確認する7つの問題と、それぞれの対策です。