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.
| Category | Example | What it suggests |
|---|---|---|
| Dynamic code | eval, new Function | Code built at runtime |
| Remote code | script src, importScripts | Executable code outside the package |
| DOM injection | innerHTML, document.write | Page content modification |
| Sensitive data | document.cookie, password fields | Potential data access |
| Network | fetch, WebSocket | Communication capability |
| Obfuscation | hex identifiers, base64 blobs | Readability 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.