Br0wSec – Telegram
Br0wSec
766 subscribers
4 photos
84 links
Browser security channel (RU)
Download Telegram
Вышел отчет Chromium Security Q4. Самое интересное, что там было - представление нового API для защиты от XSS (в первую очередь от DOM-based), который называется Trusted Types.

Теперь разработчики смогут на своем сайте ограничить небезопасную вставку содержимого в DOM специальной политкой, которая активируется в CSP-заголовках. В этом случае в качестве параметров для функций (или свойств), порождающих небезопасный html (так называемые injection sinks, например, Element.innerHTML или HTMLScriptElement.src), можно будет использовать только объекты-политики, в которых можно описать реализацию санитайзинга или проверки контента, попадающего в DOM.

Подробнее можно почитать здесь: https://developers.google.com/web/updates/2019/02/trusted-types, а полную спецификацию можно найти тут: https://wicg.github.io/trusted-types/dist/spec/.

Фича пока что экспериментальная и доступна с 73 по 76 версию Chromium'a. Чтобы попасть в эксперимент надо записать свой сайт по ссылке: https://developers.chrome.com/origintrials/#/register_trial/171136785840078849
Для тех, кто хочет искать memory corruption в Safari, но не знает, как начать, в моем архиве еще с декабря завалялся хороший 101 tutorial: http://www.auxy.xyz/tutorial/Webkit-Exp-Tutorial/.

Ну и в догонку поделюсь обновляемой подборкой материалов по всем браузерам (тут про архитектуру, pwn браузеров в рамках ctf и про разные тулзы): https://github.com/m1ghtym0/browser-pwn.
1 марта появился релиз Chromium’а, где был а исправлена use-after-free увязвимость в компоненте FileReader - CVE-2019-5786.
https://chromereleases.googleblog.com/2019/03/stable-channel-update-for-desktop.html?m=1

6-7 марта поднялся хайп, многие написали, что in the wild эксплуатируется очень опасная уязвимость RCE вместе с sandbox escape’ом.

Если посмотреть фикс: https://chromium.googlesource.com/chromium/src/+/150407e8d3610ff25a45c7c46877333c4425f062, то видно, что исправлен memory corruption, а для зашиты от выхода из песочницы ничего не сделано. Это все выглядело довольно странно на фоне информационной волны.

Хорошо, что 7 марта появилась информация от Google о том, что уязвимости было 2. Одна - uaf в хромиуме, а вторая - null pointer dereference в Windows 7 x32: https://security.googleblog.com/2019/03/disclosing-vulnerabilities-to-protect.html.

Мораль - анализируйте фиксы, не всегда так страшна бага, как о ней пишут.
Появился вариант эксплойта под WebKit в PS4 для CVE-2018-4441 (работает в прошивке до версии 6.50).

Сама уязвимость в методе JSArray::shiftCountWithArrayStorage позволяет спровоцировать out of bands через манипуляцию у массива свойством length и вызовом splice().

Изначальный триггер и баг репорт: https://bugs.chromium.org/p/project-zero/issues/detail?id=1685&desc=2

Семпл эксплойта с ценными комментариями и пояснениями: https://github.com/Cryptogenic/PS4-6.20-WebKit-Code-Execution-Exploit
Ещё одна интересная подборка PoC’ов под memory corruption уязвимости в V8 и ChakraCore (2013 - 2019): https://github.com/tunz/js-vuln-db.
На этой неделе Samuel Groß из Project Zero выложил в сoverage guided фаззер для JS движков FuzzIL: https://github.com/googleprojectzero/fuzzilli.

Почитать подробнее о нем можно тут: https://saelo.github.io/presentations/offensivecon_19_fuzzilli.pdf

