chore(sentry): suppress ms-browser-extension + about: CSP noise (round 2 triage)#3464
Conversation
Two more Sentry CSP-violation issues from a follow-up triage pass after PR #3460 merged: - WORLDMONITOR-JM (39 events / 21 users on Edge): font-src blocked ms-browser-extension://... — Microsoft Edge's extension scheme, variant of chrome|moz|safari extensions. Extended the existing extension regex to include `ms-browser` so blockedURI and sourceFile on this scheme suppress symmetrically. - WORLDMONITOR-JQ (23 events / 18 users on Samsung Internet / Tizen): frame-src blocked `about` (scheme-only) — Smart TV browsers and ad-injectors create about:blank / about:srcdoc iframes; we never set frame src to about:* ourselves. New branch suppresses bare `about` plus any `about:*` scheme URI. Tests: csp-filter +5 cases (ms-browser-extension URI/source, about scheme-only, about:blank, about:srcdoc). 174/174 pass.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryAdds two targeted CSP-violation suppressions to Confidence Score: 4/5Safe to merge; changes are narrow filter additions with no impact on legitimate violation reporting. Only P2 findings present. The single observation is a minor inconsistency (missing sourceFile guard on the about: branch vs. how blob: is handled) that leaves a narrow missed-suppression gap but introduces no false-suppression risk or security concern. No files require special attention; src/main.ts line 556 has a minor consistency note. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[CSP violation event] --> B{disposition == 'report-only'?}
B -- yes --> SUPPRESS[return true / suppress]
B -- no --> C{connect-src + cspAllowsHttps?}
C -- yes --> D{HTTPS URI?}
D -- yes --> SUPPRESS
D -- no --> E{YouTube IFrame API?}
E -- yes --> SUPPRESS
E -- no --> F{Zscaler frame-src?}
F -- yes --> SUPPRESS
F -- no --> G{"extension scheme?\n(chrome|moz|safari|ms-browser)-extension"}
G -- yes --> SUPPRESS
G -- no --> H{"blob: / eval / inline / data?"}
H -- yes --> SUPPRESS
H -- no --> I{"about or about:* (NEW)"}
I -- yes --> SUPPRESS
I -- no --> J{"android-webview / manifest /\nthird-party injectors / localhost"}
J -- yes --> SUPPRESS
J -- no --> REPORT[return false / send to Sentry]
|
koala73#3464) Two more Sentry CSP-violation issues from a follow-up triage pass after PR koala73#3460 merged: - WORLDMONITOR-JM (39 events / 21 users on Edge): font-src blocked ms-browser-extension://... — Microsoft Edge's extension scheme, variant of chrome|moz|safari extensions. Extended the existing extension regex to include `ms-browser` so blockedURI and sourceFile on this scheme suppress symmetrically. - WORLDMONITOR-JQ (23 events / 18 users on Samsung Internet / Tizen): frame-src blocked `about` (scheme-only) — Smart TV browsers and ad-injectors create about:blank / about:srcdoc iframes; we never set frame src to about:* ourselves. New branch suppresses bare `about` plus any `about:*` scheme URI. Tests: csp-filter +5 cases (ms-browser-extension URI/source, about scheme-only, about:blank, about:srcdoc). 174/174 pass.
Summary
Round-2 Sentry triage on top of #3460 (now merged). Two more CSP-violation issues that fall through the existing
shouldSuppressCspViolationfilter, both clearly third-party noise:font-srcblockedms-browser-extension://...— Microsoft Edge's extension scheme, the variant ofchrome|moz|safari(?:-web)?-extension our regex already handled. Extended the regex to(?:chrome|moz|safari(?:-web)?|ms-browser)-extensionsoblockedURIandsourceFilematches stay symmetric.frame-srcblockedabout(scheme-only) — Smart TV browsers, ad-injectors, and some extensions createabout:blank/about:srcdociframes. We never set framesrctoabout:*ourselves. New branch suppresses bareaboutplus anyabout:*URI.Both issues marked
resolved/inNextReleasein Sentry — they auto-reopen if the suppression somehow misses them after deploy.Two issues from the same triage pass were intentionally left open rather than filtered:
TimeoutError: signal timed out, 82/72): the existingsignal timed outrule inbeforeSendis stack-gated by design, since AbortSignal-based timeouts CAN come from our own fetch calls. Old, low-volume, no actionable lead.Dodo checkout declined, 3/2): deliberate operational signal atsrc/components/checkout-failure-banner.ts:32(Sentry.captureMessage(..., { level: 'warning' })). Low volume, intentional.Test plan
npm run typecheck— PASSnpm run typecheck:api— PASSscripts/*.cjs— PASSnpm run lint(biome) — 0 errorsnpm run test:data— 7522/7522node --test tests/edge-functions.test.mjs— 178/178npm run lint:md— 0 errorsnpm run version:check— 2.8.0 sync OKtests/csp-filter.test.mjs— 49/49 (+5: ms-browser-extension URI, ms-browser-extension source, about scheme-only, about:blank, about:srcdoc)