Files
felhom.eu/documentation/audits/security-2026-11-02/TRIAGE.md
T

48 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Security notices first seen since 2026-10-29 — the triage (2026-11-02 night)
Input: the watch's memory (`documentation/security-watch/state.json`, every notice with `first` ≥ 2026-10-29) plus the fixed
watch's dry run (`part1/dry-local-after-fix.log`, 13 new lines). Each notice was read in its own text (the release body, the GHSA);
the versions of the waiters were **read from the image** (`waiters.txt`), never from notes. Fleet: three test boxes report, no
household. „Lane" = a `security_fix` step (`09` §3 decision 255): same main version, a public id, a proven 9202 walk.
## The table of the brief
| App (our pin) | Notice | Real? | Reach in our template | Fixed in | What happens |
|---|---|---|---|---|---|
| Vaultwarden 1.37.4-alpine | release 1.37.5: GHSA-x9cq-f669-vrr4 (website icons, medium 5.3), GHSA-9pjj-f9g5-3x4c (emergency access, medium 4.3); both still private upstream | **real** | own login; the icon route is public | 1.37.5-alpine | **Lane.** Upgrade notes: „invalid values now stop startup" — our template sets none of the named options (grep) |
| Uptime Kuma 2.5.7 | GHSA-86ch-2247-gr56 (unauth RSS cache poisoning by Host header, medium, `>= 2.1.0, <= 2.5.8`); GHSA-v2p3-6f5h-6hhf (admin-only RCE via Apprise, high, fixed 2.5.8) | **real** | RSS only if a public status page exists; v2p3 needs the admin | 2.5.9 | **Lane**, and it crosses 2.5.8, which the 10-27 batch refused: it drops TLS on the TCP-port monitor. Upstream: „never worked as expected … all existing monitors will become normal TCP monitors". Decided by CC unattended (operator may reverse): the fix outweighs it, no box runs Kuma, and no data is touched. Named on the list |
| n8n 2.44.7 | 12 GHSAs first seen 10-29 | **real** | own login; two reach before login (`GHSA-426f` OAuth callback, `GHSA-mx4r` Asana trigger) | nine in 2.45.5 / 2.46.1; **three only in 3.0.1** (`GHSA-9p7v` high, `GHSA-mx4r`, `GHSA-2x68`) | **Lane to 2.46.4** for the nine; the three go to a big step (a new main version), row filed. `GHSA-365g` names no fix |
| PrivateBin 2.1.0 | GHSA-hw9p-r7fq-8mvr (comment replay, medium), GHSA-c4gc-8mcm-hh65 (2.1.0's XSS fix is ineffective, medium) | **real** | public by design | 2.1.1 — **no release and no image exist** (PrivateBin's newest release is 2.1.0; `privatebin/pdo` has no 2.1.1 tag) | **No step tonight.** Row filed; the watch keeps it open |
| Traefik v3.7.16 (box) | `release:traefik@v3.7.17` | **REAL — not the false alarm the brief expected.** The word-only line („Point security announcements …") hid a real id in the same notes: **GHSA-xv5x-242w-7hf7, high, published 2026-11-02 09:15 UTC**: an unauthenticated client holds a backend transport per connection (v3.7.14–v3.7.16) until memory runs out, NTLM backend or not | every box, in front of everything | v3.7.17 | **Pin committed**, controller `c4b6844`; proven on 9202 on the test image. **First on the release list** |
## What else was first seen since Thursday
| App (our pin) | Notice | Real? | What happens |
|---|---|---|---|
| Gitea 28.2.0 (catalog) | 21 GHSAs fixed in 28.3.0 (high: `GHSA-8p3x` OAuth2 auto-link account takeover, `GHSA-jh8p`, `GHSA-37xv`, `GHSA-8g99`, `GHSA-32h8`, `GHSA-9v6p`, `GHSA-6h2f`) | **real** | **Lane.** `GHSA-x4q3` is the runner's, not ours (now not listed, R-1310) |
| Gitea 1.26.2 on **DooPlex** | 19 of the same | **real, on the host that holds our code and registry** | Not ours to touch: homelab list, filed; first on that list |
| Vaultwarden 1.37.4, Uptime Kuma 2.5.6 on **DooPlex** | as above | real | Homelab list |
| FileBrowser 1.5.8-stable (box) | GHSA-892f-9h5p-mfc8 (low): `/api/settings` shows secrets to an ADMIN's token | real, admin only | R-1305's list; the fix is on 2.1.0-stable (a new main version) |
| cloudflared 2026.10.4 (box) | VULN-183456 (2026.10.5, chi bump), VULN-184686 (2026.10.6, go-jose bump) | real dependency fixes, no public text on reach | Row filed: raise it on a controller release after a tunnel proof (the newest is 2026.10.7). Not pinned tonight: the tunnel is a box's only door, and 9202 has none to prove it on |
| Grafana 13.2.4 | release 13.2.5 names four CVEs (first seen 10-28) | real | **Lane.** |
| Mealie v3.29.0 | v3.30.0: „update dependency pillow to v13 [security]" | a dependency fix, no id | Normal step (bench + box, drill only). v3.30.0 also removes `OPENAI_CUSTOM_PROMPT_DIR` (imported automatically; our template does not set it). Row filed |
| Termix 26.10.5 | v26.10.6: „body-parser is updated to 2.4.0 for a security fix" | a dependency fix, no id | Normal step, drill only. Row filed |
| Meilisearch v1.41.0 (karakeep), v1.36.0 (wanderer) | v1.55.1 / v1.56.1: „important security fixes" (long filters, rustls) | real, but the search engine sits on the app's private network | Not reachable from outside. A jump of 15–20 versions needs its dump migration: a big step. Row filed |
| Actual 26.9.0 | GHSA-p7p2-pm6f-rg6x (Electron fuse, desktop app) | `NOT-A-FINDING`: the desktop client, we run the server | Fixed in 26.11.0 anyway, the waiter's step below |
| Paperless 3.3.4 on DooPlex | v3.4.0 „bump some frontend deps for security fixes" | real | Homelab list |
## The six HTTP2Shell waiters (CVE-2026-111497) — read from the image
| App | Pin | Newest same shape | Runtime in the newest | Fixed release? | What happens |
|---|---|---|---|---|---|
| ActualBudget (R-1336) | 26.9.0 (Node 24.20.0) | 26.11.0 | **Node 24.22.1** | **YES**, same main | **Lane** |
| cal.com (R-1329, R-1325) | v6.2.0 (Node 20.20.0) | v6.2.0 | Node 20.20.0 | no | Waits |
| Calibre-Web (R-1337) | v4.0.8 (Python Brotli 1.2.0) | v4.0.8 | same | no | Waits |
| Paperless (R-1331) | 2.20.15 (Python Brotli 1.1.0) | 3.4.1 | **clean** (3.4.0 and 3.4.1; 3.3.4 still bad) | **YES, a new main version** | Big step: bench + 9202 + undo, drill only |
| RomM (R-1330) | 5.4.1 (Node 24.18.1) | 5.4.1 | same | no | Waits (D61) |
| SparkyFitness | v0.17.3 (Node 24.18.0) | v1.11.0 | **Node 24.22.1** (v1.10.0 and v1.11.0; v1.9.0 still bad) | **YES, a new main version** | Big step; R-784 (licence) and R-785 stand before it |
## The walks
See `walks/<app>/walk.txt` and `box-verdict-<app>.json`; the result of each is in the close-out below.