38 часов назад открыли детали интересной use after free баги в Jit V8 (CVE-2017-15399) с PoC, который умеет вызвать калькулятор в Chromium (если конечно запустить браузер с опцией —no-sandbox). Подробности тут: https://bugs.chromium.org/p/chromium/issues/detail?id=776677.
Forwarded from r0 Crew (Channel) (dukeBarman)
Но PoC для use after free баги в Jit V8 (CVE-2017-15399) можно было найти и раньше.
Вспоминаем недавнюю утилиту https://github.com/andreyka/chromium_bug_search и повторяем сценарий, но уже для этой CVE.
ID тикета мы бы получили из новости об этом релизе https://chromereleases.googleblog.com/2017/11/stable-channel-update-for-desktop.html, которая была опубликована 6 Ноября.
Указываем ID тикета и что мы ищем ошибку в v8:
```python console.py -b 776677 -p v8 -r master
[+] Commit found:
https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b```
В итоге попадаем в коммит https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b, где видим готовый JS PoC - https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b/test/mjsunit/regress/wasm/regress-776677.js, который был опубликован 23 Октября
#expdev #uaf #chrome
Вспоминаем недавнюю утилиту https://github.com/andreyka/chromium_bug_search и повторяем сценарий, но уже для этой CVE.
ID тикета мы бы получили из новости об этом релизе https://chromereleases.googleblog.com/2017/11/stable-channel-update-for-desktop.html, которая была опубликована 6 Ноября.
[776677] High CVE-2017-15399: Use after free in V8
Указываем ID тикета и что мы ищем ошибку в v8:
```python console.py -b 776677 -p v8 -r master
[+] Commit found:
https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b```
В итоге попадаем в коммит https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b, где видим готовый JS PoC - https://chromium.googlesource.com/v8/v8/+/5f960dfc06a7c95af69e2b09f772b2280168469b/test/mjsunit/regress/wasm/regress-776677.js, который был опубликован 23 Октября
#expdev #uaf #chrome
GitHub
GitHub - andreyka/chromium_bug_search: Simple commit search utility for Chromium Google Source.
Simple commit search utility for Chromium Google Source. - andreyka/chromium_bug_search
2 дня назад вышел новый отчет об улучшениях в безопасности Chromium'а, которые были сделаны в Q4 2017 года
Что там интересного:
- начиная с версии 63, у Chromium работает блокировка Cross-Site документов (HTML, XML и JSON), если включен режим site-isolation (http://www.chromium.org/developers/design-documents/blocking-cross-site-documents);
- также с 63 версии https://accounts.google.com теперь работает в выделенном рендререре;
- в Google начали разрабатывать Mac Sandbox V2, в котором так называемая warmup phase в macOS, которая сейчас будет работать уже в sandbox'е (https://chromium.googlesource.com/chromium/src.git/+/master/sandbox/mac/seatbelt_sandbox_design.md);
- c 23 ноября на 100% пользователей выкатили новый Chrome Cleanup Tool, улучшенный антивирусными технологиями ESET.
Полный отчет можно прочитать тут: https://dev.chromium.org/Home/chromium-security/quarterly-updates#TOC-Q4-2017
Что там интересного:
- начиная с версии 63, у Chromium работает блокировка Cross-Site документов (HTML, XML и JSON), если включен режим site-isolation (http://www.chromium.org/developers/design-documents/blocking-cross-site-documents);
- также с 63 версии https://accounts.google.com теперь работает в выделенном рендререре;
- в Google начали разрабатывать Mac Sandbox V2, в котором так называемая warmup phase в macOS, которая сейчас будет работать уже в sandbox'е (https://chromium.googlesource.com/chromium/src.git/+/master/sandbox/mac/seatbelt_sandbox_design.md);
- c 23 ноября на 100% пользователей выкатили новый Chrome Cleanup Tool, улучшенный антивирусными технологиями ESET.
Полный отчет можно прочитать тут: https://dev.chromium.org/Home/chromium-security/quarterly-updates#TOC-Q4-2017
В Project Zero нашли интересный способ обойти sandbox Chromium'а.
Они обнаружили, что из рендерера в sandboх'е можно было вызвать интерфейс filesystem::mojom::Directory, который предоставлялся сервисом "catalog" и был инициализирован неправильно.
В частности, в Linux возможно было получить доступ к директории с бинарником браузера.
Подробности тут: https://bugs.chromium.org/p/project-zero/issues/detail?id=1450.
Фикс, который сделали в Chromium'е тут: https://chromium-review.googlesource.com/c/chromium/src/+/804397.
Они обнаружили, что из рендерера в sandboх'е можно было вызвать интерфейс filesystem::mojom::Directory, который предоставлялся сервисом "catalog" и был инициализирован неправильно.
В частности, в Linux возможно было получить доступ к директории с бинарником браузера.
Подробности тут: https://bugs.chromium.org/p/project-zero/issues/detail?id=1450.
Фикс, который сделали в Chromium'е тут: https://chromium-review.googlesource.com/c/chromium/src/+/804397.
Ivan Fratric удачно пофаззил WebKit и сегодня открыл детали сразу по двум use after free багам:
https://bugs.chromium.org/p/project-zero/issues/detail?id=1465;
https://bugs.chromium.org/p/project-zero/issues/detail?id=1477. В последнем Safari у меня уже не работает.
https://bugs.chromium.org/p/project-zero/issues/detail?id=1465;
https://bugs.chromium.org/p/project-zero/issues/detail?id=1477. В последнем Safari у меня уже не работает.
Пока я был в небольшом творческом отпуске, в Chromium'e, FF и MS Edge нашли новый вид browlock'а.
Информация о том, что атаку уже используют ITW пришла от Malwarebytes еще в начале февраля (https://blog.malwarebytes.com/malwarebytes-news/2018/02/tech-support-scammers-find-new-way-jam-google-chrome/).
Для справки. Browlock - атака на браузер, при которой отдельная вкладка (или даже весь браузерный UI) не закрывается до тех пор, пока пользователь не выполнит нужное атакующему действие: например, выполнить денежный перевод, установить в браузер расширение и т.п.
Интересна вся эта история тем, что для блокировки закрытия вкладки используются не модальные окна (с которыми браузеры научились бороться, показывая соответствующую галочку о запрете их создания), а множественная загрузка файлов, которая формирует IPC-флуд и подвешивает UI браузера.
Детали и PoC для Chromium есть тут: https://bugs.chromium.org/p/chromium/issues/detail?id=809775, в 65 версии хрома (которая пока еще в бете) блокировка уже не воспроизводится. Причем атака срабатывает, даже если пользователь не разрешил странице загружать несколько файлов одновременно.
Для Firefox тут (та же самая техника, что и в Chromium):
https://bugzilla.mozilla.org/show_bug.cgi?id=1438214
https://bugzilla.mozilla.org/attachment.cgi?id=8950967&action=edit
Для атак на Edge и IE используется функция:
но мои тесты показали, что поведение данного концепта в Edge (как и в FF) сильно зависит от версии и мощности компьютера, в старых версиях у меня просто подвисал интерфейс, но через некоторое время закрыть вкладку было можно.
Для Safari данный метод не является актуальным - блокировки интерфейса не происходит.
Информация о том, что атаку уже используют ITW пришла от Malwarebytes еще в начале февраля (https://blog.malwarebytes.com/malwarebytes-news/2018/02/tech-support-scammers-find-new-way-jam-google-chrome/).
Для справки. Browlock - атака на браузер, при которой отдельная вкладка (или даже весь браузерный UI) не закрывается до тех пор, пока пользователь не выполнит нужное атакующему действие: например, выполнить денежный перевод, установить в браузер расширение и т.п.
Интересна вся эта история тем, что для блокировки закрытия вкладки используются не модальные окна (с которыми браузеры научились бороться, показывая соответствующую галочку о запрете их создания), а множественная загрузка файлов, которая формирует IPC-флуд и подвешивает UI браузера.
Детали и PoC для Chromium есть тут: https://bugs.chromium.org/p/chromium/issues/detail?id=809775, в 65 версии хрома (которая пока еще в бете) блокировка уже не воспроизводится. Причем атака срабатывает, даже если пользователь не разрешил странице загружать несколько файлов одновременно.
Для Firefox тут (та же самая техника, что и в Chromium):
https://bugzilla.mozilla.org/show_bug.cgi?id=1438214
https://bugzilla.mozilla.org/attachment.cgi?id=8950967&action=edit
Для атак на Edge и IE используется функция:
navigator.msSaveOrOpenBlob()
но мои тесты показали, что поведение данного концепта в Edge (как и в FF) сильно зависит от версии и мощности компьютера, в старых версиях у меня просто подвисал интерфейс, но через некоторое время закрыть вкладку было можно.
Для Safari данный метод не является актуальным - блокировки интерфейса не происходит.
Malwarebytes
Tech support scammers find new way to jam Google Chrome (updated)
Update (2018-06-22): The bug was reintroduced in Chrome 67.0.3396.87, but fixed again. Update (2018-02-07): This issue with Google Chrome was reported here and...
На днях твиттер принес упоминание об очень забавном тикете в Chromium:
https://bugs.chromium.org/p/chromium/issues/detail?id=588766. Суть в том, что можно задетектить использование инкогнито вкладки, подключив на страницу ресурс из расширения, которое в икогнито не работает по умолчанию. Тогда, через onerror обработчик, можно ловить факт того, что ресуср не загрузился, а значит - пользователь во вкладке инкогнито.
Вообще-то во многих браузерах (кроме Safari версии 11+, браузеров под Apple iOS и Firefox Focus) обнаружить инкогнито при первом же посещении сайта можно через JavaScript API. Хороший PoC есть тут: https://jsfiddle.net/wsk6m6rc/.
https://bugs.chromium.org/p/chromium/issues/detail?id=588766. Суть в том, что можно задетектить использование инкогнито вкладки, подключив на страницу ресурс из расширения, которое в икогнито не работает по умолчанию. Тогда, через onerror обработчик, можно ловить факт того, что ресуср не загрузился, а значит - пользователь во вкладке инкогнито.
Вообще-то во многих браузерах (кроме Safari версии 11+, браузеров под Apple iOS и Firefox Focus) обнаружить инкогнито при первом же посещении сайта можно через JavaScript API. Хороший PoC есть тут: https://jsfiddle.net/wsk6m6rc/.
jsfiddle.net
Edit fiddle - JSFiddle
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
Google объявил о запуске кампании по блокировке загрузки данных с веб-ресурсов, обладающих сертификатам, выданными Symantec или ее дочерними брендами: Thawte, RapidSSL,GeoTrust, VeriSign и Equifax.
Начиная с 66 версии Chromium, браузер начнёт показывать ошибку для сайтов с сертификатами, выпущенными до 1 июля 2016. А уже на 70 версии Chromium (бета-версия которой ожидается в сентябре) после 20 июля 2018 года браузер не будет доверять всем сертификатам Symantec независимо от даты выпуска.
Подробности тут: https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html?m=1
Начиная с 66 версии Chromium, браузер начнёт показывать ошибку для сайтов с сертификатами, выпущенными до 1 июля 2016. А уже на 70 версии Chromium (бета-версия которой ожидается в сентябре) после 20 июля 2018 года браузер не будет доверять всем сертификатам Symantec независимо от даты выпуска.
Подробности тут: https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html?m=1
Googleblog
Distrust of the Symantec PKI: Immediate action needed by site operators
Posted by Devon O’Brien, Ryan Sleevi, Emily Stark, Chrome security team Update October 17, 2018 : Chrome 70 has now been released to the...
Firefox вслед за Chromium объявил о предупреждениях и блокировке ресурсов с сертификатами от Symantec.
С мая 2018 Firefox, начиная с версии 60, будет предупреждать о переходе на незащищенные веб ресурсы с сертификатами, выпущенными до 01.06.2016. С октября на версии 63 предупреждение будет активно для всех сертификатов Symantec.
Новость есть тут: https://blog.mozilla.org/security/2018/03/12/distrust-symantec-tls-certificates/
Ждём реакции Microsoft Edge =)
С мая 2018 Firefox, начиная с версии 60, будет предупреждать о переходе на незащищенные веб ресурсы с сертификатами, выпущенными до 01.06.2016. С октября на версии 63 предупреждение будет активно для всех сертификатов Symantec.
Новость есть тут: https://blog.mozilla.org/security/2018/03/12/distrust-symantec-tls-certificates/
Ждём реакции Microsoft Edge =)
Mozilla Security Blog
Distrust of Symantec TLS Certificates
A Certification Authority (CA) is an organization that browser vendors (like Mozilla) trust to issue certificates to websites. Last year, Mozilla published and discussed a ...
Есть такая интересная технология для трекинга пользователей браузера - HSTS Super Cookie.
Она была описана еще в стандарте HSHTS: https://tools.ietf.org/html/rfc6797#section-14.9, а особенно интересна тем, что подходит для трекинга пользователей в приватном / инкогнито-режиме.
Суть в том, что веб-сайт может подгружать набор https-подресурсов, которые отдают HSTS-заголовки. Браузер пользователя, который зашел на сайт первый раз, получает эти заголовки и запоминает, что в дальнейшем на эти подресурсы надо ходить только по https, даже если в URI будет ссылка со схемой http. Соответственно, веб-сайт может таким образом задать в hsts-кэше некоторый уникальный идентификатор пользователя (закодировав его последовательностью hsts-поддоменов), который потом всегда сможет восстановить. Подробнее про механику трекинга написано тут: https://security.stackexchange.com/questions/79518/what-are-hsts-super-cookies
Интересно, что с такой идентификацией пользователя стал бороться WebKit. 16 марта они объявили, что теперь HSTS-флаг будет сохраняться в кэше браузера для веб-ресурсов, на которые непосредственно был выполнен переход (URL попал в адресную строку) или сделан редирект: https://webkit.org/blog/8146/protecting-against-hsts-abuse/. А еще у WebKit есть технология ITP (Intelligent Tracking Prevention https://webkit.org/blog/8142/intelligent-tracking-prevention-1-1/). Она очищает и не позволяет обновлять third-party-cookies веб-сайтов, которые не посещают пользователи. Теперь для ресурсов, которые блокируются ITP не будет кэшироваться HSTS.
Остальные браузеры пока что просто предлагают пользователям блокировать third-party cookies: https://www.maketecheasier.com/disable-third-party-cookies-chrome-firefox/
Она была описана еще в стандарте HSHTS: https://tools.ietf.org/html/rfc6797#section-14.9, а особенно интересна тем, что подходит для трекинга пользователей в приватном / инкогнито-режиме.
Суть в том, что веб-сайт может подгружать набор https-подресурсов, которые отдают HSTS-заголовки. Браузер пользователя, который зашел на сайт первый раз, получает эти заголовки и запоминает, что в дальнейшем на эти подресурсы надо ходить только по https, даже если в URI будет ссылка со схемой http. Соответственно, веб-сайт может таким образом задать в hsts-кэше некоторый уникальный идентификатор пользователя (закодировав его последовательностью hsts-поддоменов), который потом всегда сможет восстановить. Подробнее про механику трекинга написано тут: https://security.stackexchange.com/questions/79518/what-are-hsts-super-cookies
Интересно, что с такой идентификацией пользователя стал бороться WebKit. 16 марта они объявили, что теперь HSTS-флаг будет сохраняться в кэше браузера для веб-ресурсов, на которые непосредственно был выполнен переход (URL попал в адресную строку) или сделан редирект: https://webkit.org/blog/8146/protecting-against-hsts-abuse/. А еще у WebKit есть технология ITP (Intelligent Tracking Prevention https://webkit.org/blog/8142/intelligent-tracking-prevention-1-1/). Она очищает и не позволяет обновлять third-party-cookies веб-сайтов, которые не посещают пользователи. Теперь для ресурсов, которые блокируются ITP не будет кэшироваться HSTS.
Остальные браузеры пока что просто предлагают пользователям блокировать third-party cookies: https://www.maketecheasier.com/disable-third-party-cookies-chrome-firefox/
Information Security Stack Exchange
What are HSTS Super Cookies?
A few questions :
What are HSTS super cookie?
How do they work?
Why is possible to access them from multiple domains?
Do I have to worry and if yes, how to mitigate their effect?
Sources
http:...
What are HSTS super cookie?
How do they work?
Why is possible to access them from multiple domains?
Do I have to worry and if yes, how to mitigate their effect?
Sources
http:...
Команда безопасности Mozilla выложила в open source библиотеку Octo, которую можно использовать для разработки фаззеров JavaScript: https://github.com/MozillaSecurity/octo/blob/es6/README.md
Поиграться с ней можно прямо тут: https://npm.runkit.com/@mozillasecurity/octo
Поиграться с ней можно прямо тут: https://npm.runkit.com/@mozillasecurity/octo
Нашёл в интернете гайд по полезным фичам Developers Tools для разных браузеров, которые могут пригодиться пентестерам: http://www.getmantra.com/web-app-security-testing-with-browsers/. Еnjoy.
safetyscience.info
Web app security testing with browsers
A guide on using browser dev-tools for performing web app pentesting
На Zer0Con 2018 (zer0con.org) @singi21a из Theori рассказал о технике sandbox bypass в WebKit через ipc с WindowServer в macOS. Материалы и примеры кода можно найти тут: https://github.com/theori-io/zer0con2018_singi.
Атаки на GPU IPC становятся классикой в области обхода браузерных песочниц. В том году на той же конференции был похожий, но закрытый доклад от lokihardt.
Атаки на GPU IPC становятся классикой в области обхода браузерных песочниц. В том году на той же конференции был похожий, но закрытый доклад от lokihardt.
GitHub
theori-io/zer0con2018_singi
Contribute to theori-io/zer0con2018_singi development by creating an account on GitHub.
Brian Pak из Theori сделал зубодробительный доклад об эксплуатации out of bounds уязвимостей в V8.
В нем есть и описание структур Partition Alloc (дефолтного аллокатора в Blink), и концепция r/w примитивов через freeListHeader и fake DataView, а также разбор реального примера их использования. Ну и на сладкое там есть сниппеты использования pwn.js (https://github.com/theori-io/pwnjs), который поможет сделать ROP (я уже писал об этой библиотеке ранее), если ему дать r/w примитивы.
Материалы тут: https://github.com/theori-io/zer0con2018_bpak?files=1.
В моем рейтинге это лучший доклад на Zer0Con 2018.
В нем есть и описание структур Partition Alloc (дефолтного аллокатора в Blink), и концепция r/w примитивов через freeListHeader и fake DataView, а также разбор реального примера их использования. Ну и на сладкое там есть сниппеты использования pwn.js (https://github.com/theori-io/pwnjs), который поможет сделать ROP (я уже писал об этой библиотеке ранее), если ему дать r/w примитивы.
Материалы тут: https://github.com/theori-io/zer0con2018_bpak?files=1.
В моем рейтинге это лучший доклад на Zer0Con 2018.
GitHub
GitHub - theori-io/pwnjs: A Javascript library for browser exploitation
A Javascript library for browser exploitation. Contribute to theori-io/pwnjs development by creating an account on GitHub.
Интересный out of bounds read / write примитв в V8 Genesis::InitializeGlobal https://bugs.chromium.org/p/project-zero/issues/detail?id=1501.
И да, если кому-то интересна судьба фикса бага с примитивом stack-to-heap copy (https://bugs.chromium.org/p/project-zero/issues/detail?id=1420) в Chakra JIT, о котором я писал ранее, то Lokihardt нашел 2 обхода фикса: https://bugs.chromium.org/p/project-zero/issues/detail?id=1502 и https://bugs.chromium.org/p/project-zero/issues/detail?id=1503.
Все, кто интересуется обходом Arbitary Code Guard (aka ACG) и Code Integrity Guard (CIG) в MS Edge и Windows 10, должны изучить презентацию c CanSecWest'а 2018: https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxiaW5nc3Vuc2VjfGd4Ojc0YWZlOGNlMzg0YjYzMGY. На слайдах есть также ссылки на методы обхода CFG, которые были представлены на разных конференциях в 2017 =)
Не секрет, что расширения для браузера могут быть источником uXSS уязвимостей. Travis Ormandy нашёл забавный баг в расширении Video Downloader Professional, у которого почти 4 млн. пользователей: https://bugs.chromium.org/p/project-zero/issues/detail?id=1555
Для справки, uXSS - браузерная уязвимость, которая даёт атакующему возможность выполнить на сайте произвольный JavaScript в контексте любого (ну или почти любого) чужого origin’а.
Для справки, uXSS - браузерная уязвимость, которая даёт атакующему возможность выполнить на сайте произвольный JavaScript в контексте любого (ну или почти любого) чужого origin’а.
Safari не перестает удивлять! Недавно закрыли выполнение произвольного кода с помощью функции возвращения квадратного корня (sqrt).
https://www.zerodayinitiative.com/advisories/ZDI-18-278/
https://www.zerodayinitiative.com/advisories/ZDI-18-278/
Zerodayinitiative
thezdi
Natalie Silvanovich из P0 нашла интересную проблему в WebAssembly парсере WebKit. Дело в том, что парсер некорректно валидировал порядок секций бинарника, что приводило к переполнениям и type confusion багам. Детали тут: https://bugs.chromium.org/p/project-zero/issues/detail?id=1522.
Давно не писал сюда, решил возобновить процесс и встряхнуть канал.
И начну я с отличной новости!
Вчера Google анонсировал кампанию по отказу от inline установок расширений со сторонних сайтов. С 12 июня все новые расширения, которые добавляются в Chrome Web Store установить со стороннего сайта уже будет нельзя (chrome.webstore.install будет редиректить в стор), а с 12 сентября уже все инлайн установки будут вести себя аналогично. До конца года метод планируют удалить из Сhromium API. Подробности, как обычно, тут: https://blog.chromium.org/2018/06/improving-extension-transparency-for.html
И начну я с отличной новости!
Вчера Google анонсировал кампанию по отказу от inline установок расширений со сторонних сайтов. С 12 июня все новые расширения, которые добавляются в Chrome Web Store установить со стороннего сайта уже будет нельзя (chrome.webstore.install будет редиректить в стор), а с 12 сентября уже все инлайн установки будут вести себя аналогично. До конца года метод планируют удалить из Сhromium API. Подробности, как обычно, тут: https://blog.chromium.org/2018/06/improving-extension-transparency-for.html
Chromium Blog
Improving extension transparency for users
We strive to ensure choice and transparency for all Chrome users as they browse the web. Part of this choice is the ability to use the hund...