ApostropheCMS: REST-Route :_id/locales lässt Autorisierungsprüfung der öffentlichen API aus (Offenlegung von Dokumentexistenz und Lokalisierungsmetadaten)
Übersicht
Die REST-Route GET /api/v1/<piece-type>/:_id/locales (sowie die entsprechende Seiten-Route) wendet die Autorisierungsprüfung publicApiCheckAsync nicht an, die von anderen Lese-Routen in ApostropheCMS durchgesetzt wird. Ein nicht authentifizierter Anfrager kann diese Route für ein beliebiges Dokument _id abfragen und in Erfahrung bringen, ob das Dokument existiert und in welchen Sprachversionen (Locales) es veröffentlicht ist. Dies stellt eine Offenlegung von Dokumentexistenz und Lokalisierungsmetadaten dar, die durch die Lese-API geschützt sein sollte.
Betroffene Komponenten
- Repository:
apostrophecms/apostrophe(Monorepo-Paketapostrophe). - Bestätigt bei: 4.32.2 (Commit
d3ff8c9entspricht dem ausgelieferten 4.32.2; unverändert im aktuellen HEAD zum Zeitpunkt der Meldung). Zum Meldezeitpunkt lag kein Fix vor. - Stack: Node.js / Express + MongoDB.
- Endpunkte:
GET /api/v1/<piece-type>/:_id/localesundGET /api/v1/@apostrophecms/page/:_id/locales.
Technische Details
- Unsicher:
modules/@apostrophecms/piece-type/index.js:397registriert die Route:_id/localesohnepublicApiCheckAsync. Das Seiten-Modul weist dieselbe Lücke untermodules/@apostrophecms/page/index.js:925auf. - Geschützte Nachbar-Routen: Lese-Routen im selben Modul (z. B.
getAllunterpiece-type/index.js:256-263) rufenpublicApiCheckAsync(:263) auf, um die Zugriffsrichtlinie der öffentlichen API zu erzwingen. - Der Handler
locales(welchergetLocales()für das Dokument aufruft) wird somit für jeden Aufrufer ausgeführt – unabhängig von der Richtlinienprüfung, die andere Lese-Routen anwenden – und gibt Lokalisierungs- und Veröffentlichungsmetadaten des Dokuments ohne Autorisierung zurück.
Auswirkungen
Ein nicht authentifizierter Aufrufer kann die Existenz eines Dokuments anhand von _id bestätigen und dessen Sprachversionen bzw. Veröffentlichungsstatus auflisten – Informationen, die durch die Lese-API reguliert werden sollten. Dies wird angesichts der Voraussetzung der opaken ID _id (der Aufrufer benötigt die Dokument-ID) als 4.3 (AC:H) eingestuft.
Verifikation (nur lokal)
Lokal verifiziert gegen apostrophe@4.32.2 (entspricht Commit d3ff8c9) mit synthetischen Inhalten:
- Die Quellcode-Überprüfung bestätigte, dass der Route
:_id/localesdie PrüfungpublicApiCheckAsyncfehlt, während verwandte Lese-Routen diese besitzen. - Ein nicht authentifizierter Aufruf von
GET /api/v1/<piece-type>/<_id>/localeslieferte die Lokalisierungsmetadaten (Existenz + Locales) des Dokuments zurück, während geschützte Lese-Routen (z. B.getAll) die Public-API-Richtlinie korrekt einforderten. - Kontrollversuch: Dieselbe Route verweigerte mit hinzugefügtem
publicApiCheckAsync-Gate (analog zu den Nachbar-Routen) die unauthentifizierte Anfrage, was die fehlende Autorisierungsprüfung als Ursache isoliert. Es wurden ausschließlich synthetische Inhalte getestet; gehostete Systeme blieben unberührt.
Danksagung
Danksagung an Santosh Kumar Puppala (https://github.com/Santoshkumarpuppala).).
Was zu tun ist
Fügen Sie die Autorisierungsprüfung publicApiCheckAsync (oder ein Äquivalent) zur Route :_id/locales sowohl im Piece-Type- als auch im Page-Modul hinzu, analog zu den verwandten Lese-Routen, sodass Lokalisierungs- und Existenzmetadaten nur autorisierten Aufrufern gemäß der Public-API-Richtlinie offengelegt werden.
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-gqh3-7856-rjjg
- 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:L/I:N/A:N- Schwäche (CWE)
CWE-200, CWE-862- 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-gqh3-7856-rjjg - 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: REST-Route :_id/locales lässt Autorisierungsprüfung der öffentlichen API aus (Offenlegung von Dokumentexistenz und Lokalisierungsmetadaten) 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.