ApostropheCMS: Nicht authentifizierter unbegrenzter Multipart-Upload führt zu DoS durch Festplattenüberlauf
Zusammenfassung
Der Endpunkt zur Formularübermittlung führt multer({ dest: os.tmpdir() }).any() vor jeglicher Authentifizierungs-, API-Schlüssel-, CSRF-äquivalenter oder Formular-Existenzlogik aus – ohne Größen-, Anzahl- oder Ratenbegrenzungen. Nicht authentifizierte Benutzer können pro Anfrage unbegrenzte Payloads auf die Festplatte streamen; eine Bereinigung erfolgt erst nach vollständigem Empfang des Datenstroms.
Details
packages/form/index.js apiRoutes.post.submit (L274–296): [ multer({ dest: os.tmpdir() }).any(), self.normalizeFiles, async function (req) { try { submitForm } finally { unlink files } } ]. Kein limits, keine Ratenbegrenzung, keine Vorabvalidierung. „CSRF“ ist ein Double-Submit-Cookie mit festem Wert (vulnlab.csrf=csrf, gesetzt bei jedem GET, express/index.js L694–703) — trivial anonym abrufbar.
PoC
$ curl -s -c csrfjar.cookies http://localhost:3100/ # get vulnlab.csrf=csrf (any GET)
$ df -P /tmp # before: used=1105212
$ curl -b csrfjar.cookies -X POST http://localhost:3100/api/v1/@apostrophecms/form/submit \
-F "file=@/tmp/opencode/big.bin;type=application/octet-stream" &
DURING transfer: used=1148668
still transferring: used=1226936 # +121MB mid-transfer on disk
http=500 time=1.78s sent=209715411B # generic error AFTER full staging
# Anonymous, zero credentials. 200MB written to /tmp pre-validation.
Auswirkungen
Jeder nicht authentifizierte Client kann den Server dazu zwingen, vollständige Anfrageinhalte im temporären Dateisystem zu speichern und per CPU zu dekodieren; parallele Anfragen erschöpfen Festplattenspeicher /tmp (Prozess-/Host-Absturz) und lasten die Ereignisschleife aus – ein trivialer Remote-DoS. Abgebrochene Übertragungen bergen das Risiko verwaister temporärer Dateien (keine req.aborted-Bereinigung).
Was zu tun ist
Aktualisieren Sie @apostrophecms/form auf Version 1.5.5 oder höher.
Legen Sie zudem für multer limits fest (fileSize, fields, parts, fieldSize); führen Sie Authentifizierungs-, Rollen- und Existenzprüfungen vor dem multer-Mount oder innerhalb des geprüften Handlers durch; löschen Sie zwischengespeicherte Dateien beim ersten Lesen und bei req.aborted/Fehlern; und implementieren Sie eine Ratenbegrenzung pro IP-Adresse.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | @apostrophecms/form | < 1.5.5 | 1.5.5 |
Verweise
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-89mh-mm8c-mv7f
- https://github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce
- https://github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350
- https://github.com/apostrophecms/apostrophe
- https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/form@1.5.5
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L- Schwäche (CWE)
CWE-770- Plattform
- npm
- Paket
@apostrophecms/form- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 21:23
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-89mh-mm8c-mv7f - CC BY 4.0
Schwachstellenhistorie: @apostrophecms/form
Alle veröffentlichten Schwachstellen dieses Pakets (npm-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 2
- Erste → letzte
- 10.2026 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Mittel 2
Veröffentlichungen pro Jahr
- 2026: 2
-
ApostropheCMS: Nicht authentifizierter unbegrenzter Multipart-Upload führt zu DoS durch Festplattenüberlauf dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.