BrowExt - ClickJacking
基本情報
このページでは、ブラウザ拡張機能の ClickJacking 脆弱性を悪用します。 ClickJacking が何かわからない場合は、以下を確認してください:
pageClickjacking拡張機能には manifest.json
というファイルが含まれており、その JSON ファイルには web_accessible_resources
というフィールドがあります。Chrome ドキュメント によると、次のように述べています:
これらのリソースは、
chrome-extension://[PACKAGE ID]/[PATH]
という URL を介してウェブページで利用できるようになります。これはextension.getURL メソッド
で生成できます。ホワイトリストに登録されたリソースは適切な CORS ヘッダーで提供されるため、XHR などのメカニズムを介して利用できます。1
ブラウザ拡張機能内の web_accessible_resources
はウェブを介してだけでなく、拡張機能固有の権限を持って動作します。これは次のことを可能にします:
拡張機能の状態を変更する
追加のリソースを読み込む
ある程度ブラウザとやり取りする
ただし、この機能にはセキュリティリスクがあります。web_accessible_resources
内のリソースに重要な機能がある場合、攻撃者はこのリソースを外部ウェブページに埋め込む可能性があります。このページを訪れる無疑のユーザーは、この埋め込まれたリソースを誤ってアクティブ化するかもしれません。このアクティブ化によって、拡張機能のリソースの権限や機能に応じて意図しない結果が生じる可能性があります。
PrivacyBadger の例
拡張機能 PrivacyBadger では、skin/
ディレクトリが以下のように web_accessible_resources
として宣言されている脆弱性が特定されました(元の ブログ投稿 を参照してください)。
この構成は潜在的なセキュリティ問題を引き起こしました。具体的には、ブラウザでPrivacyBadgerアイコンをクリックすると表示されるskin/popup.html
ファイルがiframe
内に埋め込まれる可能性があります。この埋め込みは、ユーザーを誤って「このウェブサイトのPrivacyBadgerを無効にする」をクリックさせるよう悪用される可能性があります。このような行動により、ユーザーのプライバシーが侵害され、PrivacyBadgerの保護が無効になり、ユーザーが追跡を受ける可能性が高まります。この脆弱性の実証として、ClickJackingのビデオ例が提供されています。https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webmで確認できます。
この脆弱性に対処するために、簡単な解決策が実装されました:web_accessible_resources
のリストから/skin/*
を削除すること。この変更により、skin/
ディレクトリのコンテンツがWebアクセス可能なリソースを介してアクセスまたは操作されないようにリスクが効果的に軽減されました。
修正は簡単でした:web_accessible_resources
から/skin/*
を削除。
PoC
Metamaskの例
MetamaskのClickJackingに関するブログ投稿はこちらで見つけることができます。この場合、Metamaskは、アクセスに使用されるプロトコルが https:
または http:
(たとえば chrome:
ではない)であることを確認することで脆弱性を修正しました:
Metamask拡張機能で修正された別のClickJackingは、ページが“web_accessible_resources”: [“inpage.js”, “phishing.html”]
としてフィッシングの疑いがあると判断された場合に、ユーザーがClick to whitelistできることでした。そのページがClickjackingに対して脆弱であるため、攻撃者は被害者が気づかずにホワイトリストに登録するようにクリックさせるために通常のものを表示し、その後フィッシングページに戻ることができました。
Steam Inventory Helperの例
ブラウザ拡張機能のXSSがClickJackingの脆弱性と連鎖した方法を確認するには、次のページをチェックしてください:
pageBrowExt - XSS Example参考文献
Last updated