@@ -22,4 +22,57 @@ We respond within 48 hours.
2222- Dependabot for dependency updates
2323- CodeQL for code scanning
2424- Secret scanning and push protection
25+ - ` panic-attacker ` static analysis for all submissions
26+
27+ ## False Positives in Static Analysis
28+
29+ ### ` eval() ` Usage in DevTools
30+
31+ FireFlag uses ` browser.devtools.inspectedWindow.eval() ` in:
32+ - ` extension/lib/rescript/DevTools.res.js `
33+ - ` extension/devtools/panel.js `
34+
35+ ** This is not a security vulnerability.** The ` eval() ` is called via the Firefox DevTools API, which:
36+ - Operates in the inspected page's context (not the extension's context)
37+ - Requires explicit user action (opening DevTools)
38+ - Is sandboxed by Firefox's security model
39+
40+ This is standard practice for DevTools extensions and is required for functionality like performance metric collection.
41+
42+ ### Hardcoded Secrets in ` sign-extension.sh `
43+
44+ The ` scripts/sign-extension.sh ` script does ** not** contain hardcoded secrets. It:
45+ - Reads credentials from environment variables (` MOZILLA_API_KEY ` , ` MOZILLA_API_SECRET ` )
46+ - Accepts credentials via command-line arguments
47+ - Never stores or commits secrets
48+
49+ This is a false positive from static analysis tools detecting variable names like ` API_KEY ` and ` API_SECRET ` .
50+
51+ ## Known Limitations
52+
53+ ### DOM Manipulation
54+
55+ ` extension/lib/dom-utils.js ` uses ` innerHTML ` and ` document.write ` for:
56+ - Rendering extension UI components
57+ - Injecting flag documentation into panels
58+
59+ ** Mitigations:**
60+ - All content is controlled by the extension (no user input)
61+ - No dynamic evaluation of untrusted data
62+ - Content Security Policy (CSP) restricts script sources
63+
64+ ### Supply Chain (Nix Flake)
65+
66+ ` flake.nix ` inputs are not pinned with ` narHash ` or ` rev ` . This is a low-risk issue because:
67+ - Flakes are only used for development/reproducible builds
68+ - Production builds use locked dependencies (` package-lock.json ` , ` Cargo.lock ` )
69+ - The extension itself has no runtime dependencies
70+
71+ ## Security Checklist for Submissions
72+
73+ 1 . ** Static Analysis** : Run ` panic-attacker assail ` and address all critical findings.
74+ 2 . ** False Positives** : Document legitimate uses of ` eval() ` and secret handling.
75+ 3 . ** Privacy Policy** : Ensure ` privacy_policy_url ` is set in ` manifest.json ` .
76+ 4 . ** CSP** : Verify Content Security Policy in ` manifest.json ` .
77+ 5 . ** Permissions** : Review and justify all requested permissions.
2578
0 commit comments