0.0.0.0 Day

0.0.0.0デー」と名付けられた18年前に公開された脆弱性により、悪意のあるウェブサイトがグーグル・クローム、モジラ・ファイアフォックス、アップル・サファリのセキュリティを迂回し、ローカルネットワーク上のサービスとやりとりできるようになる。

ただし、これが影響を及ぼすのはLinuxとmacOSのデバイスのみで、Windowsでは動作しないことに注意が必要だ。

影響を受けるデバイスの場合、脅威者はこの欠陥を悪用して、リモートで設定を変更したり、保護された情報に不正アクセスしたり、場合によってはリモートでコードを実行したりすることができる。

この問題は、18年前の2008年に報告されたにもかかわらず、Chrome、Firefox、Safariでは未解決のままである。

Report from 18 years ago
18年前の報告
ソースはこちら:オリゴ・セキュリティ

Oligo Securityの研究者は、このリスクは理論的に攻撃を可能にするだけでなく、攻撃チェーンの一部としてこの脆弱性を悪用する複数の脅威行為者を観測していると報告しています。

0.0.0.0日の欠陥

0.0.0.0デーの脆弱性は、異なるブラウザ間で一貫性のないセキュリティ・メカニズムと、「ワイルドカード」IPアドレス0.0.0.0を使用して公共のウェブサイトがローカル・ネットワーク・サービスと通信することを可能にする標準化の欠如に起因する。

通常、0.0.0.0はローカル・マシン上のすべてのIPアドレス、またはホスト上のすべてのネットワーク・インターフェイスを表します。DHCPリクエストのプレースホルダーアドレスとして使われたり、ローカルネットワークで使われる場合はlocalhost(127.0.0.1)として解釈されたりします。

悪意のあるウェブサイトは、ユーザーのローカルマシン上で実行されているサービスをターゲットに0.0.0.0にHTTPリクエストを送ることができ、一貫したセキュリティがないため、これらのリクエストはしばしばサービスにルーティングされ、処理されます。

CORS(クロス・オリジン・リソース・シェアリング)やPNA(プライベート・ネットワーク・アクセス)のような既存の保護メカニズムでは、この危険な活動を止めることはできないとオリゴは説明する。

デフォルトでは、ウェブ・ブラウザは、ウェブサイトが第三者のウェブサイトにリクエストを行い、返された情報を利用することを防いでいる。これは、悪意のあるウェブサイトが、オンライン・バンキング・ポータル、電子メール・サーバー、その他の機密性の高いサイトなど、訪問者が認証されている可能性のあるウェブ・ブラウザ内の他のURLに接続するのを防ぐためだ。

ウェブブラウザは、Cross-Origin Resource Sharing (CORS)を導入し、ウェブサイトが明示的に許可された場合、他のサイトからデータにアクセスできるようにした。

「CORSもまた素晴らしく、すでにインターネットをより安全なものにしている。CORSはレスポンスが攻撃者に届かないようにするため、攻撃者は無効なリクエストを行ってもデータを読み取ることができない。リクエストを送信する際、レスポンスにCORSヘッダーが存在しなければ、攻撃者のJavascriptコードはレスポンスのコンテンツを読むことができません。

CORSはJavaScriptに伝播する前にレスポンスを停止させるだけですが、不透明なリクエストは「no-CORS」モードでディスパッチでき、レスポンスにこだわらなければ、サーバーに正常に到達します。”

オリゴ

例えば、脅威行為者の目的が単にローカルデバイス上で動作しているHTTPエンドポイントに到達することであり、そのエンドポイントは設定の変更やタスクの実行に使用される可能性があるのであれば、出力は不要である。

オリゴは、プライベート・ネットワーク・アクセス(PNA)セキュリティ機能は、ローカルまたはプライベートとみなされるIPアドレスへの接続を試みるリクエストをブロックすることで、CORとは少し異なる方法でこれを実行すると説明している。

