Webサイトの改ざんに伴う仮想通貨マイニングスクリプトの埋め込み事例

IIJでは定常的にWebサイトを巡回して攻撃コードやマルウェアの有無を監視する活動を続けています。今回、一般の日本企業のWebサイトが改ざんされて仮想通貨をマイニングするスクリプトが埋め込まれるという事例を観測しました。この記事では、観測した事例についてその背景や詳細をご紹介します。

仮想通貨とは

仮想通貨とは、特定の国家による価値の保証や中央銀行による統制のないデジタル貨幣のことです。一般にブロックチェーンなどのメカニズムを用いて実装され、コンピュータの計算リソースにもとづいて貨幣をやり取りした記録の信頼性を担保します。その計算処理(マイニング)に参加したコンピュータは、計算リソースを提供する対価として仮想通貨が得られます。

Webブラウザを使った仮想通貨のマイニング

そうした中、最近ではWebブラウザを使った仮想通貨のマイニングに注目が集まっています。Webサイトを閲覧したユーザのコンピュータを使って仮想通貨をマイニングするサービスが登場してきたためです。サービスの一般的な利用方法としては、Webサイトの管理者が自身のページに仮想通貨をマイニングするスクリプトを埋め込みます。そして、Webページを閲覧したユーザがマイニングしたことで得られる報酬はWebサイトの管理者に対して支払われます。

このようなサービスが、Webサイトを収益化する上でWeb広告に代わる新たな手段として注目を集めています。ただし、ユーザによってサービスに対する反応は様々なようです。Webページを閲覧するだけでユーザの計算リソースを勝手に利用する点については批判もでています。利用者の同意にもとづいてマイニングするWebコンテンツを作ったり、マイニングの処理速度に上限を設定することも可能ですが、それらはWebサイトの管理者の良識に依存しているのが実状です。

観測した事象

今回観測した事象は、一般の日本企業のWebサイトが改ざんされて仮想通貨をマイニングするスクリプトが埋め込まれるというものです。ここで注意すべきなのは、仮想通貨をマイニングするスクリプトがWebサイトの管理者によって意図的に埋め込まれたものなのか、あるいは攻撃者が悪意を持って挿入したものなのかを外部から一律に判断することは困難という点です。今回に関しては、挿入されたスクリプトが発見されにくいように隠蔽されていたことから、攻撃者によって勝手に挿入されたものと判断しました。

具体的には、仮想通貨をマイニングするJavaScriptのコードが難読化された上で一般的に用いられるライブラリに偽装する形で仕込まれていました。一般的なWebサイトの管理者であればこのようなことをする理由はないため、悪意をもった人物による改ざんと判断できます。

図-1 改ざんされたWebサイトに攻撃者が挿入したスクリプト

上記のスクリプトの難読化を解除した上で、ダウンロードされるスクリプトのファイルを確認すると、次のような内容が見つかります。

図-2 攻撃者が挿入した仮想通貨をマイニングさせるためのスクリプト

上記のスクリプトが実行されると、ユーザがWebサイトを閲覧している間、コンピュータの処理能力が仮想通貨のマイニングに消費されます。処理スピードに上限を設けている点については、この計算リソースの勝手な利用が露呈しづらいように攻撃者が配慮した結果と考えられます。

攻撃者の新たな収入源として

このようにWebブラウザを用いた仮想通貨のマイニングは、攻撃者にとって新たな収入源として注目を集めているようです。使われる手法としては、前述したWebサイトの改ざん以外にもWeb広告への埋め込みが考えられます。具体的には、攻撃者がアドネットワークなどからWeb上のバナー広告の枠を購入して、その中にバックグラウンドで仮想通貨をマイニングするスクリプトを埋め込むというものです。これらを含む、ユーザが意図しない形で仮想通貨をマイニングさせる手法は「ドライブバイマイニング(Drive-by mining)」という名前で呼ばれるようにもなりつつあります。

Webブラウザを使った仮想通貨のマイニングをどう見なすか

ユーザ目線でWebブラウザを使った仮想通貨のマイニングについて考えたときにも、計算リソースを勝手に利用されると困るシチュエーションがあります。具体的には、ノートパソコンやスマートフォンなどのモバイル機器は処理能力がマイニングに費やされるとバッテリーの減りが早くなります。IIJで検証したところ、スマートフォンを使ってマイニングするページを表示すると、端末が熱くなりバッテリーがおおよそ1分間に1%のペースで減ることを確認しました。検証に用いた環境としては、端末にはiPhone7を使い、ブラウザとしてSafariを、Webコンテンツにはマイニング速度に上限を設定していないものを選びました。

また、前述した通りマイニングに用いられるスクリプトはWebサイトの管理者が意図して挿入したものなのか外部から判断しにくいという問題もあります。改ざんやWeb広告の埋め込みによるものだった場合は、悪意ある攻撃者にお金を渡すことにつながります。最終的にはユーザの判断に委ねられる問題ではありますが、これらの実害を考えるとブロックすることをおすすめします。

考えられる対策

もしブロックする場合には、ユーザの立場ごとにいくつかの対策が考えられます。まず、個人であればアンチウイルスソフトの導入です。製品によってはWebブラウザを用いた仮想通貨をマイニングするスクリプトをマルウェアとして検知できる場合があります。スマートフォンであれば、広告をブロックするアプリや設定を使うことも考えられます。企業であれば、それに加えてWebプロキシやファイアウォールなどに該当サービスとの通信をブロックするルールを追加することが考えられます。また、Webサイトの管理者であれば日頃から侵入や改ざんを防ぐための施策を実施する必要があります。具体的には、サーバのOSやアプリケーションの状態を最新に保ち、外部からアクセスできる不要なサービスを立ち上げない、WAFやIPS/IDSを導入するなどです。