今週、StatCounterのJavaScriptが乗っ取られ、暗号通貨取引所からビットコインが盗まれた事件は、どうやらWebキャッシュポイズニング攻撃の結果だったようだ。
このサイバー強盗は、ウェブサイトが訪問者のトラフィックを監視するためにページに埋め込むStatCounterの追跡スクリプトに悪意のあるJavaScriptコードスニペットが挿入されたもので、Gate.io暗号通貨取引所で行われているビットコイン取引を傍受してリダイレクトしようとするハッカーのより大規模な試みの一部だった。
幸いなことに、ESETのセキュリティ専門家がstatcounter.comから提供されていた悪質なJSを発見し、この事件を報告しました。StatCounterとGate.ioは、その後すぐに攻撃を阻止するための措置を講じました。Gate.ioは、実際にはコインは盗まれていないと述べ、StatcounterはThe Regに対し、火曜日に顧客からこの報告を受け、数時間以内に修正されたと伝えました。
しかし、この攻撃はどのようにして可能になったのだろうか? StatCounterはThe Registerに対し、同社のサーバーが直接侵害されてGate.ioに不正なJSを送り込んだのではなく、コンテンツ配信ネットワークであるCloudflare経由で配信される追跡スクリプトの1つに悪意のある人物が侵入したと語った。
その結果、ウェブサイトは StatCounter コードを埋め込み、Cloudflare から罠を仕掛けたスクリプトを取得するようになりました。
通常の動作は次のようになります。ウェブサイトはCloudflareをキャッシュとして設定し、訪問者がサイトにアクセスした際にCloudflareのキャッシュからデータを取得するようにします。これによりウェブサイトのサーバーへの負荷が軽減され、Cloudflareが負荷を担うことになります。しかし、キャッシュが機能するには、訪問者が最初にページをリクエストした際に、サイトのサーバーにアクセスしてページのコピーを取得し、その後のリクエストに対応するためにこれらのファイルのコピーを保持する必要があります。
キャッシュへのリクエストを巧妙に細工することで、悪意のあるファイルを正規のウェブサイトサーバーではなく別のサーバーから取得し、キャッシュに保存することができます。こうすることで、訪問者からの以降のリクエストで、キャッシュから汚染されたファイルが取得されるようになります。これは、HTTP(S)リクエストのX-Forwarded-Hostヘッダーを変更するなどの手法で可能になります。悪意のあるサーバーから感染したファイルをキャッシュに取り込むのです。
Cloudflare は数か月前からこの攻撃ベクトルについて警告していたが、どうやら StatCounter は攻撃者がこの脆弱性を悪用するのを防ぐためのサーバーと設定を適切に構成していなかったようだ。
インターネットは機敏に、インターネットはQUICに。Cloudflareが新しいネットワーク技術を披露
続きを読む
StatCounter 社はその後防御を強化し、侵害されたコードをキャッシュから削除したと述べているが、このメトリクス会社は既に少なくとも 1 つの顧客にアクセスできなくなっている。
Gate.ioはThe Registerに対し、「疑わしい活動が確認されたため、StatCounterのサービスの利用を停止しました。ユーザーの資金は引き出されておらず、当社のプラットフォーム上で不正行為は確認されていません」と述べた。
一方、クラウドフレアはこの件に関して簡潔な声明を発表した。
「お客様の設定についてはコメントいたしません」と広報担当者はEl Regに語った。「当社のインフラが侵害されたという証拠はありません。」
つまり、潜在的に壊滅的な金融攻撃はほぼ回避されたようで、StatCounter がいくらかビジネスを失ったことを除けば、比較的少ない痛みで重要な教訓が得られました。
では、自分のキャッシュ サーバーがロックダウンされていることを確認してください。®