👀

Chrome拡張でキーロガーが作れそうなことの確認と危険を避けるために拡張のソースを読む方法

2021/01/17に公開

Chrome拡張でamazonのURLを短くするヤツを作ったときに感じた危険を実感するために、キーロガーを実装してみました。

また、このような悪意のあるツールを避けるために、ソースを見る方法を紹介します。

キーロガーのサンプル実装

manifest.jsonは拡張の構成を記述するファイルです。
content_scriptsでページを開いたときに注入するスクリプトを指定します。
matchesで対象となるURLを指定できますが、すべてにマッチする<all_urls>も指定できます。

manifest.json
{
 // 省略
 "permissions": ["activeTab"],
  "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["contentScript.js"]
  }],
  // 省略
  "manifest_version": 2
}

今回注入したスクリプトはこれです。
keydownで打ち込まれたキーを取得し、consoleに表示しているだけですが、これを外部に流せばキー入力をどこかに伝えることができてしまいます。
便利なツールにこっそりとバンドルされたら、大変なことになりそうです。
最初は便利なツールとして広まったが、売却されてマルウェアになった、いうニュースもありました。

contentScript.js
document.addEventListener('keydown', function (e) {
  console.log(e.code);
});

Chrome拡張のソースコードを確認したい

拡張はめちゃくちゃ便利ですが、危険なこともできるので、ヤバいコードが入っていないか確認する手段を持っておきたいところです。

自PCで直接みる

Macだと~/Library/Application\ Support/Google/Chrome/Default/Extensions以下に入っています。変なアルファベットの並びのディレクトリが並んでいますが、これはインストールしている拡張のIDです。中を覗いてみるとソースが入っています。

Chrome extension source viewer (CRX Viewer)

先の方法はインストールしたあとのものでしたが…Chrome extension source viewer (CRX Viewer)はインストール前に見れます。
拡張のURLを入力して、ポチッとするだけです。

最後に

Chrome拡張は便利で、自分もいくつかインストールしています。ですが、悪意があれば悪いことも簡単にできてしまうことがわかりました。
それを避けるために、実際にインストール前後でコードを確認する方法も紹介しました。(みんなにも知らせて、目ン玉の数を増やそう!という作戦です。)

これからも楽しくChrome拡張を使っていきたいと思います。

参照

Discussion