
WebKit NavigateEvent.canIntercept SOP बायपास क्रॉस-पोर्ट इंटरसेप्शन द्वारा — iOS 26.3.1 BSI (CVE-2026-20643)
| CVE | CVE-2026-20643 |
| खोजकर्ता | Thomas Espach (WebKit Bugzilla 306050) |
| घटक | WebKit — WebCore::Navigation::innerDispatchNavigateEvent |
| प्रभावित | iOS 26.3.1 build 23D8133 (iPhone18,2) |
| वर्ग | SOP बाईपास |
| इंटरैक्शन | क्लिक / लिंक सक्रियण |
| पुष्टि | कमजोर बनाम पैच किए गए WebCore का बाइनरी डिफ़ |
NavigateEvent.canIntercept उन same-site, cross-port नेविगेशनों के लिए गलत तरीके से true लौटाता है जो origin में भिन्न होते हैं। इंटरसेप्शन गेट समान-साइट जाँच के बाद किसी भी HTTP-परिवार लक्ष्य को स्वीकार करता है, बिना यह सत्यापित किए कि scheme, host और port सभी मेल खाते हैं। यह एक हमलावर-नियंत्रित पृष्ठ को उन नेविगेशनों को इंटरसेप्ट या दबाने की अनुमति देता है जिन्हें origin सीमा पार करनी चाहिए।
// 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_min.html को पोर्ट 8000 पर सर्व करें और इसे किसी प्रभावित डिवाइस पर खोलें:
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 | संपूर्ण मूल कारण विवरण और RE साक्ष्य |
poc_min.html | स्व-निहित डिटेक्शन PoC |