BrowExt - ClickJacking

Support HackTricks

基本情報

このページでは、ブラウザ拡張機能のClickJacking脆弱性を悪用します。 ClickJackingが何か分からない場合は、以下を確認してください:

Clickjacking

拡張機能には**manifest.json**ファイルが含まれており、そのJSONファイルにはweb_accessible_resourcesフィールドがあります。以下はChromeのドキュメントに記載されている内容です:

これらのリソースは、URL **chrome-extension://[PACKAGE ID]/[PATH]を介してウェブページで利用可能になり、これはextension.getURL method**を使用して生成できます。許可されたリソースは適切なCORSヘッダーで提供されるため、XHRなどのメカニズムを介して利用可能です。1

ブラウザ拡張機能の**web_accessible_resources**は、単にウェブを介してアクセス可能なだけでなく、拡張機能の固有の権限で動作します。これは、以下のことが可能であることを意味します:

  • 拡張機能の状態を変更する

  • 追加のリソースを読み込む

  • 一定の範囲でブラウザと相互作用する

しかし、この機能はセキュリティリスクをもたらします。**web_accessible_resources**内のリソースに重要な機能がある場合、攻撃者はこのリソースを外部ウェブページに埋め込む可能性があります。このページを訪れる無防備なユーザーは、意図せずにこの埋め込まれたリソースをアクティブにするかもしれません。このようなアクティベーションは、拡張機能のリソースの権限と機能に応じて、意図しない結果を引き起こす可能性があります。

PrivacyBadgerの例

拡張機能PrivacyBadgerでは、skin/ディレクトリが以下のようにweb_accessible_resourcesとして宣言されていることに関連する脆弱性が特定されました(元のブログ投稿を確認してください):

"web_accessible_resources": [
"skin/*",
"icons/*"
]

この設定は潜在的なセキュリティ問題を引き起こしました。具体的には、ブラウザのPrivacyBadgerアイコンとのインタラクション時にレンダリングされるskin/popup.htmlファイルがiframe内に埋め込まれる可能性があります。この埋め込みは、ユーザーを欺いて「このウェブサイトのPrivacyBadgerを無効にする」を誤ってクリックさせるために悪用される可能性があります。このような行動は、PrivacyBadgerの保護を無効にし、ユーザーを追跡の増加にさらすことで、ユーザーのプライバシーを侵害します。このエクスプロイトの視覚的デモは、https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webmで提供されているClickJackingのビデオ例で見ることができます。

この脆弱性に対処するために、簡単な解決策が実施されました:web_accessible_resourcesのリストから/skin/*を削除しました。この変更により、skin/ディレクトリのコンテンツにウェブアクセス可能なリソースを通じてアクセスまたは操作できないようにすることで、リスクが効果的に軽減されました。

修正は簡単でした:web_accessible_resourcesから/skin/*を削除する

PoC

<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->

<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}

#stuff {
float: top;
position: absolute;
}

button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}

</style>

<div id="stuff">
<h1>
Click the button
</h1>
<button id="button">
click me
</button>
</div>

<iframe src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>

Metamaskの例

MetamaskにおけるClickJackingに関するブログ記事はこちらにあります。この場合、Metamaskは、アクセスに使用されるプロトコルが**https:またはhttp:であることを確認することで脆弱性を修正しました(例えばchrome:**ではありません):

Metamask拡張機能で修正された別のClickJackingは、ユーザーが“web_accessible_resources”: [“inpage.js”, “phishing.html”]のためにフィッシングの疑いがあるページでホワイトリストに追加するためにクリックできたことです。そのページはClickjackingに対して脆弱であったため、攻撃者は被害者が気づかずにホワイトリストに追加するためにクリックするように、何か普通のものを表示して悪用することができ、その後フィッシングページに戻ることができました。

Steam Inventory Helperの例

ブラウザ拡張機能におけるXSSClickJacking脆弱性とどのように連鎖しているかを確認するには、以下のページをチェックしてください:

BrowExt - XSS Example

参考文献

HackTricksをサポートする

Last updated