На BHUSA 2018 Samuel Groß рассказал про атаки на JIT-компиляторы JS в браузерах.
Его исследование сфокусировано на уязвимостях в механизмах устранения избыточности(redundacy elimination) и проверках допустимости обращения к памяти (bounds checking).
Основная идея состоит в том, что можно сформировать такой код, который JIT-компилятор будет считать корректным, убрав при этом дополнительные проверки с целью оптимизации и ускорения исполнения кода. Это можно использовать, чтобы получать read/write примитивы.
Полная версия презентации: https://saelo.github.io/presentations/blackhat_us_18_attacking_client_side_jit_compilers.pdf.
Его исследование сфокусировано на уязвимостях в механизмах устранения избыточности(redundacy elimination) и проверках допустимости обращения к памяти (bounds checking).
Основная идея состоит в том, что можно сформировать такой код, который JIT-компилятор будет считать корректным, убрав при этом дополнительные проверки с целью оптимизации и ускорения исполнения кода. Это можно использовать, чтобы получать read/write примитивы.
Полная версия презентации: https://saelo.github.io/presentations/blackhat_us_18_attacking_client_side_jit_compilers.pdf.
Вы все еще не фаззите WebAssembly? Лучше поздно, чем никогда.
Natalie Silvanovich из Project Zero поделилась своими мыслями про уязвимсоти в парсинге WebAssembly-модуля:
https://googleprojectzero.blogspot.com/2018/08/the-problems-and-promise-of-webassembly.html.
Т.к. формат относительно новый, нас ждем еще много интересных багов.
Natalie Silvanovich из Project Zero поделилась своими мыслями про уязвимсоти в парсинге WebAssembly-модуля:
https://googleprojectzero.blogspot.com/2018/08/the-problems-and-promise-of-webassembly.html.
Т.к. формат относительно новый, нас ждем еще много интересных багов.
Blogspot
The Problems and Promise of WebAssembly
Posted by Natalie Silvanovich, Project Zero WebAssembly is a format that allows code written in assembly-like instructions to be run from J...
Не очень новая, но интересная подброрка материалов по уязвимостям и фаззингу браузеров:
https://github.com/Escapingbug/awesome-browser-exploit.
https://github.com/Escapingbug/awesome-browser-exploit.
GitHub
GitHub - Escapingbug/awesome-browser-exploit: awesome list of browser exploitation tutorials
awesome list of browser exploitation tutorials. Contribute to Escapingbug/awesome-browser-exploit development by creating an account on GitHub.
А Google запустил серию интересных постов из 4 частей о внутреннем устройстве Chrome: https://developers.google.com/web/updates/2018/09/inside-browser-part1.
Уже вышло 2 части, рекомендую их прочитать!
Уже вышло 2 части, рекомендую их прочитать!
Chrome for Developers
Inside look at modern web browser (part 1) | Blog | Chrome for Developers
Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline.
За 21 день ребята из x41 D-SEC GMBH провели аудит Firefox Application Update сервис, в результате нашлось 14 уязвимостей и 21 потенциальных проблем. Все обнаруженные уязвимости находятся либо в старом C-коде, либо в панели администрирования, которая назвается Balrog (https://github.com/mozilla/balrog/).
Подробности тут: https://www.x41-dsec.de/reports/X41-Balrog-Review-2018-Final-Report-Public.pdf
Ну и сама новость тут: https://blog.mozilla.org/security/2018/10/09/trusting-the-delivery-of-firefox-updates/
Подробности тут: https://www.x41-dsec.de/reports/X41-Balrog-Review-2018-Final-Report-Public.pdf
Ну и сама новость тут: https://blog.mozilla.org/security/2018/10/09/trusting-the-delivery-of-firefox-updates/
GitHub
GitHub - mozilla-releng/balrog: Mozilla's Update Server
Mozilla's Update Server. Contribute to mozilla-releng/balrog development by creating an account on GitHub.
От mailto: до RCE всего один шаг!
Замечательная бага была найдена в MS Edge, позволяющая в ссылках выполнять команды через схему wshfile: https://leucosite.com/Microsoft-Edge-RCE/
Замечательная бага была найдена в MS Edge, позволяющая в ссылках выполнять команды через схему wshfile: https://leucosite.com/Microsoft-Edge-RCE/
Leucosite
Edge RCE
(CVE-2018-8495) Chaining small bugs together to achieve RCE
В FireFox 62.0 нашли type confusion багу, приводящую к RCE (CVE-2018-12386): https://blogs.securiteam.com/index.php/archives/3765.
Когда уже они доработают и раскатят свой sandbox?)
Когда уже они доработают и раскатят свой sandbox?)
Как пофазить браузер за 60 секунд? Читайте тут: https://bugid.skylined.nl/20181017001.html
bugid.skylined.nl
Fuzz in sixty seconds
Use publicly available tools to quickly start fuzzing browsers.
Uxss мой любимый тип багов, так как он может нести в себе критичную угрозу (угон данных любого сайта или воздействие на внутренние компоненты браузера, которое может привести и к RCE), а также для его эксплуатации не надо обходить sandbox)
Отличный пример CVE-2018-6128 в WebKit, который позволял в Chrome под iOS выполнять кросс-доменные запросы к ресурсам с другим Origin’ом из-за проблемы с парсингом URL. А забавным этот пример делает видео от LiveOverflow с авторскими комментариями: https://youtu.be/0uejy9aCNbI.
Отличный пример CVE-2018-6128 в WebKit, который позволял в Chrome под iOS выполнять кросс-доменные запросы к ресурсам с другим Origin’ом из-за проблемы с парсингом URL. А забавным этот пример делает видео от LiveOverflow с авторскими комментариями: https://youtu.be/0uejy9aCNbI.
YouTube
HOW FRCKN' HARD IS IT TO UNDERSTAND A URL?! - uXSS CVE-2018-6128
URLs are surprisingly hard to read.
Chrome Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=841105
Orange Tsai: https://twitter.com/orange_8361
A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! - CODE BLUE: https://w…
Chrome Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=841105
Orange Tsai: https://twitter.com/orange_8361
A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! - CODE BLUE: https://w…
Внутри Google Chrome идёт дискуссия, закопать ли XSS-аудитор или доработать его.
Основная идея: отключить аудитор на сайтах Google, посмотреть какие метрики это затронет, дождаться пока другие большие сайты его тоже отключат и убрать этот функционал совсем.
Но может, стоит все-таки доработать? )
Подробности тут: https://bugs.chromium.org/p/chromium/issues/detail?id=898081.
P.S. Для справки, XSS-аудитор - это механизм обнаружения и предупреждения эксплуатации reflected-xss. Если браузер видит, что в запросе и ответе потенциально есть вектор атаки, он не отображает ответ, а показывает предупреждение.
Основная идея: отключить аудитор на сайтах Google, посмотреть какие метрики это затронет, дождаться пока другие большие сайты его тоже отключат и убрать этот функционал совсем.
Но может, стоит все-таки доработать? )
Подробности тут: https://bugs.chromium.org/p/chromium/issues/detail?id=898081.
P.S. Для справки, XSS-аудитор - это механизм обнаружения и предупреждения эксплуатации reflected-xss. Если браузер видит, что в запросе и ответе потенциально есть вектор атаки, он не отображает ответ, а показывает предупреждение.
Пока все готовятся к ZN, Samuel Groß выложил свой pwn2own баг-чейн для Safari->MacOS kernel https://github.com/saelo/pwn2own2018
GitHub
GitHub - saelo/pwn2own2018: A Pwn2Own exploit chain
A Pwn2Own exploit chain. Contribute to saelo/pwn2own2018 development by creating an account on GitHub.
Расширения в браузере - страшная сила! Почему? Ну хотя бы потому, что они используют API, который предоставляют браузеры. А в нем бывают разные баги: от плохо работающих пермишнов, до RCE.
Отличная и свежая подборка по ссылкам ниже:
https://leucosite.com/WebExtension-Security/
https://leucosite.com/WebExtension-Security-Part-2/
Ждём часть 3.
Отличная и свежая подборка по ссылкам ниже:
https://leucosite.com/WebExtension-Security/
https://leucosite.com/WebExtension-Security-Part-2/
Ждём часть 3.
Leucosite
WebExtension Security (Part 2)
We delve a bit deeper into WebExtension security featuring 5 bugs
Safari и беспощадный D! Отличный пример красивой и простой url spoofing баги, позволяющей нафишить много важных доменов: https://xlab.tencent.com/en/2018/11/13/cve-2018-4277/
Моя презентация c ZeroNights 2018 про то, как начать ломать браузеры, а также о том, какие баги в них сейчас ищут, доступна online: https://goo.gl/LhiYdP.
Ушла эпоха 👾
Microsoft откажется от Edge и выпустит браузер на базе Chromium
Microsoft откажется от Edge и выпустит браузер на базе Chromium
Вышел отчет 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
Теперь разработчики смогут на своем сайте ограничить небезопасную вставку содержимого в 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
web.dev
Prevent DOM-based cross-site noscripting vulnerabilities with Trusted Types | Articles | web.dev
Introducing Trusted Types: a browser API to prevent DOM-based cross-site noscripting in modern web applications.
Для тех, кто хочет искать memory corruption в Safari, но не знает, как начать, в моем архиве еще с декабря завалялся хороший 101 tutorial: http://www.auxy.xyz/tutorial/Webkit-Exp-Tutorial/.
Ну и в догонку поделюсь обновляемой подборкой материалов по всем браузерам (тут про архитектуру, pwn браузеров в рамках ctf и про разные тулзы): https://github.com/m1ghtym0/browser-pwn.
Ну и в догонку поделюсь обновляемой подборкой материалов по всем браузерам (тут про архитектуру, 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.
Мораль - анализируйте фиксы, не всегда так страшна бага, как о ней пишут.
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.
Мораль - анализируйте фиксы, не всегда так страшна бага, как о ней пишут.
Chrome Releases
Stable Channel Update for Desktop
The stable channel has been updated to 72.0.3626.121 for Windows, Mac, and Linux, which will roll out over the coming days/weeks. Secur...
Появился вариант эксплойта под 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
Сама уязвимость в методе 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
GitHub
GitHub - Cryptogenic/PS4-6.20-WebKit-Code-Execution-Exploit: A WebKit exploit using CVE-2018-4441 to obtain RCE on PS4 6.20.
A WebKit exploit using CVE-2018-4441 to obtain RCE on PS4 6.20. - Cryptogenic/PS4-6.20-WebKit-Code-Execution-Exploit
Ещё одна интересная подборка PoC’ов под memory corruption уязвимости в V8 и ChakraCore (2013 - 2019): https://github.com/tunz/js-vuln-db.
GitHub
GitHub - tunz/js-vuln-db: A collection of JavaScript engine CVEs with PoCs
A collection of JavaScript engine CVEs with PoCs. Contribute to tunz/js-vuln-db development by creating an account on GitHub.