Niedrig

ApostropheCMS: Fehlende Authentifizierung in der Route `cleanExport`

  • Veröffentlicht: 21.10.2026
  • Aktualisiert: 21.10.2026 20:24

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:

js
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:

js
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

  1. Fehlerhafte Zugriffskontrolle: Nicht authentifizierte Benutzer können Bereinigungsoperationen aufrufen und auf dem Server gespeicherte temporäre Exportdateien sowie Artefakte löschen.
  2. Unbefugte Zustandsänderung: Der Endpunkt ermöglicht das Ändern von Job-Datensätzen in der Datenbank über req.body.jobId (wodurch diese auf ended: true, status: 'completed' gesetzt werden) und das Verwerfen von Benachrichtigungen über req.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:

diff
--- 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.

PlattformPaketAnfällige VersionenBehoben in
npm-Paket @apostrophecms/import-export < 3.7.1 3.7.1

Verweise

CVSS-Wert 3.1/10
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.

Alle (9) im Archiv
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

  1. 2026: 9
Schweregrad:
  1. ApostropheCMS: Fehlende Authentifizierung in der Route `cleanExport` dieser Eintrag
    Niedrig · 3.1 CVE-2026-113648 < 3.7.1 3.7.1

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.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.