Supply Chain Attacks

Firefox add-on supply chain: how Mozilla's posture differs from Chrome's

Mozilla Add-ons applies mandatory signing, a stricter review path for extensions that touch broad permissions, and a separately maintained recommended-extensions program. Here is what that buys defenders in 2026 and where the gaps still are.

Hritik Sharma
Security Engineer
8 min read

When people compare browser extension ecosystems, Firefox tends to get treated as a smaller version of Chrome with the same problems, but that framing obscures a number of architectural and policy choices Mozilla has made that materially change the supply chain story. The WebExtensions API shares most of its surface with Chrome's, which means content scripts, background pages, and host permissions look familiar, and Manifest V3 has landed in Firefox with enough overlap that cross-browser extensions are practical. The differences live in the layers above the API: how add-ons get signed, how Mozilla Add-ons (AMO) reviews them, how the recommended-extensions program separates a curated tier from the long tail, and how Firefox handles auto-update and side-loading on enterprise-managed installs.

None of these differences make Firefox immune to the acquired-and-weaponized pattern that has plagued Chrome, and Mozilla has had its own incidents over the years where signed add-ons turned out to be malicious or where the signing infrastructure itself had a bad weekend. But the cumulative effect is a meaningfully different threat model for defenders to plan against, and understanding the specific seams is worth a few minutes if your environment includes Firefox or its enterprise-focused ESR build.

How does Mozilla's mandatory signing requirement actually work?

Since 2016, Firefox release and beta builds have refused to install unsigned add-ons. The signing happens on Mozilla's servers; a developer submits an XPI to AMO, the build goes through automated validation and, depending on the listing type, human review, and the resulting artifact is signed by Mozilla's add-on signing CA before it can be installed on a stock Firefox build. Nightly and Developer Edition can be configured to allow unsigned add-ons, and the Extended Support Release used in many enterprise environments has policy hooks that allow administrators to install custom add-ons signed by their own infrastructure, but the default user experience is that no add-on runs unless Mozilla has put its signature on it.

The signing model gives Mozilla a kill switch that Chrome does not have in quite the same way. Because every installed add-on carries a Mozilla signature, Mozilla can revoke the signature of a malicious version and Firefox will refuse to load it on next launch. The blocklist mechanism is separate from this and predates universal signing, but together they give Mozilla a fast path to disable a compromised add-on across the entire installed base without waiting for users to update. Chrome's Web Store removal disables future installs and pushes a disable signal through auto-update, but the cryptographic posture is different; on Firefox, the absence of a valid signature is itself enforced by the browser at load time.

What signing does not do is verify provenance back to source. The XPI Mozilla signs is the one the developer submitted, and Mozilla has no way to know whether the JavaScript inside corresponds to a specific Git commit or a reproducible build. Acquired-and-weaponized still works on Firefox in principle; an attacker buys an add-on, submits a new version, passes review, and Mozilla's signature lands on the malicious build the same way it landed on the benign one. Signing closes the side-loading attack surface and gives Mozilla a kill switch, but it does not close the upstream ownership-transfer pathway.

What does AMO review actually catch, and what does it miss?

Mozilla operates a tiered review model that has shifted over the years. Listed add-ons that request a narrow set of permissions can publish through a primarily automated path with post-review by human reviewers as needed, while add-ons that request broad permissions or that ship obfuscated code, native messaging hosts, or other higher-risk surface go through a more involved pre-review process. The automated validator looks for known patterns of malicious behavior, calls to remote code execution, unusual obfuscation, and policy violations around data collection. Reviewers have access to the unminified source the developer submitted, which is a meaningful difference from Chrome's posture where the reviewable surface is essentially whatever ends up inside the CRX.

In practice, AMO review catches a lot of the low-effort malicious submissions, particularly the typo-squat add-ons that try to ride on the names of popular ones. It is less reliable against the slow-rolling acquisition pattern, where a previously benign add-on changes hands and the new owner ships incremental updates that each individually look reasonable. Mozilla has acknowledged this and has periodically rolled out additional review for ownership transfers and for add-ons whose update introduces broad permission changes, but the bar for a sufficiently patient attacker is not categorically higher than on Chrome. The thing that helps is that the addressable installed base for most Firefox add-ons is smaller than the Chrome equivalent, so the attacker economics are usually worse.

The recommended-extensions program adds another layer. A small set of add-ons are designated as Recommended after a more thorough security and quality review and an ongoing relationship with Mozilla; these get prominent placement in AMO and a visible badge in Firefox itself. The program is curated and the bar is meaningfully higher, which means the recommended set is a defensible default for managed deployments where the goal is to allow productivity add-ons without underwriting the long tail. The flip side is that the program covers only a few hundred add-ons, and anything outside it is back to the standard review tier with the same caveats as Chrome.

How does Firefox handle auto-update and enterprise control?

Firefox auto-update for add-ons works similarly to Chrome at a high level; the browser polls AMO for new versions of installed add-ons and applies updates in the background. The differences show up in the policy surface. Firefox ESR ships with a documented enterprise policy schema that lets administrators pin specific add-on versions, restrict installation to an allowlist of add-on IDs, disable auto-update entirely for managed add-ons, and require add-ons to be installed only from a specific update URL controlled by the organization. The policies are deployed through standard Group Policy on Windows or policies.json on other platforms, which makes them easy to fit into existing endpoint management tooling.

Combined with Mozilla's signature kill switch, the ESR policy surface gives enterprise defenders a more complete control loop than Chrome's equivalent: signing prevents side-loaded malicious add-ons, ESR policies prevent silent updates from carrying compromised versions onto managed endpoints, and the AMO blocklist provides a remediation path when an add-on goes bad after the fact. None of these layers individually is a strong guarantee, but together they constrain the attacker's options in ways that matter when planning a managed Firefox deployment for a regulated environment.

The remaining hole is the unmanaged install case, which on Firefox looks much the same as on Chrome. A user who installs an add-on from AMO on a personal device is subject to the same acquired-and-weaponized risk, the same content script blast radius, and the same dependence on Mozilla noticing that something has gone wrong. The cryptographic signature does not help here because the malicious version is also signed; it is signed because Mozilla accepted it through the standard publish flow.

What should defenders model differently for Firefox versus Chrome?

The practical answer in 2026 is that Firefox's signing requirement and ESR policy surface make it a more tractable platform for managed deployments where the security team wants strong control over which add-ons run and at which versions. If your population is mostly managed and your add-on needs map to the recommended-extensions set plus a small list of internal tools, Firefox gives you a clean enforcement path that is harder to assemble on Chrome without third-party tooling. The cost is that the ecosystem is smaller, some add-ons that exist on Chrome do not exist on Firefox, and your users will sometimes ask for things you cannot give them.

For unmanaged or BYOD populations, the difference narrows considerably. The same acquired-and-weaponized risk applies, the same content script primitives are available to attackers, and the same lack of cryptographic provenance back to source code means that a determined attacker can ship a malicious version through the standard publish flow and have it signed and distributed to every existing user. Detection still depends on inventory, diffing, and behavioral monitoring rather than on platform guarantees.

The honest framing is that Mozilla has built more enforcement primitives than Google has, but it has not solved the underlying problem of upstream identity and provenance for browser extensions any more than Google has. The choice between the two platforms is mostly about how much of the enforcement you want the browser vendor to do for you versus how much you want to do yourself with external tooling, not about whether the underlying ecosystem is safe.

How Safeguard Helps

Safeguard inventories Firefox and Chrome extensions in parallel so that a multi-browser environment shows up as a single risk surface instead of two disconnected ones. Our extension tracking records the publisher identity, signature state, AMO review tier, and full version history for every add-on we see, and Griffin AI flags ownership transfers, permission expansions, and behavioral changes that correlate with known marketplace abuse patterns. Reachability analysis tells you which add-ons actually touch sensitive web applications versus which ones never interact with anything that matters, so prioritization is concrete rather than guessed. TPRM workflows let you treat publishers as vendors with their own risk profiles and require recommended-extensions status or explicit security review before broad rollout. Policy gates enforce ESR policy state, signature validity, and version pinning across managed endpoints, and SBOM exports keep your browser extension fleet visible in the same audits as your application dependencies.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.