Browser Developers

Engineering service

Extension Security Audit & Bug Finding

We audit your extension's permissions, code, and runtime behavior to find what an attacker could exploit, then help you fix it.

See what we engineer
  • 15+ years of experience
  • 300+ projects delivered
  • Clients worldwide
  • NDA available

Overview

What this is, and when it is the right call

An extension can read pages, act on behalf of the user and talk to remote servers, so a weakness in it can affect every site the user visits. Common problems include permissions that are broader than needed, unchecked messages and code that trusts page content.

We review the manifest, the source and the running extension, then report what we found and how to reproduce it. We can also fix the issues, if agreed up front. No review can promise that nothing remains, so every report states what was tested and how.

Who this is for

  • Teams about to publish or update an extension that requests broad permissions.
  • Products that handle user data, credentials or page content and need an independent review.
  • Companies whose customers or store reviewers have asked how the extension was reviewed.
  • Teams that inherited an extension codebase and do not know what it exposes.

How it works

How a security review runs

The review follows the way an attacker would approach the extension, starting from what it can access.

  1. Threat model

    Map what the extension can access, who can send it data and what an attacker would want.

    You get: A model of assets and entry points

  2. Permission review

    Compare the manifest against what the features actually need.

    You get: Permissions to remove or make optional

  3. Code review

    Read the source for unsafe injection, weak message handling and stored secrets.

    You get: Findings tied to files and lines

  4. Dynamic testing

    Run the extension against hostile pages and crafted messages to confirm what is exploitable.

    You get: Confirmed issues with proof

  5. Report and fixes

    Deliver findings with severity, reproduction steps and recommended fixes, or apply the fixes if agreed.

    You get: A written report

  6. Retest

    Check that each fix closes the issue and did not open a new one.

    You get: Confirmation per finding

What we offer

What we engineer: Extension Security Audit & Bug Finding

Threat Modeling & Attack Surface Mapping

Map what the extension can read, which sites it runs on, and where attacker-controlled input enters before we write a single test case.

Manifest & Permission Review

Line up every requested host and API permission against the feature that actually uses it, and flag the ones that do not.

Content Script & Injection Review

Read content script code for DOM XSS sinks, such as innerHTML or eval-like calls fed by untrusted page data.

Message Handler & Origin Checks

Verify that runtime and window message listeners check sender and origin before acting on the payload.

Dynamic Exploit Testing

Run the extension against crafted pages and messages to confirm which findings are actually exploitable.

Remediation & Fix Verification

Apply fixes when that is part of the engagement, then retest each finding to confirm it is closed.

Deliverables

What you get

  • 01

    Threat model

    A short description of what the extension can reach and where untrusted input enters.

  • 02

    Findings report

    Each issue with severity, reproduction steps, affected code and a recommended fix.

  • 03

    Permission recommendations

    A least-privilege manifest proposal, including which permissions could become optional.

  • 04

    Fixes if agreed

    Code changes for the issues found, when fixing is part of the engagement.

  • 05

    Retest results

    Confirmation that each fixed issue is closed, recorded against the original finding.

  • 06

    Shareable summary

    A shorter summary written for store reviewers or your customers, on request.

Compare

What we check

The scope is agreed per extension. These are the areas we start from.

What we check
AreaTypical problemWhat we look for
PermissionsBroad host or API permissions that features do not need.A least-privilege manifest and permissions that can be requested optionally, when needed.
Content scriptsUntrusted data injected into pages.DOM XSS sinks such as innerHTML and eval-like calls fed by page or server data.
MessagingAccepting messages from any web page or extension.Sender and origin checks on runtime messages and window messages.
Secrets and authKeys or tokens shipped in the package or stored insecurely.How the OAuth flow works and where tokens and credentials are stored.
Remote contentLoading or executing code fetched at runtime.Content security policy settings and third-party scripts.
DependenciesVulnerable or unmaintained packages.Dependency audit results and the integrity of the build process.

Why it matters

What this gives you

Findings Tied to Exact Code

Each finding names the file, function, and line involved, so a developer can act without re-deriving the bug.

Ranked by What an Attacker Could Do

Findings are ordered by real-world impact, not just by vulnerability category.

Manifest, Code, and Runtime, Together

The review covers the static manifest, the source, and the extension running against hostile input, not just one of the three.

A Separate Track from Functional QA

Compatibility and performance testing are out of scope here; that work is a separate service, so this review stays focused on exploitable risk.

Our approach

How an engagement runs

  1. Scope and access

    You share the source, a build, test accounts and an architecture overview, and we agree scope and rules.

    You get: An agreed scope

  2. Review

    We work through the manifest, code and running extension, and flag serious issues as soon as we confirm them.

    You get: Early notice of serious findings

  3. Report

    We deliver a written report and walk your team through it.

    You get: A report and a review session

  4. Fix and retest

    Your team or ours fixes the issues, as agreed, and we retest each one.

    You get: Retest results

When this is not the right fit

A few cases where this approach may not be the best choice for you.

  • A certification or guarantee that no vulnerabilities remain. We report exactly what we tested and how.
  • Functional bugs, compatibility problems or performance regressions. Those belong to the extension QA service.

Tech stack

Technologies we use

The engines, APIs and tools behind our extension security audit & bug finding work.

Content Security PolicyOAuth 2.0Manifest AnalysispostMessage ValidationStatic Code ReviewDependency Auditing

FAQ

Questions engineers ask before starting

Both are possible, and we agree which up front. Some teams want a report their developers act on, and others want us to make the fixes.

Talk to a Browser Engineer

Get Your Extension Audited by Browser Engineers

Send us the extension and its permission set. We will find what an attacker could exploit and help you fix it.

Tell Us What You're Building