How behavior is inferred statically

The analyzer parses JavaScript with an AST parser, then walks calls, assignments and member access. It records file, line, evidence and confidence. This is more precise than searching for words in minified text.

It also scans HTML for remote script tags and inline scripts, and extracts URLs for domain classification.

Related pages:remote script detectorbrowser plugin source analyzer

Prioritizing findings

Start with high-severity findings that combine access and transmission: eval or remote code references, native messaging, cookie access near network calls, password field references, and obfuscation with encoded payloads.

Read the surrounding code and check whether the path is reachable. A finding in a bundled library or dead code is different from one in the main content script.

Finding categories
CategoryExampleWhat it suggests
Dynamic codeeval, new FunctionCode built at runtime
Remote codescript src, importScriptsExecutable code outside the package
DOM injectioninnerHTML, document.writePage content modification
Sensitive datadocument.cookie, password fieldsPotential data access
Networkfetch, WebSocketCommunication capability
Obfuscationhex identifiers, base64 blobsReadability barrier

Related pages:Manifest V2 vs V3external domain finder

The limits of static behavior analysis

It cannot observe executed branches, server responses or user-specific data flows. It cannot prove that a network request happened. It is a review accelerator, not a sandbox.