Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid authenticated session (even guest)
-
ExploitSend repeated PATCH password-change guesses
-
ExecutionUnlimited attempts bypass absent throttle/lockout
-
ImpactRecover current password and seize account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
|
| Exploitation Conditions | The attacker must already hold a valid authenticated ApostropheCMS session of any privilege level (the advisory used a disposable guest session), and the target is specifically the self-service endpoint PATCH /api/v1/@apostrophecms/settings/password, which routes through handlePasswordProtectedSubform → verifyPassword without the login module's checkLoginAttempts/addLoginAttempt controls. No special non-default configuration is required - the missing throttle is present in all versions below 4.33.0. Limiting factors: exploitation is impossible without a pre-existing session (no pre-auth vector), and ultimate success still depends on the entropy of the victim's password, since the flaw removes only rate-limiting, not the password check itself. |
| Impact | This is a genuine but moderate-priority weakness (CWE-307, improper restriction of excessive authentication attempts), not a drop-everything issue. The supplied CVSS of 5.9 (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N) captures the key constraints: exploitation is network-reachable but gated behind an existing authenticated session and yields success only probabilistically against the target password. No EPSS score was provided and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation; the only exploitation signal is a working local PoC published in the GHSA advisory (curl loop showing five unthrottled 403 responses), i.e. publicly available exploit code exists but not confirmed active exploitation - these are distinct signals and should not be conflated. I partly disagree with the input vector's PR:H: the advisory explicitly used a 'disposable authenticated guest session,' meaning any low-privilege authenticated user suffices, which argues for PR:L rather than PR:H. The C:H/I:H rating reflects that unlimited guessing can eventually disclose the current password and thereby allow a full account takeover. Net: real and worth patching (upgrade to 4.33.0), but its danger is bounded by the need for a pre-existing session and by target password entropy, so it ranks below internet-facing pre-auth flaws. |
| Exploit ScenarioDerived | An attacker who has obtained a valid ApostropheCMS session (for example a stolen/hijacked session cookie, a shared workstation, or a low-privilege guest account) repeatedly calls the PATCH /api/v1/@apostrophecms/settings/password endpoint, submitting different passwordCurrent guesses. Because this endpoint verifies the password but never consults the login module's failed-attempt counter, throttle, delay, or lockout, the attacker can brute-force the account's current password at full speed and then reset it for durable takeover. A working local PoC demonstrating the missing lockout is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Unlimited current-password guessing against ApostropheCMS versions before 4.33.0 lets anyone holding an already-authenticated session - even a disposable low-privilege guest session - grind out a victim's existing password through the self-service endpoint PATCH /api/v1/@apostrophecms/settings/password, because that route verifies the password directly without touching the login module's failed-attempt counter, delay, or lockout. Successful guessing yields full account takeover, so confidentiality and integrity are both rated High while availability is unaffected; the assessed vector is CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N (6.8), stricter on privileges than the vendor's published 5.9/PR:H but agreeing on impact. The attack is not self-starting - no pre-authentication vector exists and success still hinges on victim password entropy - and no public exploit code or active exploitation was identified at time of analysis, though the GHSA advisory itself ships a local PoC curl loop that demonstrates the missing throttle.
RemediationAI
Vendor-released patch: upgrade the apostrophe npm package to version 4.33.0 or later (release tag apostrophe@4.33.0, advisory GHSA-653j-g8j7-gh54); confirm post-upgrade that repeated wrong passwordCurrent submissions to PATCH /api/v1/@apostrophecms/settings/password now produce throttled or lockout responses rather than an immediate uniform 403. If the upgrade cannot be applied promptly, compensating controls are: put a rate limit or WAF rule in front of that specific PATCH path, keyed by session/user rather than source IP (trade-off: legitimate users who mistype several times will be slowed or temporarily blocked, and IP-keyed limits are weak against distributed attackers while breaking shared-NAT offices); alert on bursts of 403 responses whose body is apostrophe:passwordCurrentError from a single session (trade-off: detection only, no prevention, and needs log pipeline coverage of the JSON API); temporarily reduce the population that can reach the endpoint by restricting self-service password changes to administrators or by moving accounts to SSO/OAuth where supported (trade-off: removes self-service for regular editors and is an operational policy change, not a code fix); and enforce strong password entropy plus mandatory rotation for accounts that may have been exposed (trade-off: user friction, and rotation only helps if the compromise window is closed first). No vendor workaround setting is documented in the advisory, so upgrading remains the only complete fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ApostropheCMS is an open-source Node.js/MongoDB content management system distributed as the npm package apostrophe (CPE cpe:2.3:a:apostrophecms:apostrophe:*:*:*:*:*:*:*:*). The defect is CWE-307 (Improper Restriction of Excessive Authentication Attempts) and stems from an inconsistency between two code paths that both verify a user's password. The login route properly brackets its credential check with checkLoginAttempts/addLoginAttempt in packages/apostrophe/modules/@apostrophecms/login/index.js (lines 831-929), which increments an attempt cache and enforces delay and lockout. The settings module does not: settings/index.js (lines 621-664) routes PATCH requests into handlePasswordProtectedSubform (lines 514-542), which calls apos.user.verifyPassword (user/index.js lines 412-487) inside a try/catch and simply throws a generic forbidden / apostrophe:passwordCurrentError response on failure. The verifier neither increments the login-attempt cache nor sleeps, so each wrong guess returns immediately, giving an attacker an unbounded, zero-cost oracle for the current password over a normal HTTPS request. The vulnerability class is a control-flow omission rather than a memory-safety or injection flaw: the password comparison itself remains correct, and no special or non-default configuration is required for the gap to exist in any release below 4.33.0.
Know when Apostrophecms gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
Network endpoint (AV:N) reachable only with a pre-existing low-privilege session (PR:L, not PR:H); success depends on password entropy (AC:H); unlimited guessing can disclose and reset credentials (C:H/I:H, A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, the self-service password-change endpoint verifies the current password but does not use the login module’s failed-attempt counter, throttle, delay, or lockout mechanism. An attacker with a valid authenticated session can submit repeated guesses for the current password without receiving a lockout or throttle response. This issue is fixed in version 4.33.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Apostrophecms
View allIntegrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric
Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser
'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th
`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1
Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang
Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable
Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and
Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos
Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co
Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object
Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default edito
Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript
EUVD-2026-105221
GHSA-653j-g8j7-gh54
NVD
CVE.org
EPSS
Exploit-DB