【注意】Claude Code×Laravel開発者の方へ:Bunが.envを自動ロードする危険性について

AI系ツール

Claude Code と Laravel(または Symfony)で開発を行っている際、.envファイルが勝手に読み込まれるとの投稿がありました。場合によってはデータベースが破壊される可能性がある深刻な挙動です。

拝見した元のXの投稿はこちら。

なかなかに怖い件なので、ちょっと調べてみました。

原因としては、Claude Code の “最近の仕様変更” と Bun の “公式挙動” が重なった結果でした。

備忘録&ご興味ある方用に記事にしますね。

そもそもなぜこんなことが起こるか

Claude Codeは最近、「NPM経由でインストールしNodeで実行」から自己完結バイナリ(Download 版)に移行しました。

これによって、内部では、内部で Bun が組み込まれるようになりました。

Bun は、Node.js や npm の代替にもなりうる高速で実行可能なJavaScript ランタイムです。ただ、まだ歴史が浅いというデメリットもあります。

Bunは玉ねぎマークが目印。アイコンかわいくて好きです。

*Bunのアイコンは玉ねぎではなく「丸いパン(bun)・肉まん」をモチーフにされているようです。

Bunの問題点

Bunは、自動的に.envファイルを読み込みます。問題点を指摘する人もいますが、これは Bun の 公式仕様です。

LaravelとBunの挙動の衝突

Laravel は通常、テスト実行時は自動的に .env.testing を使用します。データベースもテスト用に切り替わります。

ですがClaude Code内で Bun が .env を先に読み込んでしまうと、Laravel が testing モードへ切り替わらず、.env に記載されたデータベースへそのままテスト処理が実行されてしまいます。

そのため、.env.testing の安全なテスト用DBではなく、.env に書かれたデータベースに影響が出てしまう可能性があります。

対策

対策としては、もしClaude Codeの公式に書かれた方法で最新版をインストールしたとしたら、削除すること。

そしてnpm版でインストールすることです。

もしどちらが入っているか不明な場合は、下記コマンドを実行します。

見方は次のとおりです。

  • ~/.local/bin/claude → バイナリ版(Bun)=今回は危険。
  • node_modules / nvm 配下(例:/c/nvm4w/…) → npm版=安全

さいごに

Bun の .env 自動ロードは仕様であり、バグではありません。しかし、Laravel のテスト環境切り替えの仕組みと相性が悪いことで、「意図しない環境に対してテストが走ってしまう」という重大な問題につながったようです。

今回のケースは、OWASP Top 10 2025というセキュリティ指標では、

  • Software Supply Chain Failures(ソフトウェアサプライチェーンの障害/脆弱性)
  • Security Misconfiguration(セキュリティ設定のミス)

に該当すると思われます。

気になったら、こちらも併せて見て下さいね。

外部ツールの仕様変更や、設定の不適切さによって、重大なセキュリティリスクが生じる例。悪意ある攻撃だけではなく、こういった更新や設定によるリスクにも気を付けていかねばですね。

 

 

タイトルとURLをコピーしました