Moderate firefox Logic Error 🔧 Commit mapped

Overview

Moderate
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Impactmoderate
DescriptionMitigation bypass in the Enterprise Policies component
ComponentCore
Bug ClassLogic Error
Tracker2044525
Fix commit832fe83533d9 (firefox) +17/-0
CISA KEVNot listed
CreditedSouma Ohsawa
Disclosed2026-10-13

Changed Functions

FunctionChangeNotes
if
browser/components/preferences/dialogs/permissions.js
modified

Files Changed

  • browser/components/preferences/dialogs/permissions.js
  • browser/components/preferences/dialogs/sitePermissions.js
diff --git a/browser/components/preferences/dialogs/permissions.js b/browser/components/preferences/dialogs/permissions.js
index 4b513ad3ce4..3ebc8146a2e 100644
--- a/browser/components/preferences/dialogs/permissions.js
+++ b/browser/components/preferences/dialogs/permissions.js
@@ -13,6 +13,8 @@ var { XPCOMUtils } = ChromeUtils.importESModule(
 const lazy = {};
 
 ChromeUtils.defineESModuleGetters(lazy, {
+  isTrailingDotPolicyDuplicate:
+    "resource://gre/modules/PoliciesHelpers.sys.mjs",
   PlacesUtils: "resource://gre/modules/PlacesUtils.sys.mjs",
 });
 
@@ -349,6 +351,12 @@ var gPermissionManager = {
     if (perm.type !== this._type) {
       return;
     }
+    if (
+      perm.expireType === Services.perms.EXPIRE_POLICY &&
+      lazy.isTrailingDotPolicyDuplicate(perm)
+    ) {
+      return;
+    }
     if (!this._isCapabilitySupported(perm.capability)) {
       return;
     }
diff --git a/browser/components/preferences/dialogs/sitePermissions.js b/browser/components/preferences/dialogs/sitePermissions.js
index 013c0df347b..7d79ade2d95 100644
--- a/browser/components/preferences/dialogs/sitePermissions.js
+++ b/browser/components/preferences/dialogs/sitePermissions.js
@@ -14,6 +14,13 @@ var { XPCOMUtils } = ChromeUtils.importESModule(
   "resource://gre/modules/XPCOMUtils.sys.mjs"
 );
 
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+  isTrailingDotPolicyDuplicate:
+    "resource://gre/modules/PoliciesHelpers.sys.mjs",
+});
+
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "SiteCategory",
@@ -440,6 +447,8 @@ var gSitePermissionsManager = {
       type !== this._type ||
       !PERMISSION_STATES.includes(perm.capability) ||
       !SitePermissions.isSupportedPrincipal(perm.principal) ||
+      (perm.expireType === Services.perms.EXPIRE_POLICY &&
+        lazy.isTrailingDotPolicyDuplicate(perm)) ||
       // Skip private browsing session permissions
       (perm.principal.privateBrowsingId !==
         Services.scriptSecurityManager.DEFAULT_PRIVATE_BROWSING_ID &&
Loading diff…