ApostropheCMS: Nicht authentifizierte CSV-Importanfragen hinterlassen abgelehnte Uploads im temporären Verzeichnis
Zusammenfassung
Ein abgelehnter Upload kann im temporären Verzeichnis des Betriebssystems verbleiben.
Multer speichert die Datei, bevor deren Erweiterung überprüft wird, und im Fehlerpfad der Ablehnung wird diese temporäre Datei nicht bereinigt. Ein nicht authentifizierter Anfragender kann diesen Vorgang mit großen Dateien wiederholen und so kontinuierlich den temporären Festplattenspeicher erschöpfen.
Details
Der betroffene Endpunkt lautet:
POST /api/v1/@apostrophecms/rich-text-widget/generate-csv-table
In packages/apostrophe/modules/@apostrophecms/rich-text-widget/lib/apiRoutes.js schreibt Multer den Upload zunächst nach os.tmpdir(). Der Handler weist anschließend Dateinamen zurück, deren Erweiterung nicht csv entspricht; allerdings erfolgt auf diesem Fehlerpfad keine Bereinigung der durch Multer erstellten Datei.
Die Route erfordert keine Authentifizierung eines Benutzers. Ein reguläres CSRF-Cookie ist ausreichend.
Während der Tests lieferte die Anfrage HTTP 400 mit Only csv files are supported zurück, während der vollständige hochgeladene Inhalt auch nach der Antwort in einer zufällig benannten Datei im konfigurierten temporären Verzeichnis verblieb.
Bezug zu früheren öffentlichen Arbeiten
Überprüft wurde PR #5013,, womit der Upload-Pfad für Rich-Text-CSV von connect-multiparty auf Multer umgestellt wurde. Dieser Bericht betrifft die Bereinigung nach dieser Migration: Die abgelehnte Multer-Datei verbleibt auf der Festplatte – ein Verhalten, das weder im PR noch in der zugehörigen Review-Diskussion beschrieben wurde.
Proof of Concept (PoC)
Erstellen Sie eine kleine Testdatei. Eine größere Datei kann verwendet werden, um das Anwachsen der Festplattenbelegung zu demonstrieren, aber 1 MiB genügen für eine sichere lokale Reproduktion:
dd if=/dev/zero of=rejected.txt bs=1M count=1
Rufen Sie die regulären Website-Cookies ab und senden Sie den abzulehnenden Upload:
curl -c cookies.txt 'http://127.0.0.1:3000/' > /dev/null
curl -i -b cookies.txt \
-F 'file=@rejected.txt;filename=rejected.txt;type=text/plain' \
'http://127.0.0.1:3000/api/v1/@apostrophecms/rich-text-widget/generate-csv-table'
Die Antwort lautet HTTP 400. Ein Vergleich des Inhalts des temporären Systemverzeichnisses vor und nach der Anfrage zeigt:
ls -lt /tmp
Eine neue Datei mit zufälligem Namen bleibt bestehen und enthält die hochgeladenen Bytes.
Es ist keine Anmeldung erforderlich. Das wiederholte Absenden der Multipart-Anfrage erzeugt zusätzliche persistente temporäre Dateien.
Auswirkungen
Ein entfernter, nicht authentifizierter Angreifer kann die Partition füllen, die für das temporäre Verzeichnis des Betriebssystems verwendet wird. Sobald diese Partition voll ist, können Apostrophe sowie andere unabhängige Dienste auf demselben Host möglicherweise keine Dateien mehr hochladen, keine temporären Daten mehr erstellen oder den normalen Betrieb einstellen.
Der Angriff erfordert lediglich wiederholte HTTP-Anfragen, und die gespeicherten Dateien verbleiben nach jeder abgelehnten Antwort auf dem System.
Was zu tun ist
Aktualisieren Sie auf ApostropheCMS Version 4.33.0 oder höher.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | apostrophe | < 4.33.0 | 4.33.0 |
Verweise
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-qhcq-9pm2-c9w9
- 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/apostrophe@4.33.0
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H- Schwäche (CWE)
CWE-400, CWE-459, CWE-770- Plattform
- npm
- Paket
apostrophe- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 21:26
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-qhcq-9pm2-c9w9 - CC BY 4.0
Schwachstellenhistorie: apostrophe
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
- 27
- Erste → letzte
- 09.2020 10.2026
- Ohne Fix
- 4
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Kritisch 2
- Hoch 8
- Mittel 13
- Niedrig 4
Veröffentlichungen pro Jahr
- 2020: 2
- 2021: 2
- 2022: 0
- 2023: 0
- 2024: 0
- 2025: 0
- 2026: 23
-
ApostropheCMS: Nicht authentifizierte CSV-Importanfragen hinterlassen abgelehnte Uploads im temporären Verzeichnis 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.