開発フレームワークElectronのエクスプロイトでWebとモバイルの人気アプリが危険

広く使われているクロスプラットホームな開発フレームワークElectronのセキュリティチェックをバイパスするエクスプロイトが登場した。Trustwaveがポストしたそのエクスプロイトはすでにパッチされたので、デベロッパーは自分のアプリケーションを早急にアップデートすべきである。

そのエクスプロイトは一部のアプリケーションでnodeIntegrationの設定によりクロスサイトスクリプティングを可能にする。このメソッドでアプリケーションは自分のモジュールに接続できるだけでなく、Node.jsのモジュールにも接続できるようになる。

発表から引用しよう:

Electronのアプリケーションは基本的にWebアプリケーションであり、したがってユーザーの入力を正しく無害化できなかった場合にはクロスサイトスクリプティング(XSS)攻撃に対し無防備になる。Electronのデフォルトのアプリケーションは自分のAPIだけでなくNode.jsのすべての内蔵モジュールへのアクセスを含んでいる。そのためXSSの危険性は大きく、犯人のペイロードはchild_processモジュールにおけるrequireなどの悪質なことができるようになり、クライアントサイドでシステムコマンドを実行する。Atomには少し前からまさにそれをするXSS脆弱性があった。アプリケーションのwebPreferencesにnodeIntegration: falseを渡すことにより、Node.jsへのアクセスを削除できる。

Discord, Signal, Visual Studio Code, それにGithubなど、多くの人気アプリケーションがElectronを使っている。Slackも、そのアプリケーションにElectronを使っている。

そのエクスプロイトはnodeIntegrationの設定と新しいウィンドウを開くプロセスに依存している。多くの場合nodeIntegrationはfalseに設定されているが、たまたまnodeIntegrationをtrueに設定すれば、child_processモジュールを呼び出すなどの悪質なスクリプトを通してしまい、そいつはspawnのようなシステムコールにより、オペレーティングシステムのコマンドを実行できるようになる。

ElectronのWebサイトがここにあり、アップデートに関するブログ記事はここだ。このプラットホームを最近の数週間以内にアップグレードしていれば、多くのアプリケーションが無事だろう。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa