セキュリティアナリストからみたコインマイニング

色々話題になっているのですが、セキュリティアナリストとしてなかなかに扱いに困る事例なので、頭の整理のために書き殴り。

目下話題となっている"無断でマイニング"は、セキュリティ界隈では"Drive-by mining"と呼ばれています。

blog.malwarebytes.com

Webサイトにコインマイニング用スクリプトを埋め込んでおき、そこにアクセスしてきたユーザーのブラウザが読み込み、そのPCのリソースでマイニングさせる仕組みのことを指します。

この手法が現れる数年前から、コインマイニング自体はマルウェアの感染挙動として観測されています。

日本でも約3,000台の感染が確認された脅威 「ビットコイン発掘不正プログラム」 とは | トレンドマイクロ セキュリティブログ

こちらは、挙動としてはいわゆる世間一般的なコンピューターウイルスのイメージそのもので、PCに感染、常駐しマイニングし続けます。PCだけでなくサーバもターゲットであり、Linuxで動作するものも存在します。"Wannacry"と同じ手法で感染拡大を試みたことで少し話題になった"Adylkuzz"もこの類のものです。

こういった旧来のコインマイナーは感染している限りユーザーの意図と関係なくPCあるいはサーバーのリソースを食い続けますが、"Drive-by mining"によるコインマイナーはあくまで該当のWebサイトを表示している時だけ発動するという違いがあります

前者の旧来型コインマイナーはまだ「悪意がある」と言いやすいと思いますが、後者はどうでしょうか。日本人マルウェア開発者インタビューの話が頭をよぎります…「善意の」マイナーは存在しないのか。

ここでイケダハヤト氏の話題が飛び込んできました。

www.ikedahayato.com

Coinlab(世界的にはCoinhiveが有名)などですでにサービス展開されている仕組みを活用したものですが、こういったサービスが「悪意」のみで成り立っていると断言できる人はいないと思います。

個人レベルでは「これはちょっとお小遣いが稼げるかも」程度の話かもしれませんが、広告収入の代替手段として収益モデルを変えられるのではないかというところまで話はすでに進んでいます。("Minertisement"と言ったところでしょうか)

gigazine.net

「サイト運営継続のため、コインマイニングにご協力ください」、「コインマイニングを許可するとアプリ内の広告が非表示になります」、「本サイトに5分滞在すると有料記事が一つ無料で読めます」、「○○党は公式サイトでのコインマイニングによる個人献金を受け付けています」などなど、色々な発展形が想像できますね。

そしてこれらは「悪意」と断罪することはできません。ご多分に漏れず、"Drive-by mining"もまた善にも悪にもなります。

その境界線のひとつとして、イケダハヤト氏の話題にも含まれていますが、「無断かそうでないか」があると思います。実行の確認があって選択可能であれば、ユーザーの心理的な面、嫌な感じ、なんか怖い、という部分は低減できるのかもしれません。

でも本当の「悪意」はいちいち事前に確認してくれたりしないし、あるいは「善意のふりをする」のが現実なので、お行儀の悪いサイトは知らぬ間に相当な数になっていくだろうなと。そのときの防御策って何かないのかなというと、ここのところはアンチウイルスソフトが一部のマイナーをブロックしてくれています。

ところが、このやり方は「善意」も一緒に排除する可能性が高い…セキュリティ製品である程度検知することは可能ですがそれらを一律に「悪意」とみなし「排除」してしまってよいのかという問題は無視できない部分があるかもしれません。(排除、というとどこかの知事を連想しますが…)。

セキュリティ製品はさすがにコインマイナーが提供されている"意図"を汲んだりはできません。もしかしたら貧困に喘ぐ子供達救うためのマイニング施策かもしれないのに「排除」対象となりえます。

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

Webサイトの改ざんに伴う仮想通貨マイニングスクリプトの埋め込み事例 – wizSafe Security Signal -安心・安全への道標- IIJ

とありますが、その判断も難しくなっていくかもしれません。マイニングサービス提供者は「善意」が排除されないよう、アンチウイルスソフトによる検知を回避する手段として難読化を行うことは容易に想像がつきます。

となると、はやり最終的な判断はユーザーに委ねられてしまいます。その仕組みとして、技術的にはブラウザに期待したいところもあります。最近のブラウザはポップアップウインドウの許可とか、位置情報取得の許可とか、きちんとWebサイト側が使おうとしている機能に反応して、ユーザーに選択の余地を与えてくれています。コインマイナーの場合、より高速な処理をさせるたに"WebAssembly"を利用しているケースがあるようですが、この"WebAssembly"を使う際に、それを許可するかどうかブラウザが問いかけてくれればユーザーが選択可能な世界になっていくかもしれません

WebAssembly - Wikipedia

でもそれはこれからの話。現実的に今この瞬間に選べる手段としては

許可していないサイトの暗号マイニングツールを無効化できるブラウザ拡張機能『NoCoin』をインストールしましょう。開発者のRafael Keradimasが制作したNoCoinは、仮想通貨をマイニングしたり、コンテンツを収益化したりする問題を解決します。

ハッカーがあなたのブラウザを利用して、仮想通貨をマイニングしているかもしれない | ライフハッカー[日本版]

とあるように、ブラウザの拡張機能などで自衛する方法があります。(企業においては、プロキシやファイアウォールで止める方がやりやすいかもしれませんが、マイニングスクリプトはGithub上に様々な種類が転がっており、どこにでも設置できるのでイタチごっこは不可避です…)

ちなみに執筆時点で、Chromeウェブストアで「coin block」で検索すると、それらしい拡張機能が10種類以上出てきます。

coin blockers

さて、これらはすべて「善意の」拡張機能と言えるのでしょうか…

コインマイニングという目の前の「悪意かもしれないもの」にとらわれすぎて、うっかり変な拡張機能や偽セキュリティソフトをインストールし、「本物の悪意」に見舞われ、アカウント情報が盗まれたり、バックドアが仕込まれたり、より深刻な被害が起こらないことを祈るばかりです。