From 54adf11e1c8905c97512fcf29d8b3d75aa9eb0cb Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Thu, 26 Feb 2026 08:58:17 +0100 Subject: Initial security review docs for 1Password Firefox extension v8.12.2.38 Static analysis of the extracted XPI covering: - Architecture: runtime topology, WASM modules, boot sequence, permissions - Message catalog: ~50 background handlers, per-file content script messages - WebAuthn analysis: page-world monkey-patching, postMessage IPC protocol - Trust boundaries: 8 zones, 7 crossings, data lifecycle, attack surfaces - Telemetry: Snowplow, Sentry, DNS privacy proxy, opt-out controls - TODO: prioritized future work plan --- webauthn-analysis.md | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 webauthn-analysis.md (limited to 'webauthn-analysis.md') diff --git a/webauthn-analysis.md b/webauthn-analysis.md new file mode 100644 index 0000000..bb256af --- /dev/null +++ b/webauthn-analysis.md @@ -0,0 +1,160 @@ +# WebAuthn / Passkey Mediation Analysis + +The extension intercepts all WebAuthn (passkey) operations on every HTTPS page. This is the most security-sensitive component because it runs code in the **page world** (not the extension's isolated world). + +## Injection Chain + +``` +manifest.json + └─ content_scripts[1]: webauthn.js + webauthn-listeners.js + matches: https://*/* and http://localhost/* + run_at: document_start + all_frames: true + +webauthn.js (content script, ISOLATED world) + └─ Contains full inline menu / frame manager code (93KB) + └─ Communicates with background via chrome.runtime.sendMessage + +webauthn-injection-helper.js (bundled in webauthn.js) + └─ Creates a