Skip to content

Security review (2026-05-25): SEC-17 qs+ws moderate advisories, fixed inline; closed SEC-02#169

Merged
pokle merged 1 commit into
masterfrom
claude/friendly-fermi-aGDVn
May 26, 2026
Merged

Security review (2026-05-25): SEC-17 qs+ws moderate advisories, fixed inline; closed SEC-02#169
pokle merged 1 commit into
masterfrom
claude/friendly-fermi-aGDVn

Conversation

@pokle
Copy link
Copy Markdown
Owner

@pokle pokle commented May 25, 2026

Summary

Periodic whole-repo security review for 2026-05-25. No new application code landed since the last round (2026-05-18, up to 03760b4) — the only commit since is the prior review's own PR — so re-verification confirmed the SEC-01 / SEC-10 / SEC-11 / SEC-12 / SEC-15 / SEC-16 fixes all hold byte-for-byte. No Critical or High findings.

New finding fixed inline

  • SEC-17 (Moderate / negligible reachability)bun audit surfaced two new moderate transitive advisories:
    • qs (>=6.11.1 <=6.15.1, GHSA-q8mj-m7cp-5q26, stringify DoS) pulled in via @modelcontextprotocol/sdk → express. The express HTTP transport is unused on Workers; our only qs token is a local URLSearchParams variable in mcp-api/src/tools/audit.ts:42. Not reachable in production.
    • ws (>=8.0.0 <8.20.1, GHSA-58qx-3vcg-4xpx, memory disclosure) pulled in via dev/test tooling (jsdom, miniflare, wrangler). Never ships to the Workers runtime or static frontend.
    • Fix: package.json overrides bumps to qs@^6.15.2 and ws@^8.20.1. bun audit is clean again; the single-entry resolutions are qs@6.15.2 and ws@8.21.0.

Long-standing finding closed inline

  • SEC-02 (Medium) — added web/frontend/public/_headers. Enforced: X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy. CSP ships as Content-Security-Policy-Report-Only (with allowances for OSM/OpenTopoMap/ArcGIS tiles, Mapbox api/events, Google Fonts, and blob: workers for Mapbox GL) — staged Report-Only so it cannot break the live map/fonts before a CSP-report pass on the Pages deploy. Flipping to enforce is tracked as scope-gap Add dark/light/system theme switching commands #8.

Verification

  • bun auditNo vulnerabilities found
  • bun run typecheck:all → clean
  • bun run test:all → green (251 competition-api + 21 mcp-api + engine/airscore/root). The ws minor bump did not break the miniflare-backed test runners.

The full round (methodology, prior-findings status table, SEC-17 writeup, re-checked-clean list, scope gaps, and next-review pointers) is appended to docs/security-review.md under the 2026-05-25 — Re-review section.

⚠️ The new _headers CSP has not been verified against a live Pages deploy — it ships Report-Only precisely so it can't break the site before that verification. See scope-gap #8.

https://claude.ai/code/session_01SbpR5PPukRADh2PXqGX5EW


Generated by Claude Code

… inline; closed SEC-02 security headers

bun audit surfaced two new moderate transitive advisories since the last
round: qs (DoS via the MCP SDK's express dependency) and ws (memory
disclosure via dev/test tooling). Neither is reachable in production;
both fixed via package.json overrides (qs ^6.15.2, ws ^8.20.1) so
bun audit is clean again.

With no new application code since the prior round, also closed the
long-standing SEC-02 by adding web/frontend/public/_headers: enforced
X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and
Permissions-Policy, plus a Report-Only CSP staged so it cannot break
the live map/fonts before a CSP-report pass on the Pages deploy.

https://claude.ai/code/session_01SbpR5PPukRADh2PXqGX5EW
@github-actions
Copy link
Copy Markdown

Preview Deployment
https://7e5358d2.glidecomp.pages.dev
Commit: 5a4b11d

@pokle pokle marked this pull request as ready for review May 26, 2026 00:23
@pokle pokle merged commit 4e38f8e into master May 26, 2026
8 checks passed
@pokle pokle deleted the claude/friendly-fermi-aGDVn branch May 26, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants