Metnew/uxss-db
GitHub: Metnew/uxss-db
一个收录了主流浏览器通用跨站脚本(UXSS)和同源策略绕过漏洞的综合性数据库及研究资料库。
Stars: 702 | Forks: 84
# uxss-db 🔪
- [uxss-db 🔪](#uxss-db-%F0%9F%94%AA)
- [简介](#intro)
- [Webkit](#webkit)
- [Chromium](#chromium)
- [IE/Edge](#ieedge)
- [文章](#articles)
- [白皮书](#whitepapers)
- [浏览器黑客指南与设计文档](#browser-hacking-guides-and-design-docs)
- [Firefox](#firefox)
- [Tor](#tor)
- [Brave](#brave)
- [Chromium](#chromium)
- [Webkit](#webkit)
- [Electron](#electron)
- [规范](#specs)
- [赏金计划](#bounties)
- [杂项](#misc)
- [脚本](#scripts)
- [作者](#author)
- [许可证](#license)
- [待办事项](#todo)
**受 [`js-vuln-db`](https://github.com/tunz/js-vuln-db) 启发**
关于**内存** Bug、漏洞利用及其他内容:请查看 [`awesome-browser-exploit`](https://github.com/Escapingbug/awesome-browser-exploit)
## 简介
* [什么是 UXSS?](https://www.acunetix.com/blog/articles/universal-cross-site-scripting-uxss/)
* [什么是 SOP?](https://en.wikipedia.org/wiki/Same-origin_policy)
* [什么是 CORS?](https://developer.mozilla.org/ru/docs/Web/HTTP/CORS)
部分 CVE 编号未找到:
* **0-$$$$** - [google project zero tracker](https://bugs.chromium.org/p/project-zero/issues/list) 中 ID 为 _$$$$_ 的问题
* **cr-$$$$** - [Chromium tracker](https://bugs.chromium.org/p/chromium/issues/list) 中 ID 为 _$$$$_ 的问题
* **some-bug** - 该漏洞没有 CVE 或 CVE 未知
_如果报告中未附带受影响的版本,版本字段将带有 "?" 符号_
**注意:许多 CVE 未列在下方的表格中!**
*请检查 `/other` 文件夹,其中包含针对较冷门浏览器的未分类/未知/重复的 CVE 和漏洞*
## Webkit
| CVE/id | title | version | date |
| ------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------- | ------------ |
| [CVE-2017-7089](https://github.com/Bo0oM/CVE-2017-7089) | UXSS via `parent-tab://` | 10? | Sep 20, 2017 |
| [CVE-2017-7037](./webkit/CVE-2017-7037) | UXSS via `JSObject::putInlineSlow` and `JSValue::putToPrimitive` | 10? | Mar 10 2017 |
| [0-1197](./webkit/0-1197) | WebKit: UXSS via `CachedFrameBase::restore` | 10? | Mar 17 2017 |
| [CVE-2017-2528](./webkit/CVE-2017-2528) | UXSS: `CachedFrame` doesn't detach openers | 10? | Mar 10 2017 |
| [0-1163](./webkit/0-1163) | UXSS via `Document::prepareForDestruction` and CachedFrame | 10? | Mar 3 2017 |
| [CVE-2017-2510](./webkit/CVE-2017-2510) | UXSS: `enqueuePageshowEvent` and `enqueuePopstateEvent` don't enqueue, but dispatch | 10? | Feb 27 2017 |
| [CVE-2017-2508](./webkit/CVE-2017-2508) | UXSS via `ContainerNode::parserInsertBefore` | 10? | Feb 24 2017 |
| [0-1134](./webkit/0-1134) | UXSS via `ContainerNode::parserRemoveChild` (2) | 10? | Feb 17 2017 |
| [0-1132](./webkit/0-1132) | UXSS: the patch of #1110 made another bug | 10 | Feb 16 2017 |
| [CVE-2017-2504](./webkit/CVE-2017-2504) | UXSS via `Editor::Command::execute` | 10.0.3 | Feb 16 2017 |
| [CVE-2017-2493](./webkit/CVE-2017-2493) | UXSS through `HTMLObjectElement::updateWidget` | 10.0.3 | Feb 9 2017 |
| [CVE-2017-2480](./webkit/CVE-2017-2480) | UXSS via a synchronous page load | 10.0.3 | Feb 9 2017 |
| [CVE-2017-2479](./webkit/CVE-2017-2479) | UXSS via a focus event and a link element | 10.0.3 | Feb 9 2017 |
| [CVE-2017-2475](./webkit/CVE-2017-2475) | UXSS via `ContainerNode::parserRemoveChild` | 10.0.3 | Feb 2 2017 |
| [CVE-2017-2468](./webkit/CVE-2017-2468) | Use-After-Free via `Document::adoptNode` | 10.0.3 | Jan 23 2017 |
| [0-1094](./webkit/0-1094) | UXSS via `operationSpreadGeneric` | 10.0.2 | Jan 20 2017 |
| [0-1084](./webkit/0-1084) | UXSS via `PrototypeMap::createEmptyStructure` | 10.0.2 | Jan 17 2017 |
| [CVE-2017-2445](./webkit/CVE-2017-2445) | UXSS via `disconnectSubframes` | 10.0.2 | Jan 9 2017 |
| [CVE-2017-2442](./webkit/CVE-2017-2442) | UXSS with `JSCallbackData` | 10.0.2 | Jan 3 2017 |
| [CVE-2017-2367](./webkit/CVE-2017-2367) | UXSS by accessing a named property from an unloaded window | 10.0.2 | Dec 23 2016 |
| [CVE-2017-2365](./webkit/CVE-2017-2365) | UXSS via `Frame::setDocument` | 10.0.2 | Dec 20 2016 |
| [CVE-2017-2364](./webkit/CVE-2017-2364) | UXSS via `Frame::setDocument` (1). | 10.0.2 | Dec 20 2016 |
| [CVE-2017-2363](./webkit/CVE-2017-2363) | UXSS via `FrameLoader::clear` | 10.0.2 | Dec 19 2016 |
## Chromium
| CVE/id | title | version | date |
| ------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | ----------- |
| [CVE-2018-6128](./chrome/CVE-2018-6128) | UXSS via URL parsing bug | 66 | May 9 2018 |
| [CVE-2017-5124](https://github.com/Bo0oM/CVE-2017-5124) | UXSS with MHTML | 61 | Oct 20 2017 |
| [cr-687844](./chrome/cr-687844) | `window.external` leaks global object + cross origin script access | 57 | Feb 2 2017 |
| [CVE-2017-5007](./chrome/CVE-2017-5007) | UXSS through bypassing `ScopedPageSuspender` with closing windows | 55 | Dec 5 2016 |
| [cr-656274](./chrome/cr-656274) | Cross-origin object leak via `fetch` | 56 (canary) | Oct 15 2016 |
| [cr-594383](./chrome/cr-594383) | UXSS via `window.open()` via `file://` pages | 54 | Oct 15 2016 |
| [CVE-2016-5207](./chrome/CVE-2016-5207) | UXSS via fullscreen element updates | 54 | Oct 14 2016 |
| [CVE-2016-5204](./chrome/CVE-2016-5204) | UXSS by intercepting a UA shadow tree | 52 | Jul 24 2016 |
| [CVE-2016-1676](./chrome/CVE-2016-1676) | Persistent UXSS via `SchemaRegistry` | 50 | Apr 19 2016 |
| [CVE-2016-1667](./chrome/CVE-2016-1667) | UXSS through adopting image elements | 50 | Apr 21 2016 |
| [CVE-2016-1674](./chrome/CVE-2016-1674) | UXSS via the interception of `Binding` with `Object.prototype.create` | 49 | Mar 26 2016 |
| [CVE-2016-1673](./chrome/CVE-2016-1673) | UXSS using a `FrameNavigationDisabler` bypass | 49 | Mar 24 2016 |
| [cr-583445]('./chrome/cr-583445') | UXSS in `DocumentLoader::createWriterFor` | 48 | Feb 2 2016 |
| [CVE-2016-1631](./chrome/CVE-2016-1631) | UXSS using Flash message loop | 47 | Dec 14 2015 |
| [CVE-2015-6770](./chrome/CVE-2015-6770) | UXSS using `document.adoptNode` | 45 | Oct 8 2015 |
| [CVE-2015-6769](./chrome/CVE-2015-6769) | UXSS via the `unload_event` module | 45 | Sep 22 2015 |
| [CVE-2015-6765](./chrome/CVE-2015-6765) | UXSS via `ContainerNode::parserInsertBefore` | 44 | Aug 11 2015 |
| [CVE-2015-1268](./chrome/CVE-2015-1268) | UXSS using IDBKeyRange static methods | 43 | May 31 2015 |
| [CVE-2014-1747](./chrome/CVE-2014-1747) | UXSS via local MHTML files | 35 | Dec 25 2013 |
| [CVE-2014-1701](./chrome/CVE-2014-1701) | UXSS via `dispatchEvent` on iframes | 32 | Feb 11 2014 |
| [CVE-2011-2856](./chrome/CVE-2011-2856) | Arbitrary cross-origin bypass using `__defineGetter__` prototype override | 15 | Aug 18 2011 |
| [CVE-2011-3243](./chrome/CVE-2011-3243) | Universal XSS using `contentWindow.eval` | 12 | May 24 2011 |
| [CVE-2011-1438](./chrome/CVE-2011-1438) | bypass SOP with `blob:` | 11 | Mar 2 2011 |
| [cr-74372]('./chrome/cr-74372') | `chrome://blob-internals/` XSS | 11 | Feb 28 2011 |
| [cr-37383]('./chrome/cr-37383') | `javascript:` url with a leading NULL byte can bypass cross origin protection. | ? | Mar 4 2010 |
## IE/Edge
| CVE/id | version/date | reporter |
| ---------------------------------------------------------------------------------------------------------------- | ------------ | -------- |
| [CVE-2015-0072](https://github.com/dbellavista/uxss-poc), [alternative PoC](https://github.com/wjessop/UXSS_PoC) | | |
## 文章
* (俄语) [Комикс о UXSS в Safari и Chrome](https://bo0om.ru/chrome-and-safari-uxss) - CVE-2017-5124 + CVE-2017-7089
* [Analysis on Internet Explorer's UXSS](https://blog.innerht.ml/ie-uxss/) - CVE-2015-0072
* [Universal XSS via Evernote WebClipper](https://blog.xpnsec.com/evernote-webclipper-uxss/)
* [Mobile Browsers Security: iOS](https://www.syscan360.org/slides/2014_EN_MobileBrowsersSecurityiOS_LukaszPilorzPawelWylecial.pdf)
* [SOP bypass / UXSS – Stealing Credentials Pretty Fast (Edge)](https://www.brokenbrowser.com/sop-bypass-uxss-stealing-credentials-pretty-fast/) - May 10, 2017
* [Grabbing data from Inputs and Textareas (Edge/IE)](https://www.brokenbrowser.com/grabdatafrominput/) - Aug 28, 2016
* [Exploring and Exploiting iOS Web Browsers](http://bofh.nikhef.nl/events/HitB/hitb-2014-amsterdam/praatjes/D2T2-Exploring-and-Exploiting-iOS-Web-Browsers.pdf) - Łukasz Pilorz, Marek Zmysłowski, Hack In The Box, Amsterdam 2014
* https://leucosite.com 博客 作者 [@Qab](https://twitter.com/Qab)
* [BrokenBrowser]( ) 博客:
* https://www.brokenbrowser.com/revealing-the-content-of-the-address-bar-ie/
* https://www.brokenbrowser.com/sop-bypass-uxss-tweeting-like-charles-darwin/
* https://www.brokenbrowser.com/sop-bypass-abusing-read-protocol/
* https://www.brokenbrowser.com/microsoft-edge-detecting-installed-extensions/
* https://www.brokenbrowser.com/free-ticket-to-the-intranet-zone/
* https://www.brokenbrowser.com/uxss-ie-domainless-world/
* https://www.brokenbrowser.com/bypass-the-patch-to-keep-spoofing-the-address-bar-with-the-malware-warning/
* https://www.brokenbrowser.com/zombie-alert/
* https://www.brokenbrowser.com/uxss-ie-htmlfile/
* https://www.brokenbrowser.com/uxss-edge-domainless-world/
* https://www.brokenbrowser.com/abusing-of-protocols/
* https://www.brokenbrowser.com/loading-insecure-content-in-secure-pages/
* https://www.brokenbrowser.com/detecting-local-files-to-evade-analysts/
* https://www.brokenbrowser.com/workers-sop-bypass-importscripts-and-basehref/
* https://www.brokenbrowser.com/detecting-apps-mimetype-malware/
* https://www.brokenbrowser.com/referer-spoofing-defeating-xss-filter/
* https://www.brokenbrowser.com/css-history-leak/
* https://www.brokenbrowser.com/grabdatafrominput/
## 白皮书
* [X41: Browser Security White Paper](https://browser-security.x41-dsec.de/X41-Browser-Security-White-Paper.pdf) + [网站](https://www.x41-dsec.de/security/report/whitepaper/2017/09/18/whitepaper-x41-browser-security/) + [仓库](https://github.com/x41sec/browser-security-whitepaper-2017)
* [The Definitive Guide to Same-origin Policy](https://www.netsparker.com/whitepaper-same-origin-policy/)
* [On the Security of the SOP-DOM Using HTML and JavaScript Code](http://your-sop.com/more-stuff/subsequent-work/On_the_Security_of_the_SOP-DOM_Using_HTML_and_JavaScript_Code.pdf)
* [Same-Origin Policy: Evaluation in Modern Browsers](https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-schwenk.pdf) + [幻灯片](https://www.usenix.org/sites/default/files/conference/protected-files/usenixsecurity17_slides_marcus_niemietz.pdf) + [演讲](https://youtu.be/-dz_V0fqUnw) + [your-sop.com](http://your-sop.com)
* [Google Browser Security Handbook](https://ru.scribd.com/document/135631086/Google-Browser-Security-Handbook)
* [A Security Study of Chrome’s Process-based Sandboxing](http://www.comp.nus.edu.sg/~tsunami/papers/ChromeDOP.pdf)
* [A Systematic Approach to Uncover Security Flaws in GUI Logic](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/GUILogicSecurity.pdf)
* [JSON hijacking](https://www.owasp.org/images/6/6a/OWASPLondon20161124_JSON_Hijacking_Gareth_Heyes.pdf)
* [Bypassing the Same Origin Policy - The Browser Hacker’s Handbook (2014)](http://apprize.info/security/browser/5.html)
## 浏览器黑客指南与设计文档
### Firefox
* [7 Tips for Fuzzing Firefox More Effectively](https://blog.mozilla.org/security/2012/06/20/7-tips-for-fuzzing-firefox-more-effectively/)
### Tor
* [The Tor Browser Hacking Guide](https://trac.torproject.org/projects/tor/wiki/doc/TorBrowser/Hacking)
* [The Design and Implementation of the Tor Browser [DRAFT]](https://www.torproject.org/projects/torbrowser/design/)
### Brave
* [Brave 浏览器仓库](https://github.com/brave/browser-laptop)
* [组件结构](https://github.com/brave/browser-laptop/blob/master/docs/componentStructure.md)
* [目录结构](https://github.com/brave/browser-laptop/blob/master/docs/directoryStructure.md)
* [状态](https://github.com/brave/browser-laptop/blob/master/docs/state.md) - 类似于 Redux 状态概念,但只是一个 ImmutableJS 对象
* [如何处理崩溃](https://github.com/brave/browser-laptop/wiki/Crashes)
### Chromium
* [Chromium 如何显示网页](https://www.chromium.org/developers/design-documents/displaying-a-web-page-in-chrome)
* [Chromium: 多进程架构](https://www.chromium.org/developers/design-documents/multi-process-architecture)
* [站点隔离设计文档](https://www.chromium.org/developers/design-documents/site-isolation)
* [Chrome 中的线程和任务](https://chromium.googlesource.com/chromium/src/+/master/docs/threading_and_tasks.md)
* [重要的抽象和数据结构](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures)
### Webkit
* [核心 WebKit 类](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DisplayWebContent/Concepts/WebKitDesign.html)
* [developer.apple.com 上的 Webkit 文档](https://developer.apple.com/documentation/webkit)
### Electron
* [Modern Alchemy: Turning XSS into RCE](https://blog.doyensec.com/2017/08/03/electron-framework-security.html)
* [Electron 安全检查清单 ](https://www.blackhat.com/docs/us-17/thursday/us-17-Carettoni-Electronegativity-A-Study-Of-Electron-Security-wp.pdf)
## 规范
* [W3C Suborigins [DRAFT]](https://w3c.github.io/webappsec-suborigins/)
* [W3C Service Workers Nightly](https://w3c.github.io/ServiceWorker/)
* [ECMA 262](https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf)
## 赏金计划
* [Zerodium](https://zerodium.com/program.html)
* [Tor](https://hackerone.com/torproject)
* [Chrome](https://www.google.com/about/appsecurity/chrome-rewards/)
* [Brave](https://hackerone.com/brave)
* [SSD](https://www.beyondsecurity.com/ssd.html)
* [MS Edge](https://technet.microsoft.com/en-us/mt761990.aspx)
## 杂项
* [NodeFuzz](https://code.google.com/archive/p/ouspg/wikis/NodeFuzz.wiki) - Web 浏览器模糊测试工具
* [brave/Muon](https://github.com/brave/muon) - 使用 HTML、CSS 和 JavaScript 构建浏览器及类浏览器应用(Brave 漏洞赏金计划的一部分)
* https://ios.browsr-tests.com - iOS 中的 SOP 绕过列表
* https://github.com/rafaybaloch/SOP-Bypass-Mini-Test-Suite - SOP 绕过列表
* [ref_fuzz](https://lcamtuf.blogspot.com/2010/06/announcing-reffuzz-2yo-fuzzer.html) 模糊测试工具 - [源代码](http://lcamtuf.coredump.cx/ref_fuzz5.html)
* [javascript - Ways to circumvent the same-origin policy - Stack Overflow](https://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy) - document.domain、window.postMessage、CORS、反向代理 (+ jsonp)
* 关于 Cookie 安全的幻灯片 - [Cookie same origin policy](https://crypto.stanford.edu/cs142/lectures/10-cookie-security.pdf)
* [PortSwigger/hackability](https://github.com/PortSwigger/hackability) - 浏览器安全的“开发者工具”。(对较冷门的浏览器很有用)
## 脚本
```
# Export `js-vuln-db` repo CVEs to html
bash ./scripts/js-vuln-db-to-format.sh html
# Export `js-vuln-db` repo CVEs to js
bash ./scripts/js-vuln-db-to-format.sh js
```
## 作者
Vladimir Metnew
## 许可证
MIT
## 待办事项
* 添加以下 Bug:
* [Pwn2Own: content: scheme allows cross-origin info leaks](https://bugs.chromium.org/p/chromium/issues/detail?id=659489)
* [Use-after free in leveldb](https://bugs.chromium.org/p/chromium/issues/detail?id=88944)
* [Security: UaF in MidiHost round 2 (JS -> Browser code execution)](https://bugs.chromium.org/p/chromium/issues/detail?id=576383)
* https://bugs.chromium.org/p/chromium/issues/detail?id=419383
* https://github.com/mpgn/ByP-SOP
* http://unsafe.cracking.com.ar/demos/edgedatametadata/bing.html
* https://bugs.chromium.org/p/chromium/issues/detail?id=666246
* http://www.cracking.com.ar/demos/workerleak/
* http://www.cracking.com.ar/demos/xmldom/
* http://unsafe.cracking.com.ar/demos/sandboxedge/
* https://www.cracking.com.ar/demos/sop-ax-htmlfile/injectiframexdom.html
* [438085 - Security: SOP bypass via DNS-Rebind (including PoC) - chromium - Monorail](https://bugs.chromium.org/p/chromium/issues/detail?id=438085)
* [demonic_browsers.pdf](https://research.aurainfosec.io/assets/demonic_browsers.pdf)
* [JSON hijacking for the modern web | Blog](https://portswigger.net/blog/json-hijacking-for-the-modern-web)
* [Pwnfest 2016 meta bug](https://bugs.chromium.org/p/chromium/issues/detail?id=664551)
* https://bugs.chromium.org/p/chromium/issues/detail?id=682020
* https://blog.jeremiahgrossman.com/2006/08/i-know-where-youve-been.html - 那个 Web 1.0 时代的东西
标签:0day, Brave, Chromium, CISA项目, CORS, CVE, Edge, Electron, Firefox, Go语言工具, IE, SOP, Tor, UXSS, Webkit, Web安全, Windows内核, XSS, 同源策略, 后端开发, 安全工程师, 安全资源库, 应用安全, 数字签名, 数据展示, 漏洞情报, 白帽子, 红队, 网络安全, 蓝队分析, 跨站脚本攻击, 防御加固, 隐私保护