Skip to content

chore(specs): security scan findings - #618

Merged
fclairamb merged 11 commits into
mainfrom
security/scan-specs-2026-10-20
Oct 20, 2026
Merged

fclairamb merged 11 commits into
mainfrom
security/scan-specs-2026-10-20

Conversation

@fclairamb

Copy link
Copy Markdown
Owner

Specs for the open findings of the daily security scan. Specs only, no code change.

Specs

Spec Severity Finding Summary
specs/todos/2026-10-20-01-sender-response-body-caps.md medium K1 (2026-10-20) The Google Chat, Gotify, Matrix, Mattermost, MS Teams, ntfy, Slack webhook and Zulip senders, and the RabbitMQ checker, read response bodies from a host the user chooses with no size cap. Only the timeout bounds them. A member pointing one at their own server can exhaust the server's memory, through the integration test endpoint, the notification jobs or the check workers. Same class as J1 (A2A), fixed in #608. Fix: one capped-read helper.

Scan of 2026-10-20 covered:

It also verified the A2A response cap of #608 (J1). No other new finding.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.15385% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.39%. Comparing base (3ee0007) to head (8eeca3e).

Files with missing lines Patch % Lines
server/internal/jmap/client.go 76.92% 3 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #618   +/-   ##
=======================================
  Coverage   83.38%   83.39%           
=======================================
  Files        1238     1239    +1     
  Lines      127061   127100   +39     
=======================================
+ Hits       105949   105989   +40     
+ Misses      21103    21102    -1     
  Partials        9        9           
Files with missing lines Coverage Δ
server/internal/checkers/checkrabbitmq/checker.go 76.92% <100.00%> (+0.84%) ⬆️
server/internal/integrations/freebox/client.go 86.76% <100.00%> (+0.19%) ⬆️
server/internal/notifications/body_cap.go 100.00% <100.00%> (ø)
server/internal/notifications/googlechat.go 77.23% <100.00%> (ø)
server/internal/notifications/gotify.go 89.10% <100.00%> (ø)
server/internal/notifications/matrix.go 87.66% <100.00%> (+1.85%) ⬆️
server/internal/notifications/mattermost.go 87.93% <100.00%> (ø)
server/internal/notifications/msteams.go 92.78% <100.00%> (ø)
server/internal/notifications/ntfy.go 87.50% <100.00%> (+1.78%) ⬆️
server/internal/notifications/pagerduty.go 91.42% <100.00%> (ø)
... and 4 more

... and 13 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

fclairamb and others added 8 commits October 20, 2026 21:59
Senders talking to a user-chosen host (Google Chat, Gotify, Matrix,
Mattermost, Teams, ntfy, Slack webhook, Zulip) read the response whole,
so a hostile host could stream gigabytes into memory until the 30 s
timeout. They now read at most 16 KiB and put at most 512 B into the
error string. Matrix, Zulip and Pushover fail with a clear error when a
success answer goes over the cap. PagerDuty and Pushover are capped too
for consistency.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The management mode read /api/nodes and the alarms endpoint whole from
a user-chosen host. It now reads at most 1 MiB and fails with
"management API response too large" instead of parsing a truncated
body. Error bodies put in the result are cut to 512 B.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Freebox client (base URL from the integration) now reads at most
1 MiB per answer, and the JMAP client (session URL from the
integration) at most 16 MiB. Over the cap they fail with
ErrResponseTooLarge. JMAP error bodies in error strings are cut to
512 B.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@fclairamb
fclairamb enabled auto-merge (squash) October 20, 2026 22:39
@fclairamb
fclairamb merged commit 48b6cf5 into main Oct 20, 2026
33 checks passed
@fclairamb
fclairamb deleted the security/scan-specs-2026-10-20 branch October 20, 2026 23:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant