※本記事にはプロモーションが含まれています。
サーバーログを確認していると、次のようなアクセスが記録されていました。
GET /.env
GET /app/.env.production
GET /mail/.env私のサイトはWordPressです。
WordPressでは通常、.envファイルは使用しません。
それでは、なぜこのようなファイルを探すアクセスが来るのでしょうか。
今回は、実際のアクセスログをもとに.envスキャンの正体と狙いを解説します。
実際に観測された .env スキャンログ
私のサイトで観測されたログの一部です。
www.vivisec.net 172.94.9.245 - - [25/Feb/2026:17:30:29 +0900]
"GET /app/.env.production HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"
vivisec.net 74.161.32.198 - - [12/Mar/2026:17:40:45 +0900]
"GET /.env HTTP/1.1" 403 0 "-"
"Mozilla/5.0 ..."www.vivisec.net 172.94.9.245 - - [25/Feb/2026:15:54:43 +0900]
"GET /mail/.env HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"特徴としては次の通りです。
.envを直接取得しようとしているapp/.envやmail/.envなど複数のパスを探索- User-Agent に Go-http-client が使われている
これは典型的な環境変数ファイル探索スキャンです。
アクセスログの見方
例として、今回観測されたログの1行を見てみます。
www.vivisec.net 172.94.9.245 - - [25/Feb/2026:17:30:29 +0900]
"GET /app/.env.production HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"
このログには、アクセスの詳細な情報が含まれています。
| 項目 | 内容 |
|---|---|
| ドメイン | www.vivisec.net |
| IPアドレス | 172.94.9.245 |
| 時刻 | 25/Feb/2026 17:30 |
| HTTPメソッド | GET |
| リクエストURL | /app/.env.production |
| HTTPバージョン | HTTP/2.0 |
| ステータスコード | 403 |
| 送信バイト | 0 |
| User-Agent | Go-http-client/2.0 |
攻撃者のIPアドレス
172.94.9.245これはアクセス元のIPアドレスです。
攻撃ボットやスキャナーは、VPSやクラウドサーバーから実行されることが多くあります。
リクエストされたURL
/app/.env.productionこれは .envファイルを取得しようとするアクセスです。
.env.productionは主に、LaravelやNode.jsなどのアプリケーションで使われる環境設定ファイルです。
HTTPメソッド
GETGETは、サーバーからデータを取得するリクエストです。
つまり、今回のアクセスは、.envファイルをダウンロードできるか確認するためのリクエストです。
HTTPステータスコード
403403は、アクセス拒否(Forbidden)を意味します。
つまり、ファイルが存在しない、またはサーバー側でブロックされた状態です。
今回、情報漏洩は発生していません。
このように403が返されている場合、サーバー側でアクセスが制御されている可能性があります。
レンタルサーバーによってはWAF(Web Application Firewall)などの機能によって、不審なリクエストが自動的にブロックされることがあります。
User-Agent(ユーザーエージェント)
Go-http-client/2.0これはGo言語のHTTPクライアントです。
つまり、ブラウザではなく、自動スキャンツールの可能性が高いです。
.envファイルとは何か
.envは、アプリケーションの環境変数を保存する設定ファイルです。
主に次のようなフレームワークで使用されます。
- Laravel
- Node.js
- Docker環境
- Pythonアプリケーション
.envには次のような機密情報が保存されることがあります。
DB_PASSWORD=example_password
DB_USERNAME=root
API_KEY=xxxxxxxxxxxx
MAIL_PASSWORD=xxxxxxxxxxxxもしこのファイルが公開ディレクトリに置かれていると、URLにアクセスするだけで機密情報が漏れる可能性があります。
なぜ攻撃ボットは .env を探すのか
.envは、情報漏洩の宝庫だからです。
攻撃者にとっては非常に価値の高い情報が含まれています。
例
| 情報 | 悪用方法 |
|---|---|
| DBパスワード | データベース侵入 |
| APIキー | 外部サービス悪用 |
| SMTPパスワード | スパム送信 |
| JWTシークレット | 認証突破 |
特にLaravelアプリの設定ミスでは、.envが公開されてしまう事故が何度も起きています。
そのため、攻撃ボットは次のようなURLを片っ端から試します。
/.env
/.env.production
/.env.local
/app/.env
/mail/.env
/config/.envこれはインターネット全体をスキャンする自動ボットです。
WordPressサイトでも.envスキャンは来る
今回のサイトはWordPressですが、それでも .env スキャンは来ています。
理由はシンプルで、攻撃ボットはサイトの種類を確認せずとりあえず試すからです。
つまり、
- WordPress
- Laravel
- Node.js
- 静的サイト
関係なくスキャンが飛んできます。
今回のログから分かること
今回のログでは、
403が返されています。
これは、ファイルが存在しない、またはサーバー側でブロックされている状態です。
つまり、攻撃は成功していません。
WordPressサイトでは.envを使用しないため、基本的には問題ありません。
.env情報漏洩を防ぐ対策
もし.envを使う環境の場合は次の対策が重要です。
公開ディレクトリに置かない
.envは必ず、
/publicより上の階層に置きます。
Webサーバーでアクセス禁止
例(Apache)
<Files ".env">
Require all denied
</Files>Gitに含めない
.env は .gitignore に追加してリポジトリに含めないようにします。
まとめ
今回のアクセスログから分かったことです。
.envを探すスキャンは実際に存在する- 主に Laravel / Node.js 環境の設定ミスを狙う
- WordPressサイトでも無差別にスキャンされる
.envが公開されると 機密情報漏洩の危険がある
普段は意識しないファイルですが、設定ミスで重大な情報漏洩につながる可能性があります。
サーバーログを確認すると、このようなスキャンが日常的に行われていることが分かります。
