Firefox · DOM
CVE-2025-10529
Cross Origin in DOM
Overview
Medium
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
dom/security/nsContentSecurityManager.cppmodules/libpref/init/StaticPrefList.yaml
Patch
diff --git a/dom/security/nsContentSecurityManager.cpp b/dom/security/nsContentSecurityManager.cpp
index 7c326af6160..dbeb4f0d641 100644
--- a/dom/security/nsContentSecurityManager.cpp
+++ b/dom/security/nsContentSecurityManager.cpp
@@ -16,6 +16,7 @@
#include "mozilla/Logging.h"
#include "mozilla/Maybe.h"
#include "mozilla/Preferences.h"
+#include "mozilla/StaticPrefs_content.h"
#include "mozilla/StaticPrefs_dom.h"
#include "mozilla/StaticPrefs_security.h"
#include "mozilla/dom/BrowserChild.h"
@@ -357,10 +358,17 @@ static nsresult DoCORSChecks(nsIChannel* aChannel, nsILoadInfo* aLoadInfo,
return NS_OK;
}
- // We use the triggering principal here, rather than the loading principal
- // to ensure that anonymous CORS content in the browser resources and in
- // WebExtensions is allowed to load.
- nsIPrincipal* principal = aLoadInfo->TriggeringPrincipal();
+ nsIPrincipal* principal = aLoadInfo->GetLoadingPrincipal();
+ if (StaticPrefs::content_cors_use_triggering_principal()) {
+ // We use the triggering principal here, rather than the loading principal,
+ // to ensure that WebExtensions can reuse their own resources from content
+ // that they inject into a page.
+ //
+ // TODO(dholbert): Is there actually a legitimate reason that WebExtensions
+ // might need this (as opposed to exposing their resources for use in
+ // web-content via the 'web_accessible_resources' manifest field)?
+ principal = aLoadInfo->TriggeringPrincipal();
+ }
RefPtr<nsCORSListenerProxy> corsListener = new nsCORSListenerProxy(
aInAndOutListener, principal,
aLoadInfo->GetCookiePolicy() == nsILoadInfo::SEC_COOKIES_INCLUDE);
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
index a2ca1b26e51..8291c6319f5 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -2207,6 +2207,14 @@
value: false
mirror: always
+# If true, we'll use the triggering principal rather than the loading principal
+# when doing CORS checks. This might be needed for WebExtensions to load their
+# own resources from content that they inject into sites.
+- name: content.cors.use_triggering_principal
+ type: bool
+ value: false
+ mirror: always
+
# Back off timer notification after count.
# -1 means never.
- name: content.notify.backoffcount
Loading diff…
References
On This Page