А тем временем ребята из Theori зарелизили библиотеку pwn.js, которая облегчает написание эксплойтов для MS Edge: https://github.com/theori-io/pwnjs
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.
Если вы только начинаете изучать безопасность в браузерах, обязательно изучите https://browser-security.x41-dsec.de/X41-Browser-Security-White-Paper.pdf и https://cure53.de/browser-security-whitepaper.pdf
Пока мы все были на ZN 2017, команда Chrome представила отчёт об улучшении старых и создании новых фичей безопасности за последний год: https://blog.google/products/chrome/reflecting-years-worth-chrome-security-improvements/.
Google
Reflecting on a year’s worth of Chrome security improvements
A rundown of the improvements we made to Chrome this year to help keep your information even safer, and encourage sites across the web to become more secure as well.
Скоро бинарные баги в браузерах получат перерождение за счёт wasm: https://blog.mozilla.org/blog/2017/11/13/webassembly-in-browsers/
The Mozilla Blog
WebAssembly support now shipping in all major browsers
Apple and Microsoft are shipping WebAssembly support in the latest versions of Safari and Edge, so all four major browsers can now run code compiled to the super-fast wasm format.
На фоне хайпа с сайд-ченнел багой в Chromium 64 выкатывается набор фиксов, снижающих вероятность эксплуатации баги: https://www.chromium.org/Home/chromium-security/ssca. То же самое сделали и MS: https://blogs.windows.com/msedgedev/2018/01/03/speculative-execution-mitigations-microsoft-edge-internet-explorer/ с теми же самыми исправлениями: отключение SharedArrayBuffer и тюнинг performance.now()
Набор фиксов для Meltdown и Spectre в Chromium'е можно наблюдать в коммитах: https://chromium.googlesource.com/chromium/src/+/953bf5bfd1957a9c6c123d8dfc59254dcd7bb956
(патч perfomance.now()), https://chromium.googlesource.com/chromium/src/+/62fc5a081ba836bf4983f3b3ff4ec08382ac4c25 (отключение SharedBuffers по умолчанию)
(патч perfomance.now()), https://chromium.googlesource.com/chromium/src/+/62fc5a081ba836bf4983f3b3ff4ec08382ac4c25 (отключение SharedBuffers по умолчанию)
А тем временем WebKit заявил еще и о новых фиксах для Spectre и Meltdown, в частности, в Safari есть доп. защита от спекулятивного исполнения в виде 2-х техник: Index masking и Pointer poisoning, подробности тут: https://webkit.org/blog/8048/what-spectre-and-meltdown-mean-for-webkit/
WebKit
What Spectre and Meltdown Mean For WebKit
Security researchers have recently uncovered security issues known as Meltdown and Spectre.
В MS Edge также появились нужные фиксы (что не новость), коммиты, но я пока что нашел только исправление с отключением SharedArrayBuffer: https://github.com/Microsoft/ChakraCore/pull/4503/commits/ee2538d7b38be8093d9c9341d761d4e8267050bc
Кстати, по ссылке еще целый ряд интересных исправлений безопасности =)
Кстати, по ссылке еще целый ряд интересных исправлений безопасности =)
GitHub
18-01 Security Update by thomasmo · Pull Request #4503 · Microsoft/ChakraCore
18-01 Security Update that addresses the following issues in ChakraCore:
CVE-2018-0758
CVE-2018-0762
CVE-2018-0767
CVE-2018-0768
CVE-2018-0769
CVE-2018-0770
CVE-2018-0772
CVE-2018-0773
CVE-2018-077...
CVE-2018-0758
CVE-2018-0762
CVE-2018-0767
CVE-2018-0768
CVE-2018-0769
CVE-2018-0770
CVE-2018-0772
CVE-2018-0773
CVE-2018-077...
Получил в личку ряд вопросов о том, как именно от Spectre помогает режим strict site isolation.
Все просто - если включить этот режим, в хромиуме перестает работать SharedArrayBuffer.
Можете проверить сами:
1. включите на 63 хромиуме strict site isolation chrome://flags/#enable-site-per-process;
2. запустите тестовый PoC отсюда: https://github.com/ascendr/spectre-chrome, либо отсюда: http://xlab.tencent.com/special/spectre/spectre_check.html.
P.S. Если вдруг проверка не удалась, попробуйте удалить UserData, скорее всего вам уже прилетело отключение SharedArrayBuffer через конфиг экспериментов.
Все просто - если включить этот режим, в хромиуме перестает работать SharedArrayBuffer.
Можете проверить сами:
1. включите на 63 хромиуме strict site isolation chrome://flags/#enable-site-per-process;
2. запустите тестовый PoC отсюда: https://github.com/ascendr/spectre-chrome, либо отсюда: http://xlab.tencent.com/special/spectre/spectre_check.html.
P.S. Если вдруг проверка не удалась, попробуйте удалить UserData, скорее всего вам уже прилетело отключение SharedArrayBuffer через конфиг экспериментов.
GitHub
GitHub - ascendr/spectre-chrome: Spectre JS PoC for Chrome
Spectre JS PoC for Chrome. Contribute to ascendr/spectre-chrome development by creating an account on GitHub.
В добавление к предыдущему посту. Конечно же, помимо фикса SharedArrayBuffer в режиме strict site isolation очень важным является и то, что данные от разных сайтов (которые могут попасть в процесс вкладки за счёт наличия на сайте frame’ов и frameset’ов) будут жить в разных процессах, что не позволит аткующему их украсть через Spectre. Если бы для исправления хватало только отключения SharedBuffer, его можно было бы сделать через отдельный флаг chrome://flags/#shared-array-buffer.
Спасибо @xima_era за то, что обратил на это внимание!
Спасибо @xima_era за то, что обратил на это внимание!
Отличные нововости для любителей огненной лисы!
15 января в своем блоге Mozilla объявила о том, что все новые фичи, взаимодействующие с веб-ресурсами, должны работать по умолчанию только в защищенных контекстах (secure context). В исключения попадают фичи, которые другие браузеры уже реализовали в незащищенном контексте, либо которые реализовать в защищенном контексте очень сложно. Прочитать про это можно тут: https://blog.mozilla.org/security/2018/01/15/secure-contexts-everywhere/.
Для справки. Под контекстом в браузерах подразумевается среда исполнения, в которой существует объект Document (т.е. по сути это window-объект, который пораждается новой вкладкой, iframe'ом или frameset'ом). Защищенным контекстом называется контекст, в котором передача исполняемого кода идет зашифрованному и аутентифицированному каналу (т.е. по https). Подробнее про это можно почитать тут: https://w3c.github.io/webappsec-secure-contexts.
15 января в своем блоге Mozilla объявила о том, что все новые фичи, взаимодействующие с веб-ресурсами, должны работать по умолчанию только в защищенных контекстах (secure context). В исключения попадают фичи, которые другие браузеры уже реализовали в незащищенном контексте, либо которые реализовать в защищенном контексте очень сложно. Прочитать про это можно тут: https://blog.mozilla.org/security/2018/01/15/secure-contexts-everywhere/.
Для справки. Под контекстом в браузерах подразумевается среда исполнения, в которой существует объект Document (т.е. по сути это window-объект, который пораждается новой вкладкой, iframe'ом или frameset'ом). Защищенным контекстом называется контекст, в котором передача исполняемого кода идет зашифрованному и аутентифицированному каналу (т.е. по https). Подробнее про это можно почитать тут: https://w3c.github.io/webappsec-secure-contexts.
Mozilla Security Blog
Secure Contexts Everywhere
Since Let’s Encrypt launched, secure contexts have become much more mature. We have witnessed the successful restriction of existing, as well as new features to ...
ProjectZero раскрыл детали по двум новым и интересным memory corruption уязвимостям в Ms Edge. На этот раз это out of bounds write в Chakra Jit (CVE-2018-0777 и CVE-2018-0769), детали и PoCи есть по ссылкам: https://bugs.chromium.org/p/project-zero/issues/detail?id=1429, https://bugs.chromium.org/p/project-zero/issues/detail?id=1390. А также out of bounds read в ChakraAsmJs (CVE-2018-0780): https://bugs.chromium.org/p/project-zero/issues/detail?id=1433. Это то, что было исправлено MS в январе.
В продолжение утренней темы, ознакомиться с примерами уязвимостей в Chakra, которые были найдены Project Zero за 2016 и 2017, можно по ссылке: https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=chakra. Спасибо, loki и natashenka!