291 Intercept: 当社インフラで露出したGitリポジトリを狙う探索が2倍超に増加
10月19日の週、当社のインターネットに公開されたインフラに対して放置されたソースコードリポジトリを探索した送信元の数は、それ以前2週間の週平均と比べて137%増加しました。サブフォルダ内の.envファイル、クラウドの鍵ファイル、バックアップを探すスキャナーも増えています。
291 Interceptについて
291 Interceptは、291 Groupが新たに始める週刊シリーズです。オンライン上のあらゆる組織と同じく、当社のインターネットに公開されたインフラも、開いたままの扉を探す自動スキャナーによって毎日探索されています。狙われるのは、露出したパスワードファイル、忘れられたバックアップ、パッチ未適用の管理画面などです。各号では、それらのスキャナーが1週間のあいだに当社自身のインフラで何を狙ったかを報告します。他のシステム管理者や企業の皆様が、自社のシステムで同じ点を確認できるようにするためです。
毎週お届けするのは、当社インフラで目立ったパターンと前週からの変化、トラフィックの発信元、そして自社サーバーで確認すべき項目の短いリストです。データはすべて集計値です。個々のアドレスやシステムを特定することはなく、多数の異なる送信元から観測されたパターンのみを掲載します。各号は、公開日の少なくとも7日前に終了した週を対象としています。
10月19日から25日にかけて、約240の送信元が、Webサーバー上に残されたソースコードリポジトリを求めて当社のインターネットに公開されたインフラを探索しました。これは、それ以前2週間の週平均より137%多い数です。要求されたのは/.git/config、/.git/index、/.svn/entriesといったファイルです。今週、当社インフラでソースコードより多くのスキャナーを集めたのはWordPressだけでした。
同時に、当社サイトに対する関連の探索も増加しました。クラウドの鍵ファイルを探す送信元は51%増、バックアップやデータベースダンプを要求する送信元は75%増です。また、以前はほとんど関心を集めていなかったサブフォルダ内の一群の.envファイルを狙うスキャナーも確認されました。これらの標的はいずれもソフトウェアのバグではありません。どれも、公開サーバーから削除し忘れたファイルです。
今週の概要
観測した送信元は約660で、同じ基準と比べて28%増でした。最も多くの送信元を集めたのはWordPressのログイン、XML-RPC、プラグインのパスで、全体の56%を占めました。シークレットや設定ファイルは32%です。/info.phpなどの診断ページを探す送信元は33%増、/actuator/envなどアプリケーション内部を探る送信元は37%増でした。
当社に到達した送信元のうち88%は一般的なブラウザを装ったユーザーエージェント文字列を使用し、64%はレンタルサーバーからのアクセスでした。国別では、米国、ドイツ、オランダ、シンガポール、インドが上位を占めました。
露出した.gitフォルダからサイトの中身が漏れる仕組み
ほとんどのソフトウェア開発チームはGitでコードの変更を管理しており、Gitプロジェクトはどれも、その履歴を隠しフォルダ.gitに保存しています。プロジェクトフォルダをまるごとWebサーバーにコピーしてサイトを公開すると、この隠しフォルダも一緒にコピーされることがあり、そのファイルを要求すれば誰でも読めてしまいます。
/.git/configは、当社のインターネットに公開されたインフラに対して最も多く要求されたソースコード関連パスの一つでした。このファイルにはコードの取得元リポジトリが記載されており、デプロイに使う認証情報が含まれていることもあります。スキャナーは/.git/head、/.git/logs/head、/.git/indexも要求していました。これらを見れば、さらに先へ進めるだけフォルダが読み取れるかどうかがわかります。フォルダが露出している場合、攻撃者がソースコード全体とコミット履歴を復元できることもあります。
この種のミスは珍しくありません。2026年2月に報じられた調査では、Gitメタデータを露出している公開Webサーバーが約4.96百万台見つかりました。そのうち252,733台では設定ファイルにデプロイ用の認証情報が含まれており、同じレポートは、これがリポジトリの乗っ取りやサプライチェーン攻撃につながりかねないと警告しています。
思わぬフォルダに潜むシークレット
スキャナーはルートの/.envを要求していましたが、今週はサブフォルダを探すものも多く見られました。/mailer/.envは40の送信元から要求され、従来平均の7.8倍でした。/live/.env、/mail/.env、/v3/.env、/sitemaps/.env、/releases/.env、/exapi/.envもそれぞれ40の送信元から要求され、従来平均の約6倍から7倍に達しました。初めて当社に届いたパスも4つあり、いずれも約10の送信元からでした。/core/database/.env、/.changeset/config.json、/secrets、/settings/credentialsです。
攻撃者にとって、これらのファイルは手間をかけるだけの価値があります。Webアプリは、APIキー、データベースのパスワード、クラウドのアクセスキーを.envファイルに保存しているからです。ある大規模スキャナーを対象とした2026年4月の調査では、900社を超える侵害企業から収集された.envファイルが見つかり、2026年4月10日から21日までに30,000を超える異なる.envファイル名が収集されていました。盗まれたシークレットは、AI、クラウド、決済、メッセージングの各サービスに及んでいました。
クラウドの認証情報でも同じパターンが見られました。/application_default_credentials.jsonは40の送信元から要求され、従来平均の6.2倍でした。スキャナーは/service-account.jsonや/.config/gcloud/application_default_credentials.jsonも要求していました。このファイルはクラウドのコマンドラインツールでログインした際に書き出されるもので、プロバイダー自身のガイダンスによれば暗号化されずに保存され、保持している者は誰でも無期限にアクセストークンを要求できます。そのコピーがWebルートに置かれていれば、見つけた攻撃者は失効させられるまでアクセスを保持し続けます。
一度のスイープで多数の標的
協調して動く複数の送信元グループが、同じリストを当社のインターネットに公開されたインフラに対して実行していました。あるグループでは、7か国の20の送信元が同じ8つのパスを要求しており、その中には/.git/config、/.env、/info.php、/config.json、/actuator/env、/server-statusが含まれていました。その大半は互いに60時間以内に活動を開始しています。約10の送信元からなる小規模な2つのグループは、210パスと158パスという、はるかに長いリストを使用していました。どちらのリストにも/.git/config、/.env.oldや/.env.developmentといった.envの派生形、クラウドの鍵ファイルが含まれていました。
/actuator/envパスも同じ系統に属します。JavaアプリのSpring Boot Actuatorエンドポイントにログインなしでアクセスできる場合、アプリの環境変数と設定が返され、そこにはデータベースの認証情報やクラウドのキーが含まれることがあります。放置されたphpinfoページからも環境変数が漏れるおそれがあり、当社インフラでは/admin/phpinfo.phpへの要求が従来平均の5.9倍に増加しました。実際の事例として、あるWordPressプラグインが誰でも開けるphpinfo.phpを同梱していたことがあります。
当社サイトでは、WordPressを狙った独自のキャンペーンも見られました。7か国の20の送信元が、/xmlrpc.phpとあわせて、/blog/wp-includes/wlwmanifest.xmlや/wordpress/wp-includes/wlwmanifest.xmlなど推測したフォルダ配下のwlwmanifest.xmlを要求していました。同じファイルを多数のフォルダ名で要求すれば、サイトがWordPressを使っているかどうか、使っているならどこに置かれているかを手早く把握できます。攻撃者はXML-RPCを通じて、1回のリクエストで数百から数千のパスワードを試すことができます。
今週やるべきこと
- 外部から確認する。自社以外のネットワークから、各サイトの
/.git/configと/.envを要求してください。どちらかが実際の内容を返した場合は、すでに読み取られたものとみなしてください。 - 作業フォルダではなくビルド成果物をデプロイする。サイトに必要なファイルだけを配置し、.git、.env、その他の隠しファイルへのWebアクセスをブロックしてください。
- 漏えいしたものはすべてローテーションする。.gitや.envファイルが読み取り可能だった場合は、そこに含まれていた認証情報とキーを変更してください。ファイルを削除しても、誰かがすでに取得したコピーは消えません。
- シークレットをWebルートに置かない。.envやクラウドの認証情報ファイルは、公開フォルダの外に保存してください。認証情報ファイルが一度でも露出したことがあれば、失効させてください。
- 残骸を片付ける。
/wp-config.php.bakや/database.sqlなどのバックアップを削除し、phpinfoページやデバッグページを取り除いてください。 - 管理用エンドポイントを閉じる。Actuatorエンドポイントは認証で保護し、XML-RPCを使用していないWordPressサイトではXML-RPCを無効にしてください。
本観測について
本レポートは、291 Groupのセキュリティ監視システム291 Heat Seeker Oneによって作成されています。このシステムは、当社独自のセキュリティ運用プラットフォーム291 Crossband上で稼働しています。対象は291 Group自身のインターネットに公開されたインフラへのトラフィックのみです。
数値は端数を丸めています。割合と変化はリクエスト数ではなく個別の送信元の数で計測しており、少なくとも20の異なる送信元から観測されたパターンのみを掲載しています。