Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ブラウザ拡張のセキュリティの話 / Browser Extension Security

ブラウザ拡張のセキュリティの話 / Browser Extension Security

公開社内勉強会 vol.4 (https://flatt.connpass.com/event/373356/) における @ei @canalun の登壇資料です。

Avatar for GMO Flatt Security

GMO Flatt Security

November 26, 2025
Tweet

More Decks by GMO Flatt Security

Other Decks in Technology

Transcript

  1. Attack Surfaceとしてのブラウザ拡張 ブラウザ拡張はAttack Surfaceとして注目され始めている 設定次第(後述)だが、掌握できれば強い権限が持てる LayerXが自社ユーザー企業を対象に行った調査 “99% of enterprise users

    have a browser extension installed in their browsers, and more than half (52%) of employees have more than 10 extensions installed. This means that browser extensions are a threat surface that touches almost every single enterprise employee.”
 (LayerX Enterprise Browser Extension Security Report 2025) 実際、1PasswordやMetamaskでClickjackingが見つかっている
  2. 拡張を構成する主なコンポーネント service worker (background) content script options page popups (他にもDevTools

    Panelの追加ができたり、アドレスバーでのサジェストができ たり、、、今回は時間の都合で省略します)
  3. 各コンポーネントがやりとりする方法 Main WorldのContent Script ↔ Isolated WorldのContent Script DOMを介したメッセージング(e.g. message

    eventやcustom event) SW / Options page / Popups → Content Script tabs.sendMessage Content Script → SW / Options page / Popups runtime.sendMessage SW / Options page / Popups ↔ SW / Options page / Popups runtime.sendMessage
  4. 権限と、できるようになること tabs: タブの取得や操作 storage: 拡張ストレージの使用 notifications: 通知機能の使用 などなど。種類が尋常でなく多い 使うAPIに合わせて、
 権限をmanifest.jsonで宣言する

    いくつかの拡張APIは使用に権限が求められる ストアでユーザーが権限を確認して 自己責任でインストールする brick break anywhereの例: https://chromewebstore.google.com/detail/brick-break-anywhere/lkbkphlgmknnachlgmbdmoepfnfdeckb
  5. 1Passwordの例: https://chromewebstore.google.com/detail/1password-%E2%80%93-password-mana/aeblfdkhhhdcdjpifhhbdiojplfjncoa web accessible resource = webページから読み込めるリソース 1Passwordなんかはページ上にアイコンを表示する このアイコンはDOMに埋め込まれている つまり、webページのDOMは、


    拡張が提供する画像アイコンにアクセスできる 拡張が提供するリソースで、
 webページからアクセスできるものを
 web accessible resourceと呼ぶ 他にもスクリプト(jsファイル)など色々ある