Skip to content

Åtgärda gigantiska DoS-, cache- och säkerhetsbuggar#28

Draft
theoandesson wants to merge 1 commit into
mainfrom
cursor/fix-critical-bugs-4acd
Draft

Åtgärda gigantiska DoS-, cache- och säkerhetsbuggar#28
theoandesson wants to merge 1 commit into
mainfrom
cursor/fix-critical-bugs-4acd

Conversation

@theoandesson

Copy link
Copy Markdown
Owner

Sammanfattning

Hittade och åtgärdade flera allvarliga buggar i Sverige 3D-kartan: DoS via tile-proxy/refresh-stampede, fail-open perf-admin, permanent felaktig tile-cache i service workern, samt XSS-sinks.

Vad som var trasigt

  1. Tile-proxy kunde OOM:a processen – upp till ~5 GB cache (512 × 10 MB), utan byte-budget och med osäker content-type.
  2. Pressure/radar/weather refresh=true kunde starta parallella dyra upstream-hämtningar utan single-flight.
  3. forceRefresh koalescerade fel med bakgrundswarmerns stale-only-batch → “full refresh” kunde bli partiell.
  4. Perf-admin fail-open – öppet utanför produktion, och localhost-check via request.ip bröt bakom reverse proxy.
  5. Self-hosted SW-tilecache var “immutable forever”tiles:sync synkades aldrig till klienter.
  6. XSS – felmeddelanden/hover-HTML injicerades utan escapeHtml.

Fixar

  • Tile-proxy: 2 MB/tile, 64 MB total cache, streamad size-limit, endast säkra content-types
  • Single-flight + min refresh-intervall för Open-Meteo-grid och radar
  • Separata refresh-nycklar i city weather (force vs stale)
  • Perf-admin kräver token eller direkt loopback (inte request.ip)
  • Publik refresh=true på bootstrap/weather/cities kräver admin
  • /weather/point begränsad till Sverige
  • SW: daglig versionering + SWR för self-hosted tiles; legacy immutable-caches rensas
  • Tiles: ingen immutable på synkbara vector/DEM-URL:er
  • XSS-escape i place card + weather hover
  • Basala security headers (nosniff, frame, referrer, CORP)

Tester

  • npm run test:security (nya)
  • npm run test:tiles
  • npm run test:unit
Open in Web Open in Cursor 

Begränsa tile-proxyns minnesanvändning, koalescera dyra refresh-anrop,
stäng perf-admin fail-open, versionshantera self-hosted SW-tilecache och
escape:a dynamisk HTML i plats-/väder-UI.

Co-authored-by: theoandesson <theoandesson@users.noreply.github.com>
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