zeroxjf/WebKit-NavigationAPI-SOP-Bypass

GitHub: zeroxjf/WebKit-NavigationAPI-SOP-Bypass

WebKit Navigation API同源策略绕过漏洞(CVE-2026-20643)的PoC,展示NavigateEvent.canIntercept在跨端口场景下错误返回true的安全缺陷。

Stars: 0 | Forks: 0

# WebKit-NavigationAPI-SOP-Bypass **WebKit Navigation API — 通过跨端口拦截绕过同源策略 (CVE-2026-20643)** | | | |---|---| | **CVE** | CVE-2026-20643 | | **发现者** | Thomas Espach ([WebKit Bugzilla 306050](https://bugs.webkit.org/show_bug.cgi?id=306050)) | | **组件** | WebKit — `WebCore::Navigation::innerDispatchNavigateEvent` | | **受影响版本** | iOS 26.3.1 build `23D8133` (`iPhone18,2`) | | **类别** | SOP bypass | | **交互方式** | 点击 / 链接激活 | | **确认方式** | 易受攻击版本与已修补版本 WebCore 的二进制差异 | ## 摘要 `NavigateEvent.canIntercept` 对于同站但跨端口(源不同)的导航错误地返回 `true`。拦截机制在经过同站检查后,接受任何 HTTP 系列目标,而未验证 scheme、host 和 **port** 是否全部匹配。这允许攻击者控制的页面拦截或抑制本应跨越源边界的导航。 ## 根本原因 ``` // WebCore::Navigation::innerDispatchNavigateEvent — 0x1a1303304 (iOS 26.3.1 / 23D8133) if (!isSameSite && !isSameOrigin) return false; if (targetURL.protocolIsInHTTPFamily()) return true; // ← no port/host/scheme component equality check // cross-port navigations (e.g. :8000 → :8800) slip through ``` WebKit 主线修复在允许拦截之前添加了严格的逐组件相等性检查(scheme / user / password / host / **port**)。 ## PoC 在端口 `8000` 上提供 `poc_min.html` 并在受影响的设备上打开它: ``` python3 -m http.server 8000 # http://127.0.0.1:8000/poc_min.html ``` 点击 **Run PoC**。页面触发跨端口导航(`:8000` → `:8800`)并报告: ``` Vulnerable: canIntercept=true Patched: canIntercept=false ``` ## 文件 | 文件 | | |---|---| | [`findings.md`](findings.md) | 完整的根本原因说明和逆向工程证据 | | [`poc_min.html`](poc_min.html) | 自包含的检测 PoC |
标签:CVE-2026-20643, Go语言工具, iOS安全, NavigateEvent, PoC, SOP绕过, WebCore, WebKit漏洞, Web安全, 中间人攻击, 二进制分析, 云安全运维, 信息泄露, 同源策略, 后端开发, 多模态安全, 暴力破解, 浏览器漏洞, 目录枚举, 移动安全, 编程工具, 蓝队分析, 跨端口攻击, 远程代码执行