しかし、Oligoの調査では、特別な0.0.0.0のIPアドレスは、例えば127.0.0.1のように、制限されたPNAアドレスのリストに含まれておらず、実装が脆弱であることが判明した。

したがって、この特別なアドレスに対して「no-cors」モードでリクエストを行うと、PNAをバイパスして127.0.0.1で動作しているウェブサーバーのURLに接続することができる。

この欠陥は、Linux上でFirefoxブラウザを使ったテストで動作することが確認されている。

積極的な悪用

残念ながら、このリスクは理論上のものだけではない。Oligo Securityは、”0.0.0.0 Day “脆弱性が実際に悪用されているケースをいくつか確認している。

最初のケースは、同じ研究者が昨年3月に記録したShadowRayキャンペーンである。このキャンペーンは、開発者のマシン(Rayクラスタ)上でローカルに実行されているAIワークロードを標的としています。

この攻撃は、被害者が電子メールで送信されたリンクや悪意のあるサイトで見つけたリンクをクリックすることから始まり、JavaScriptをトリガーしてRayが通常使用する「http://0[.]0[.]0[.]0:8265」にHTTPリクエストを送信する。

これらのリクエストはローカルのRayクラスタに到達し、任意のコード実行、リバースシェル、設定変更などのシナリオを開きます。

Exploit used in the ShadowRay campaign
ShadowRayキャンペーンで使用されたエクスプロイト
Source:オリゴ・セキュリティ

もう1つのケースは、先月Wizによって発見されたSelenium Gridを標的としたキャンペーンです。このキャンペーンでは、攻撃者は公開ドメイン上のJavaScriptを使用して、「http://0[.]0[.]0[.]0:4444」にリクエストを送信します。

これらのリクエストはSelenium Gridサーバーにルーティングされ、攻撃者がコードを実行したり、ネットワーク偵察を行ったりすることを可能にする。

Malicious request seen in the Selenium attacks
Selenium攻撃で見られる悪質なリクエスト
出典:Oligo Security:オリゴ・セキュリティ

最後に、“ShellTorch“の脆弱性は2023年10月にOligoによって報告され、TorchServeウェブパネルがlocalhostの代わりにデフォルトで0.0.0.0のIPアドレスにバインドされ、悪意のあるリクエストにさらされていた。

ブラウザ開発者の反応

Oligoによると、先月から0.0.0.0と通信している一般サイトの数が急激に増加しており、現在約10万に達しているとのことです。

Number of public sites communicating with 0.0.0.0
0.0.0.0と通信している公開サイトの数
ソースはこちら:オリゴ・セキュリティ

Oligoがこの活動を公表したことを受け、ウェブブラウザの開発者たちもようやく対策を講じ始めた:

世界で最も人気のあるウェブブラウザであるGoogle Chromeは、バージョン128(近日公開予定)からバージョン133まで、段階的に0.0.0.0へのアクセスをブロックすることを決定した。

Mozilla FirefoxはPNAを実装していないが、開発の優先度は高い。PNAが実装されるまでの間、一時的な修正が実施されますが、ロールアウトの日程は明らかにされていません。

Appleは WebKitの変更によって Safariに追加のIPチェックを実装し、macOS Sequoiaで導入されるバージョン18(近日公開予定)では0.0.0.0へのアクセスをブロックしている。

ブラウザの修正が到着するまでの間、Oligoはアプリ開発者に以下のセキュリティ対策を実施することを推奨します:

  • PNAヘッダーを実装する。
  • PNAヘッダーを実装する。DNSリバインディング攻撃から保護するためにHOSTヘッダーを検証する。
  • ローカルでもlocalhost-add認証を信用しない。
  • 可能な限りHTTPSを使用する。
  • ローカルアプリであってもCSRFトークンを実装する。

最も重要なことは、修正が適用されるまでは、悪意のあるウェブサイトがHTTPリクエストを内部IPアドレスにルーティングする可能性があることを覚えておくことだ。そのため、アプリを開発する際には、このセキュリティへの配慮を念頭に置く必要がある。