Impervaは2月15日(米国時間)、「Hacking Microsoft and Wix with Keyboard Shortcuts|Imperva」において、HTMLのアンカータグ(<a>)に潜む不思議な振る舞いについて分析し、この一貫性のない動作を悪用可能か検証した結果を伝えた。
アンカータグの特徴的なふるまい
すべてのWebサイトのコンテンツは基本的にHTML(HyperText Markup Language)によって記述されている。ブラウザはWebサーバが応答するHTMLの内容に従い、画面上にコンテンツを可視化して表示する。コンテンツの制作者は他のコンテンツへのリンクとして、HTMLのアンカータグを使用することがある。
アンカータグはリンク以外にもJavaScriptのトリガーとして機能する。この場合、アンカータグのURLにJavaScript疑似プロトコルを使用する。ImpervaはアンカータグをJavaScriptのトリガーとして使用しているWebサイトにおいて、ブラウザーがJavaScriptの実行をブロックするという興味深い状況に遭遇したとして動作を分析している。
Impervaによると、この現象は「target」属性が「_blank」に設定されている場合に発生するという。この場合、リンクをクリックするとJavaScriptは実行されずに「about:blank#blocked」を表示する新しいタブが表示される。
キーボード操作により悪用可能なアンカータグ
Impervaはこの挙動にキーボード操作を加えることで悪用可能としている。ブラウザーにより多少挙動に違いはあるものの、Ctrlキーを押下しながらリンクをクリックすることでJavaScriptを正常に動作させることができる。なお、この挙動についてはDCLabsの2021年のブログ記事「DcLabs - Security Team: The curious case of XSS and the mouse middle button.」において、すでに解説されている。
これを悪用するにはユーザーによるキーボード操作を必要とするため、実用性はあまりない。オンラインゲームなどのインタラクティブな要素の一部として埋め込む場合に、無意識に操作を誘発させることはできる。
このブラウザーの動作がどのような経緯で実装されたのか、これがセキュリティ機能なのか、Impervaは判断できなかったとしてGoogleに潜在的なバグとして報告している。Googleはこの報告に対し、これはセキュリティ機能ではなく、また、アンカータグにJavaScriptを指定する使用方法は安全ではないと明言したという。
クロスサイトスクリプティング(XSS: Cross-Site Scripting)
Impervaはこの動作が実際に悪用可能であるか検証するために、Microsoftアプリポータル「myapps.microsoft.com」を使用して実験している。Microsoftアプリポータルのブックマーク作成APIにはユーザーが指定したURLを検証する実装がサーバー側にない。そこで、このURLにJavaScriptを指定してクロスサイトスクリプティングを実現し、悪用可能か実験している。
結論としては実験に成功している。ユーザーによるキーボード操作を必要とするが、Impervaはテスト用の標的を自身のアカウントにログインさせ、JavaScriptを実行してアクセストークンを窃取し、標的の個人データにアクセスしている。もっともらしいキーボード操作を要求するコンテンツを構築できれば、攻撃が行える可能性がある。
加えて、ホームページ制作プラットフォームの「Wix」にて悪用可能かどうかも検証している。こちらでもサーバ側の検証が不十分なJavaScriptを指定できるURL入力フィールドが存在しており、ユーザーのキーボード操作を誘導できれば悪用可能とされる。
対策
Impervaは「この調査結果に対処したMicrosoftおよびWixに感謝している」と述べていることから、すでにこれらサイトの脆弱性は修正されたものとみられる。また、「JavaScript URLの一貫した処理を保証するために、これを修正することは有益であるとGoogleも同意した」としており、将来的にブラウザ側でも修正される可能性があると指摘している。