ApostropheCMS: Fehlende Authentifizierung in der Route `cleanExport`
1. Zusammenfassung
Dem API-Endpunkt POST /api/v1/@apostrophecms/import-export/clean-export in @apostrophecms/import-export fehlen Authentifizierungs- und Autorisierungsprüfungen. Jeder Client – einschließlich nicht authentifizierter anonymer Benutzer, die beim Besuch der Website das standardmäßige CSRF-Cookie erhalten haben – kann diese Route direkt aufrufen und die zugrunde liegende Methode self.cleanExport(req) auslösen.
2. Betroffene Dateien & Endpunkte
- Endpunkt:
POST /api/v1/@apostrophecms/import-export/clean-export - Routendefinition:
packages/import-export/lib/apiRoutes.js(Zeilen 32–34) - Methodenimplementierung:
packages/import-export/lib/methods/import.js(Zeilen 1271–1324)
3. Ursachenanalyse
In packages/import-export/lib/apiRoutes.js validiert der Handler get.related explizit, dass der Aufrufer angemeldet ist:
get: {
async related(req) {
if (!req.user) {
throw self.apos.error('forbidden');
}
// ...
}
}
Im Gegensatz dazu fehlt in post.cleanExport (sowie in post.overrideDuplicates) jegliche Überprüfung von req.user:
post: {
async overrideDuplicates(req) {
return self.overrideDuplicates(req);
},
async cleanExport(req) {
return self.cleanExport(req); // <-- No authentication check
}
}
Da ApostropheCMS die Authentifizierung nicht global für alle apiRoutes erzwingt, führt das Weglassen einer expliziten Absicherung über if (!req.user) dazu, dass anonyme Anfragen direkt an die Geschäftslogikschicht weitergeleitet werden.
4. Nachweis
Beim Senden einer nicht authentifizierten POST-Anfrage mit dem CSRF-Cookie der Website (das jedem Besucher auf GET / ausgestellt wird) umgeht die Anfrage die Zugriffskontrolle vollständig und führt self.cleanExport(req) aus, wie der Server-Stack-Trace zeigt:
at Object.cleanExport (.../packages/import-export/lib/methods/import.js)
at .../packages/apostrophe/modules/@apostrophecms/module/index.js:193:30
Dies bestätigt, dass die Ausführung ohne authentifizierte Sitzung direkt den zentralen Import-Export-Handler erreicht.
5. Auswirkungen
- Fehlerhafte Zugriffskontrolle: Nicht authentifizierte Benutzer können Bereinigungsoperationen aufrufen und auf dem Server gespeicherte temporäre Exportdateien sowie Artefakte löschen.
- Unbefugte Zustandsänderung: Der Endpunkt ermöglicht das Ändern von Job-Datensätzen in der Datenbank über
req.body.jobId(wodurch diese aufended: true, status: 'completed'gesetzt werden) und das Verwerfen von Benachrichtigungen überreq.body.notificationId, ohne zu prüfen, ob die Ressourcen dem anfragenden Aufrufer gehören.
6. Vorgeschlagene Behebung (Patch)
Erzwingen Sie eine Authentifizierungsprüfung in packages/import-export/lib/apiRoutes.js, bevor die zugrunde liegenden Methoden ausgeführt werden:
--- a/packages/import-export/lib/apiRoutes.js
+++ b/packages/import-export/lib/apiRoutes.js
@@ -26,10 +26,16 @@ module.exports = self => {
get: { ... },
post: {
async overrideDuplicates(req) {
+ if (!req.user) {
+ throw self.apos.error('forbidden');
+ }
return self.overrideDuplicates(req);
},
async cleanExport(req) {
+ if (!req.user) {
+ throw self.apos.error('forbidden');
+ }
return self.cleanExport(req);
}
}
Was zu tun ist
Aktualisieren Sie @apostrophecms/import-export auf Version 3.7.1 oder höher. Alternativ implementieren Sie eine Authentifizierungsprüfung in packages/import-export/lib/apiRoutes.js vor der Ausführung der zugrunde liegenden Methoden.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | @apostrophecms/import-export | < 3.7.1 | 3.7.1 |
Verweise
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-rw26-wwfc-9wvm
- https://nvd.nist.gov/vuln/detail/CVE-2026-113648
- https://github.com/apostrophecms/apostrophe/commit/06e4b377f3c360f9e89c32dccd7e505ad5ddf498
- https://github.com/apostrophecms/apostrophe/commit/40b989b1a9dd23d30029b8ce7668634265cfe5ea
- https://github.com/apostrophecms/apostrophe
- https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/import-export@3.7.1
- CVSS-Vektor
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N- Schwäche (CWE)
CWE-306, CWE-862- Plattform
- npm
- Paket
@apostrophecms/import-export- Veröffentlicht
- 21.10.2026
- Aktualisiert
- 21.10.2026 20:24
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-rw26-wwfc-9wvm - CC BY 4.0
Schwachstellenhistorie: @apostrophecms/import-export
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
- 9
- Erste → letzte
- 03.2026 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Kritisch 1
- Hoch 1
- Mittel 6
- Niedrig 1
Veröffentlichungen pro Jahr
- 2026: 9
-
ApostropheCMS: Fehlende Authentifizierung in der Route `cleanExport` 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.