ユーザーが感染したウェブページを閉じたり、そこから離れたりした後でも、ユーザーのブラウザ内で悪意あるコードを実行できる新しいブラウザベースの攻撃がギリシャの学者らによって考え出された。
「MarioNet」と呼ばれるこの新しい攻撃は、ユーザーのブラウザから巨大なボットネットを構築するための扉を開く。研究者によると、これらのボットネットは、ブラウザ内での不正な仮想通貨マイニング(クリプトジャッキング)、DDoS攻撃、悪意あるファイルのホスティング/共有、分散型のパスワードクラッキング、プロキシネットワークでの不正リレー、クリック詐欺の宣伝、トラフィック統計のかさ増しに使用できる。
MarioNet攻撃は、ブラウザベースのボットネットを作成する同様の概念を発展させたものだ。この概念は、2007年に「Puppetnets」(パペットネット)研究論文で説明されている。
両者の違いは、ユーザーがブラウザのタブを閉じたり、悪意あるコードをホスティングしているウェブサイトから離れたりした後も、MarioNetが有効であることだ。
これが可能なのは、最近のウェブブラウザが「Service Worker」という新しいAPIをサポートするようになったからだ。この仕組みのおかげで、ウェブサイトは、ページのユーザーインターフェースをレンダリングする操作を、高負荷な計算タスクを処理する操作から分離させて、大量のデータを処理するときにウェブページの画面がフリーズするのを防ぐことができる。
技術的には、Service Workerは、「Web Worker」と呼ばれる従来のAPIと異なり、一度登録してアクティブにすると、そのページのバックグラウンドで存在し続け、動作することができる。ユーザーがそのService Workerを読み込んだサイトを参照し続ける必要はない。
MarioNetは、ブラウザでService Workerによって提供される機能を利用する。
攻撃ルーチンは、ユーザーが攻撃者の制御するウェブサイトにアクセスしたときにService Workerを登録し、次に ServiceWorker APIのSyncManagerインターフェースのバックグラウンド同期機能を悪用して、ユーザーがそのウェブサイトから離れた後もService Workerがアクティブな状態を維持するというものだ。
この攻撃はサイレントであり、ユーザーとのやり取りを一切必要としない。ブラウザはService Workerを登録する前に、ユーザーに警告を発したり、許可を求めたりしないからだ。
さらに、MarioNetの攻撃では、攻撃ポイントを分離できる。ユーザーへの感染にはウェブサイトAを使い、後からサーバBを使ってService Workerを制御することができる。
提供:Image: Papadopoulos et al.
これにより、攻撃者はトラフィックの多いウェブサイトに短期間だけ悪意のあるコードを配置して多くのユーザーベースを獲得して(悪意のあるコードを削除し)、別のセントラルサーバから感染したブラウザを制御し続けることができる。
さらに、MarioNet攻撃はPush APIを悪用することによってブラウザの再起動後も影響力を持続することができる。ただし、ここでは攻撃者が、感染したホストからこのAPIにアクセスするためのユーザーの許可を取得する必要がある。
MarioNet技術によって作成された後続のボットネットは、その後さまざまな犯罪行為に使用される可能性がある。
Service Workerは数年前に導入されたため、MarioNet攻撃はほとんどすべてのデスクトップおよびモバイルブラウザで機能する。機能しないのは、(デスクトップ向けでは)IE、(モバイル向けでは)Opera MiniおよびBlackberryだけだ。
提供:Image: Papadopoulos et al.
研究論文では、MarioNetがマルウェア対策のためのブラウザ拡張機能やマイニング対策から検出されないようにするための方法についても説明しており、ブラウザメーカーが取ることができるいくつかの緩和策も提案している。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。