セキュリティ研究者のRon Masas氏は11月7日、「Java(Script) Drive-By, Hacking Without 0days」において、Google Chromeに対してリモートコード実行が可能となる「JavaScript Drive-By」と呼ばれる攻撃手法とその概念実証コードを公開した。

この攻撃はFile System Access APIの1つの脆弱性に基づくものだが、悪用された場合、ユーザーが誤ったクリック操作を1回するだけでシステムを危険にさらす可能性があるという。

  • File System Access APIのファイルアクセス制限の隙を突く「JavaScript Drive-By」攻撃

    File System Access APIのファイルアクセス制限の隙を突く「JavaScript Drive-By」攻撃

1回の誤クリックが命取りになる可能性

Webサイトの管理者は、WebブラウザーのFile System Access APIを利用することで、ユーザーが選択したファイルを読み書きできる。ただし、OSのシステムリソースとみなされるファイルへのアクセスは制限されている。

macOSの場合、通常はGatekeeperをはじめとする複数のセキュリティ機能によって信頼できないソフトウェアを実行できないようになっていることに加え、App Sandboxがアプリによるシステムリソースとユーザーデータへのアクセスを制限している。しかし、ChromeのFile System Access APIではApp Sandboxを使用しておらず、独自のブロックリストに基づいてファイルとディレクトリへの書き込みアクセスする。

Ron Masas氏は、File System Access APIでこのブロックリストによる制限を回避する方法を発見したという。ただし、実際にFile System Access APIでファイルの書き込みを行うには、ユーザーが自身の手で書き込みアクセスを承認する必要がある。この承認プロセスが、攻撃を回避する唯一の防衛ラインになる。したがって、もし攻撃者が、ユーザーが誤ってアクセスを承認するシナリオを用意できれば、攻撃が成立する可能性は極めて高くなる。

2つの概念実証コードが公開

Ron Masas氏のレポートでは、自然なシナリオによってリモートコード実行が成立する2つの概念実証コードが示されている。この概念実証はmacOSを対象としたものだが、Windowsでも同様の手法によってブロックリストを回避できるという。また、ChromeだけでなくMicrosoft EdgeをはじめとするChromiumベースのブラウザも同様の問題を抱えている可能性が高い。

なお、「JavaScript Drive-By」という名称は、2000年代に流行したJavaアプレットを狙った攻撃手法である「Java Drive-By」にちなんでいる。Java Drive-Byも、ユーザーによる誤承認を誘導することで攻撃を成功させる手法だった。

Ron Masas氏のチームは、File System Access APIでブロックリストを回避する脆弱性についてGoogleに報告済みであり、Chromeチームでは修正に取り組んでいるとのこと。現時点ではまだ修正が行われていないが、すでに報告から10カ月が経過したため、詳細の解説と概念実証コードの公開に踏み切ったという。

レポートでは、ユーザーに対して、たった数回の誤ったクリックが深刻なセキュリティ問題を引き起こす可能性もあるとして、注意を怠らないように警告している。