[警告] browserstack-runnerに深刻なパス・トラバーサル脆弱性 (CVE-2026-49144)
はじめに:BrowserStack Runnerとは?
フロントエンド開発の現場では、CI/CDパイプラインやローカルでのテスト実行において、様々なブラウザ環境での互換性を担保するためにBrowserStackのようなクラウドベースのテストサービスが活用されています。<code>browserstack-runner</code>は、これらのテストを効率的に実行するためのツールチェーンの一部です。しかし、この<code>browserstack-runner</code>の組み込みHTTPサーバーに、きわめて深刻な脆弱性が見つかりました。
脆弱性の概要:認証なしで任意のファイルが読み取られるパス・トラバーサル
今回報告された脆弱性 (GHSA-8rpw-6cqh-2v9h / CVE-2026-49144) は、<code>browserstack-runner</code>が内部で使用するHTTPサーバーにおける「パス・トラバーサル」に起因します。このサーバーの<code>_default</code>ハンドラーは、リクエストされたURIに含まれる<code>../</code>のようなパス操作シーケンスを適切に検証せず、カレントディレクトリと結合してファイルパスを解決してしまいます。
例えば、攻撃者が<code>http://127.0.0.1:8888/../../../etc/passwd</code>のようなリクエストを送信すると、サーバーはプロジェクトディレクトリの外にあるOS上の機密ファイル(例: <code>/etc/passwd</code>)を認証なしで読み取り、その内容をレスポンスとして返してしまいます。さらに問題なのは、このサーバーがデフォルトで<code>0.0.0.0</code>(すべてのネットワークインターフェース)でリッスンしているため、同じネットワーク内の誰でもこの脆弱性を悪用できてしまう点です。
フロントエンド開発者が直面する深刻な影響
この脆弱性は、以下のような甚大な情報漏洩リスクをもたらします。特に、テスト環境や開発環境で<code>browserstack-runner</code>を使用している場合、その影響は計り知れません。
<ul><li><strong>BrowserStackアカウント情報の漏洩:</strong> <code>browserstack.json</code>ファイルからBrowserStackのユーザー名とアクセスキーが平文で漏洩し、攻撃者にアカウントを乗っ取られる可能性があります。</li><li><strong>プロジェクト機密情報の窃取:</strong> プロジェクトのソースコード全体はもちろん、<code>.env</code>ファイル、SSHキー、npmトークンなど、サーバー上に保存されているあらゆる機密情報が盗まれる危険性があります。これにより、コードベースの流出や、さらなるサプライチェーン攻撃の足がかりとなる可能性があります。</li><li><strong>OSシステム情報の露呈:</strong> <code>/etc/passwd</code>のようなOSのシステムファイルが読み取られることで、システム構成やユーザー情報が攻撃者に露呈し、より高度な攻撃へと繋がるリスクがあります。</li></ul>
これらの情報が漏洩した場合、開発環境やCI/CD環境だけでなく、場合によっては本番環境にも影響が波及し、ビジネスに壊滅的な打撃を与える可能性があります。開発者は、テストツールだからと安易に考えず、そのセキュリティリスクを真剣に受け止める必要があります。
推奨される対応策:今すぐ実施すべき3つのステップ
この脆弱性に対処するためには、以下の対策を直ちに実施してください。特に、<code>browserstack-runner</code>を本番環境に近いネットワーク環境で使用している場合は緊急の対応が必要です。
<ol><li><strong>パスの厳格な検証を導入する:</strong><br>リクエストされたファイルパスが、必ずプロジェクトのルートディレクトリ内にとどまるように、厳密なチェックロジックを導入してください。具体的には、ファイルパスを解決する際に<code>path.resolve</code>で絶対パスを取得した後、そのパスが<code>process.cwd() + path.sep</code>(現在の作業ディレクトリ)で始まることを確認します。そうでない場合は、アクセスを拒否するようサーバーのハンドラーを修正する必要があります。これにより、<code>../</code>などを使ったディレクトリ外へのアクセスを防ぎます。</li><li><strong>バインドIPアドレスを制限する:</strong><br>サーバーを<code>0.0.0.0</code>ではなく、<code>127.0.0.1</code>(ローカルホストのみ)にバインドするように設定を変更してください。これにより、外部からの直接アクセスを遮断し、同じマシン上で動作するプロセス以外からのアクセスを防止できます。これは、開発環境における基本的なセキュリティプラクティスです。</li><li><strong>認証機構を追加する:</strong><br><code>_default</code>ハンドラーに対して、適切な認証機構を導入することを強く推奨します。ファイルアクセスに際しては、ユーザー名/パスワード、APIキー、トークンなど、何らかの認証を要求するように変更し、未認証のアクセスを完全に排除してください。</li></ol>
これらの対策は、<code>browserstack-runner</code>の内部HTTPサーバーの設定変更、またはそのサーバーをラップするプロキシの導入など、場合によっては追加の開発が必要になる可能性があります。公式のアップデートがリリースされていない現状では、自衛策としてこれらの対策を講じることが不可欠です。
まとめ
<code>browserstack-runner</code>のパス・トラバーサル脆弱性は、フロントエンド開発環境におけるセキュリティの重要性を改めて浮き彫りにしました。テストツールや開発ツールであっても、ネットワークに公開される可能性があるものには常に注意を払い、適切なセキュリティ対策を講じる必要があります。今回推奨された対応策を速やかに実施し、皆様の開発環境の安全を確保してください。未知の脅威に備え、常に最新のセキュリティ情報を追う姿勢が求められます。