Теперь у Domato (https://github.com/googleprojectzero/domato) и других DOM и JS фаззеров есть серьезный конкурент.
Выложили описание довольно забавной sandbox escape уязвимости для macOS High Sierra 10.13.6.

Суть ее в том, что процесс без сендбокса может вызвать функцию CFPreferencesSetAppValue() и этим закэшировать свой статус у cfprefsd (обозначив себя как процесс без песочницы). Этот демон отвечает за обработку preferences. Таким образом, даже ограниченный процесс может потом менять свои свойства.

Забавно то, что это выстрелило для Safari, который в момент инициализации процесса рендерера не сразу погружает процесс в песочницу.

Детали эксплуатации и демо есть тут:
https://medium.com/0xcc/one-liner-safari-sandbox-escape-exploit-91082ddbe6ef
Firefox по итогам Pwn2own 2019 уже выкатила фиксы для найденных уязвимостей: https://www.mozilla.org/en-US/security/advisories/mfsa2019-09/

Фиксы CVE-2019-9810: https://github.com/mozilla/gecko-dev/commit/601d226fe3690ff57287580431fd9a937298be80, https://github.com/mozilla/gecko-dev/commit/752be3958fc6f6eb83eaa4a35fae1a99dc54746e.

Фикс CVE-2019-9813: https://github.com/mozilla/gecko-dev/commit/369406707f9fef96ac8405fb9cbb58da4bcc4f1dб.

P.S. Они отлично находятся путем поиска по Bug ID в https://github.com/mozilla/gecko-dev/
Исследователи из DrWeb обнаружили проблему в механизме обновления отдельных библиотек UcBrowser, который делал это по http вместо https, надеясь на собственный протокол шифрования. Подпись устанавливаемых с сервера библиотек не проверялась. Это позволяло с помощью MitM’а загружать и выполнять свой код на Android устройствах пользователей.

Видео с демонстрацией: https://youtu.be/Nfns7uH03J8

Полное описание проблемы тут:
https://vms.drweb.ru/search/?q=UC%20Browser
Появились слайды с Zer0con про устройство и уязвимости TurboFan - JavaScript компилятора в V8.

https://docs.google.com/presentation/d/1DJcWByz11jLoQyNhmOvkZSrkgcVhllIlCHmal1tGzaw
Появился PoC для use after free под FireFox (CVE-2018-18500). Интересно в нем то, что он использует задержку по времени ответа со стороны веб-сервера.

https://github.com/sophoslabs/CVE-2018-18500/
Ребята из Google выложили первоклассное и наиболее полное исследование про Uxss в Chromium.

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

Читать тут: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/f5a8289d4f69e9e34b38a1e7c05ef4818b22cd5b.pdf
Ребята из Project Zero выложили пост про технику sandbox escaping’a в Chromium через MojoJs биндинги:
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html?m=0

Хорошая иллюстрация того, что выйти из песочницы у современного Chromium’а не так-то просто. Нужен arbitary read/write, несколько видов спреинга разными объектами и rop.

Полный код fullchain сплойта на базе CVE-2019-5782 можно посмотреть тут: https://bugs.chromium.org/p/project-zero/issues/detail?id=1755#c3
Еще одна атака с использованием CSS была в FF. Интересно то, что благодаря HTTP/2 эксплойт срабатывает очень быстро, без необходимости держать пользователя на странице.

https://research.securitum.com/css-data-exfiltration-in-firefox-via-single-injection-point/
Забавный, но действенный шаг. Многие сайты собирают информацию о браузере и окружении (WebRTC, Canvas и вот это вот все, например, с помощью популярной fingerprintjs). Но браузер Brave решил генерить фингерпринты на лету и из коробки.

https://brave.com/whats-brave-done-for-my-privacy-lately-episode3/
Сафари крутой!
Можно было сделать кнопку «Поделиться», отправив ссылку другу, а на деле прикрепив локальные файлы 🤷🏻‍♂️

https://blog.redteam.pl/2020/08/stealing-local-files-using-safari-web.html
Тут состряпали 1day эксплойт на CVE-2020-6507: Out of bounds write in V8.
Chrome <= 83.0.4103.61

https://github.com/r4j0x00/exploits/tree/master/chrome-exploit