ApostropheCMS import-export: NoSQL-Injection über update-key-Wert erlaubt das Abgleichen und Überschreiben eines unidentifizierten Dokuments
Zusammenfassung
Die Update-by-Key-Funktion von @apostrophecms/import-export ermöglicht es, dass ein importiertes Dokument eine Eigenschaft <field>:key trägt (beispielsweise slug:key), deren Wert verwendet wird, um ein bestehendes Dokument zur Aktualisierung zu finden, anstatt ein neues einzufügen. getUpdateKey()/insertOrUpdateDocWithKey() (lib/methods/import.js) verwenden diesen Wert direkt und ohne Bereinigung als MongoDB-Abfragewert:
const matchingDraftPromise = manager.findForEditing(
req.clone({ mode: 'draft' }),
{
aposMode: 'draft',
[updateField]: doc[updateKey]
}).toObject();
Archivdokumente werden mit EJSON geparst (siehe lib/formats/gzip.js), wodurch Objekte wie { $ne: null } als Live-Werte wiederhergestellt werden. Dies entspricht derselben nicht vertrauenswürdigen Datenquelle und demselben Wiederherstellungsmechanismus, der in diesem Modul bereits für findSingletonAposDocId/findParkedAposDocId in GHSA-79qf-vqgc-7xx3 behoben wurde. Diese Fehlerbehebung betraf insertOrUpdateDocWithKey jedoch nicht, sodass dieselbe Fehlerklasse hier weiterbesteht: Ein manipulierter Eintrag "slug:key": { "$ne": null } in der aposDocs.json eines Archivs führt dazu, dass der Import ein vorhandenes Dokument abgleicht (und anschließend aktualisiert), das der Autor des Archivs eigentlich nie angegeben hat, anstatt dass der Abgleich fehlschlägt.
Auswirkungen
Die Ausnutzung erfordert lediglich eine authentifizierte Sitzung mit Importberechtigung für den Zieltyp (die integrierte Contributor-Rolle verfügt darüber, was der Voraussetzung von GHSA-79qf-vqgc-7xx3 entspricht) und keinerlei Interaktion durch Administratoren. Da der Abgleich einen MongoDB-Operator anstelle eines exakten Werts verwendet, ist er nicht auf ein Dokument beschränkt, dessen Identifikationsfeld der Importeur bereits kennt: Jedes vorhandene Dokument, auf das der Importeur generische Bearbeitungsrechte besitzt und das den Operator erfüllt (was { $ne: null } trivial für jedes Dokument mit einem Nicht-Null-Wert in diesem Feld erfüllt), kommt infrage. Apostrophes Berechtigungsfilter findForEditing, nicht die Update-Key-Logik, ist der einzige Mechanismus, der einschränkt, welches Dokument tatsächlich abgeglichen und überschrieben wird.
Praktisch verifiziert: Eine Anfrage mit Contributor-Rolle, die ein Dokument mit "slug:key": { "$ne": null } importierte, wendete ihren Inhalt auf einen bestehenden, nicht verwandten Artikelentwurf an und überschrieb dessen Titel, obwohl der Importeur den tatsächlichen Slug des Artikels nie angegeben hatte.
Betroffene Versionen
Bestätigt auf dem HEAD des main-Branches zum Stand 2026-09-04, packages/import-export/lib/methods/import.js.
Vorgeschlagene Fehlerbehebung
Bereinigen Sie doc[updateKey] zu einer einfachen Zeichenkette (entsprechend der bereits für type/aposLocale/parkedId in GHSA-79qf-vqgc-7xx3 implementierten Lösung), bevor der Wert in einer Abfrage verwendet wird, und fallen Sie auf den Insert-Pfad zurück, wenn es sich um keine nutzbare Zeichenkette handelt.
Was zu tun ist
Aktualisieren Sie auf @apostrophecms/import-export Version 3.7.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 | @apostrophecms/import-export | < 3.7.0 | 3.7.0 |
Verweise
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-jqw5-w6h3-44g6
- 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/import-export@3.7.0
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L- Schwäche (CWE)
CWE-284, CWE-943- Plattform
- npm
- Paket
@apostrophecms/import-export- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 21:27
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-jqw5-w6h3-44g6 - 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
- 4
- Erste → letzte
- 03.2026 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Kritisch 1
- Mittel 3
Veröffentlichungen pro Jahr
- 2026: 4
-
ApostropheCMS import-export: NoSQL-Injection über update-key-Wert erlaubt das Abgleichen und Überschreiben eines unidentifizierten Dokuments 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.