CVE-2026-28958
Overview
Advisory: Apple Security Advisory
Impact:
Description: An app may be able to access sensitive user data
Researchers: Cantina
| Attribute | Value |
|---|---|
| CVE | CVE-2026-28958 |
| Bugzilla | 311228 |
| Component | WebCore |
| Bug Class | CSRF |
| Severity | high |
| Commit | d995144a1f1cdc33… |
| Advisory | Apple Advisory |
Root Cause Analysis
FrameLoader::load called addSameSiteInfoToRequestIfNeeded before checking if the initiator should inherit the security origin from its owner. This caused SameSite=Strict cookies to be sent on cross-site navigations initiated by iframes. Fix: Passes initiator.ptr() only when shouldInheritSecurityOriginFromOwner is false.
Attack Path
1. Step 1
Attacker embeds a malicious iframe on attacker.com.
2. Step 2
Iframe initiates a navigation to victim.com.
3. Step 3
FrameLoader adds SameSite info before verifying origin inheritance.
4. Step 4
SameSite=Strict cookies for victim.com are incorrectly included.
5. Step 5
CSRF or session hijacking via forged cross-site request.
Files Changed
Source Files
Source/WebCore/loader/MixedContentChecker.cpp
Patch Preview
diff --git a/Source/WebCore/loader/MixedContentChecker.cpp b/Source/WebCore/loader/MixedContentChecker.cpp
index bd42f3d7c2bd..f7c90310966e 100644
--- a/Source/WebCore/loader/MixedContentChecker.cpp
+++ b/Source/WebCore/loader/MixedContentChecker.cpp
@@ -131,10 +131,6 @@ bool MixedContentChecker::canModifyRequest(const URL& url, FetchOptions::Destina
bool MixedContentChecker::shouldBlockRequest(Frame& frame, const URL& url, IsUpgradable isUpgradable)
{
- RefPtr<Document> document;
- if (auto* localFrame = dynamicDowncast<LocalFrame>(frame))
- document = localFrame->document();
-
#if ENABLE(CONTENT_FILTERING) && HAVE(WEBCONTENTRESTRICTIONS)
if (url == ContentFilter::blockedPageURL())
return false;