📣 DOM-based Extension Clickjacking: ブラウザ拡張機能ã®ãƒªã‚¹ã‚¯ã¨å¯¾ç–
æ§‹é€ çš„ãƒªã‚¹ã‚¯åˆ†é¡žã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æ•™è‚²ã‚·ãƒªãƒ¼ã‚º
âš ï¸ Part 1|DOM-based Extension Clickjackingã¨ã¯ï¼Ÿ
DOM-based Extension Clickjackingã¯ã€ãƒ–ラウザ拡張機能(特ã«ãƒ‘スワード管ç†ã‚½ãƒ•ト)を悪用ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ©Ÿå¯†æƒ…å ±ã‚’ç›—ã‚€æ”»æ’ƒæ‰‹æ³•ã§ã™ã€‚ãƒã‚§ã‚³ã®ã‚»ã‚ãƒ¥ãƒªãƒ†ã‚£ç ”ç©¶è€…Marek Tóthæ°ãŒ2025å¹´8月ã®DEF CON 33ã§ç™ºè¡¨ã—ã€è©³ç´°ã‚’ブãƒã‚°ã§å…¬é–‹ã—ã¾ã—ãŸ[2]。
攻撃ã®ä»•組ã¿
- 攻撃者ãŒå½ã®Webサイトを作æˆã—ã€ãƒãƒƒãƒ—アップやCookieåŒæ„ãƒãƒŠãƒ¼ãªã©ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè‡ªç„¶ã«ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹UIè¦ç´ を表示。
- ãã®èƒŒå¾Œã«é€æ˜Žãªãƒã‚°ã‚¤ãƒ³ãƒ•ã‚©ãƒ¼ãƒ ã‚’éš ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¯ãƒªãƒƒã‚¯ã‚’誘導。
- パスワード管ç†ã‚½ãƒ•トãŒè‡ªå‹•入力を行ã„ã€å…¥åŠ›ã•ã‚ŒãŸæƒ…å ±ï¼ˆãƒã‚°ã‚¤ãƒ³æƒ…å ±ã€ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰ã€TOTPコードãªã©ï¼‰ãŒæ”»æ’ƒè€…ã®ã‚µãƒ¼ãƒãƒ¼ã«é€ä¿¡ã•れる。
- JavaScriptã§DOMæ“作を行ã„ã€æ‹¡å¼µæ©Ÿèƒ½ã®UIè¦ç´ ã‚’é€æ˜ŽåŒ–ã™ã‚‹ã“ã¨ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ°—ã¥ã‹ã‚Œãšã«æƒ…å ±çªƒå–ãŒå¯èƒ½[1]。
クリックジャッã‚ングã®ä»•組ã¿ã¨å¯¾ç–
クライアントサイド防æ¢ç–
クライアントãŒã‚¯ãƒªãƒƒã‚¯ã‚¸ãƒ£ãƒƒã‚ングã®è©¦ã¿ã‚’é˜²ãæ–¹æ³•
- フレームãƒã‚¹ãƒ†ã‚£ãƒ³ã‚°ã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè£…
- アンãƒã‚¯ãƒªãƒƒã‚¯ã‚¸ãƒ£ãƒƒã‚ングブラウザ拡張機能ã®åˆ©ç”¨
- アンãƒã‚¦ã‚¤ãƒ«ã‚¹ã‚½ãƒ•トウェアã®å°Žå…¥
攻撃ã®ä»•組ã¿ï¼ˆãƒ•ãƒãƒ¼å›³ï¼‰
クリックジャッã‚ãƒ³ã‚°æ”»æ’ƒã®æµã‚Œã‚’視覚化
攻撃者ãŒå½ã®Webサイトを作æˆã—ã€ãƒãƒƒãƒ—アップやCookieåŒæ„ãƒãƒŠãƒ¼ãªã©ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè‡ªç„¶ã«ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹UIè¦ç´ を表示
ãã®èƒŒå¾Œã«é€æ˜Žãªãƒã‚°ã‚¤ãƒ³ãƒ•ã‚©ãƒ¼ãƒ ã‚’éš ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¯ãƒªãƒƒã‚¯ã‚’誘導
パスワード管ç†ã‚½ãƒ•トãŒè‡ªå‹•入力を行ã„ã€å…¥åŠ›ã•ã‚ŒãŸæƒ…å ±ï¼ˆãƒã‚°ã‚¤ãƒ³æƒ…å ±ã€ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰ã€TOTPコードãªã©ï¼‰ãŒæ”»æ’ƒè€…ã®ã‚µãƒ¼ãƒãƒ¼ã«é€ä¿¡
JavaScriptã§DOMæ“作を行ã„ã€æ‹¡å¼µæ©Ÿèƒ½ã®UIè¦ç´ ã‚’é€æ˜ŽåŒ–ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ°—ã¥ã‹ã‚Œãšã«æƒ…å ±çªƒå–
サーãƒãƒ¼ã‚µã‚¤ãƒ‰é˜²æ¢ç–
サーãƒãƒ¼ãŒã‚¯ãƒªãƒƒã‚¯ã‚¸ãƒ£ãƒƒã‚ングã®è©¦ã¿ã‚’é˜²ãæ–¹æ³•
- X-Frame-Options ヘッダーã®è¨å®šï¼ˆDENYã¾ãŸã¯SAMEORIGIN)
- Content Security Policy (CSP) ã®å®Ÿè£…ã§ãƒ•レーム制é™
- SameSite Cookie 属性(Strict/Laxï¼‰ã®æ´»ç”¨
- HTTPS ã®å¼·åˆ¶å®Ÿè£…ã§é€šä¿¡ã®å®‰å…¨ç¢ºä¿
🔠Part 2|パスワード管ç†ã‚½ãƒ•トã®è‡ªå‹•入力挙動比較
以下ã®è¡¨ã¯ã€ä¸»è¦ãªãƒ‘スワード管ç†ã‚½ãƒ•トã®è‡ªå‹•入力挙動ã¨å®‰å…¨æ€§ã‚’比較ã—ãŸã‚‚ã®ã§ã™ã€‚
| 製å“å | クレジットカード | å€‹äººæƒ…å ± | ãƒã‚°ã‚¤ãƒ³æƒ…å ± | TOTPコード | パスã‚ー |
|---|---|---|---|---|---|
| 1Password | ✅(安全) | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック |
| Bitwarden | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 0クリック | â˜ ï¸ 1クリック |
| Dashlane | ✅(安全) | ✅(安全) | â˜ ï¸ *ï¼ˆä¸æ˜Žï¼‰ | ✅(安全) | â˜ ï¸ 1クリック |
| Enpass | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 0クリック | ✅(安全) |
| iCloud Passwords | éžå¯¾å¿œ | éžå¯¾å¿œ | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | ✅(安全) |
| Keeper | 🟧 5クリック | 🟧 5クリック | â˜ ï¸ 1クリック | â˜ ï¸ 0クリック | â˜ ï¸ 1クリック |
| LastPass | â˜ ï¸ 2クリック | â˜ ï¸ 2クリック | â˜ ï¸ 2クリック | â˜ ï¸ 0クリック* | â˜ ï¸ 1クリック |
| LogMeOnce | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック* | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック |
| NordPass | ✅(安全) | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 0クリック* | â˜ ï¸ 1クリック |
| ProtonPass | éžå¯¾å¿œ | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | ✅(安全) |
| RoboForm | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック | â˜ ï¸ 1クリック |
ã‚¢ã‚¤ã‚³ãƒ³ã®æ„味
- âœ…ï¼šå®‰å…¨ã€æ”»æ’ƒæ‰‹æ³•ã«å¯¾ã—ã¦ç„¡åŠ¹åŒ–æ¸ˆã¿ã¾ãŸã¯å½±éŸ¿ãªã—
- ☠ï¸ï¼šè„†å¼±ã€æ”»æ’ƒã«ã‚ˆã£ã¦æƒ…å ±ãŒç›—ã¾ã‚Œã‚‹å¯èƒ½æ€§ã‚り
- 🟧:æ“作ãŒè¤‡é›‘(例:5クリック必è¦ï¼‰ã ãŒã€å®Œå…¨ã«å®‰å…¨ã¨ã¯è¨€ãˆãªã„
- éžå¯¾å¿œï¼šãã®æƒ…å ±ç¨®åˆ¥ã«å¯¾ã—ã¦æ©Ÿèƒ½ãŒãªã„ï¼ä¿å˜ã§ããªã„
視覚化:脆弱性分布
👣 Part 3ï½œå½±éŸ¿ã®æ·±åˆ»åº¦ã¨å¯¾è±¡
ãªãœå±é™ºãªã®ã‹ï¼Ÿ
- ãŸã£ãŸ1ã‚¯ãƒªãƒƒã‚¯ã§æ¼æ´©ï¼šCookieãƒãƒŠãƒ¼ã‚„CAPTCHAã®ãƒœã‚¿ãƒ³ã®èƒŒå¾Œã«é€æ˜Žãªãƒã‚°ã‚¤ãƒ³ãƒ•ã‚©ãƒ¼ãƒ ã‚’éš ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¯ãƒªãƒƒã‚¯ã§è‡ªå‹•入力ãŒãƒˆãƒªã‚¬ãƒ¼ã•れる[2]。
- 対象拡張機能:Chromeã€Firefoxã€Edgeãªã©ã§åˆ©ç”¨ã•れる11種類ã®ãƒ‘スワード管ç†ã‚½ãƒ•ト(約4,000万インストール)ãŒå½±éŸ¿ã‚’å—ã‘ã‚‹[2]。
- 技術的特徴:
- DOMæ“ä½œã§æ‹¡å¼µæ©Ÿèƒ½ã®UIã‚’é€æ˜ŽåŒ–。
- XSSã‚„ã‚ャッシュãƒã‚¤ã‚ºãƒ‹ãƒ³ã‚°ã¨çµ„ã¿åˆã‚ã›ã€ä¿¡é ¼ã•れãŸã‚µã‚¤ãƒˆã§ã‚‚攻撃ãŒå¯èƒ½ã€‚
ç›—ã¾ã‚Œã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹æƒ…å ±
| 種類 | 説明 | 脆弱ãªè£½å“数(11製å“ä¸ï¼‰ |
|---|---|---|
| ãƒã‚°ã‚¤ãƒ³æƒ…å ± | ユーザーåã€ãƒ‘スワード | 10è£½å“ |
| TOTPコード | 二è¦ç´ èªè¨¼ç”¨ã®ä¸€æ™‚コード | 10è£½å“ |
| ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰æƒ…å ± | 番å·ã€æœ‰åŠ¹æœŸé™ã€CVV | 6è£½å“ |
| å€‹äººæƒ…å ± | æ°åã€ä½æ‰€ã€é›»è©±ç•ªå·ãªã© | 8è£½å“ |
| パスã‚ー | WebAuthnãªã©ã®èªè¨¼æƒ…å ± | 8è£½å“ |
â›‘ï¸ Part 4|対ç–ã¨æŽ¨å¥¨è¨å®š
ユーザーå‘ã‘対ç–
| 対ç–é …ç›® | 内容 | ãªãœæœ‰åŠ¹ã‹ |
|---|---|---|
| オートフィルã®ç„¡åŠ¹åŒ– | 自動入力をオフã«ã™ã‚‹ | 逿˜Žãªå…¥åŠ›æ¬„ã«æƒ…å ±ãŒå…¥ã‚‹ã®ã‚’防ã |
| コピー&ペーストã§å…¥åŠ› | æ‰‹å‹•ã§æƒ…å ±ã‚’å…¥åŠ› | 自動入力ãŒãƒˆãƒªã‚¬ãƒ¼ã•れãªã„ |
| 完全ãªURL一致ã§è‡ªå‹•入力 | https://example.com/login ã®ã‚ˆã†ã«å®Œå…¨ä¸€è‡´ã®ã¿è¨±å¯ | サブドメイン乗ã£å–りやå½è£…を防ã |
| 拡張機能ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’「クリック時ã€ã«è¨å®š | Chromeã‚„Edgeã§æ‹¡å¼µæ©Ÿèƒ½ã®å‹•ä½œã‚’åˆ¶é™ | æ˜Žç¤ºçš„ãªæ“作ãŒãªã„é™ã‚Šæƒ…å ±ãŒå…¥åŠ›ã•れãªã„ |
開発者å‘ã‘対ç–
- Manifest V3ã®æŽ¡ç”¨ï¼šDOMæ“作やスクリプト実行ã®åˆ¶é™ã‚’強化。
- CSP(Content Security Policyï¼‰å¼·åŒ–ï¼šä¸æ£ã‚¹ã‚¯ãƒªãƒ—トやインラインスクリプトをブãƒãƒƒã‚¯ã€‚
- 逿˜ŽåŒ–防æ¢ï¼šDOMæ“作を最å°é™ã«ã—ã€å…¥åŠ›æ¤œçŸ¥ã‚’å¼·åŒ–ã€‚
- X-Frame-Options: DENY:サイトãŒiframeã§ã®è¡¨ç¤ºã‚’ç¦æ¢ã€‚
対応状æ³ï¼ˆ2025å¹´8月時点)
- ä¿®æ£æ¸ˆã¿ï¼šDashlane (v6.2531.1)ã€Keeper (v17.2.0)ã€NordPassã€ProtonPassã€RoboFormã€Bitwarden (v2025.8.0)。
- 未修æ£ï¼š
- 1Password (v8.11.4.27):修æ£äºˆå®šãªã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ç¢ºèªå¼·åŒ–を計画。
- LastPass (v4.146.3):修æ£å„ªå…ˆåº¦ä½Žã€‚
- LogMeOnce (v7.12.4):連絡無応ç”ã€å®Œå…¨è„†å¼±ã€‚
- Enpass (v6.11.6)ã€iCloud Passwords (v3.1.25):修æ£ä½œæ¥ä¸ã€‚
🚨 推奨:最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«æ›´æ–°ã—ã€è‡ªå‹•入力を無効化。怪ã—ã„ãƒãƒƒãƒ—アップやオーãƒãƒ¼ãƒ¬ã‚¤ã«æ³¨æ„。
📵 Part 5|ユーザーã®å®Ÿè·µã‚¬ã‚¤ãƒ‰
ãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆ
- æ‹¡å¼µæ©Ÿèƒ½ã®æ¨©é™ã‚’確èªã—ã€ä¸è¦ãªã‚‚ã®ã¯ç„¡åŠ¹åŒ–ã€‚
- 怪ã—ã„サイト(ãƒãƒƒãƒ—アップã€CookieãƒãƒŠãƒ¼ã€CAPTCHAï¼‰ã«æ³¨æ„。
- 自動入力をオフã«ã—ã€ã‚³ãƒ”ー&ペーストã§å…¥åŠ›ã€‚
- 完全ãªURL一致ã®ã¿ã§è‡ªå‹•入力を許å¯ã€‚
- ãƒ–ãƒ©ã‚¦ã‚¶ã‚„æ‹¡å¼µæ©Ÿèƒ½ã‚’å¸¸ã«æœ€æ–°ã«ä¿ã¤ã€‚
- ä¿¡é ¼ã§ãるソフト(Dashlaneã€Bitwardenã€NordPassï¼‰ã‚’é¸æŠžã€‚
ãŠã™ã™ã‚è¨å®š
- Chromium系ブラウザ:拡張機能ã®ã‚µã‚¤ãƒˆã‚¢ã‚¯ã‚»ã‚¹ã‚’「クリック時ã€ã«è¨å®šã€‚
- パスワード管ç†ã‚½ãƒ•ト:強力ãªãƒžã‚¹ã‚¿ãƒ¼ãƒ‘スワードã¨2è¦ç´ èªè¨¼ã‚’è¨å®šã€‚
コメント