MEDIUMCVSS v3.1 5.9Vulnerability

CVE-2026-113710

**Summary** 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. **Exact source path** packages/apostrophe/modules/@apostrophecms/settings/index.js:621-664 **The password-change route is:** PATCH /api/v1/@apostrophecms/settings/password **The route calls the password verifier directly through:** await self.handleProtectedSubform(req, subform, req.body ); **The password verification path is:** packages/apostrophe/modules/@apostrophecms/settings/index.js:514-542 **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; }** **The verifier itself does not increment the login-attempt cache or enforce a delay:** packages/apostrophe/modules/@apostrophecms/user/index.js:412-487 **By contrast, the login route explicitly calls checkLoginAttempts and addLoginAttempt in:** packages/apostrophe/modules/@apostrophecms/login/index.js:831-929 **Local PoC** The test used a disposable authenticated guest session against: Request: ``` 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" } ``` **Equivalent command:** ``` 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: appl

Properties

Summary
ApostropheCMS: No Attempt Throttling on Authenticated Password-Change Endpoint Enables Unlimited Current-Password Guessing
Severity
medium
Nvd fetched at
2026-10-20T21:14:08.448323+00:00
Cvss score
5.9
Cvss severity
MEDIUM
Retrieved at
2026-10-21T01:23:59+00:00
Ghsa published
2026-10-20T18:17:50Z
Source url
https://github.com/advisories/GHSA-653j-g8j7-gh54
Ghsa updated
2026-10-20T18:17:55Z
Ghsa id
GHSA-653j-g8j7-gh54
Last source
GitHub Advisory Database
Score
5.9
Cvss version
3.1
Cve id
CVE-2026-113710
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
First seen by Signal
2026-10-20T21:15:35+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
Published at
2026-10-20T18:17:21.147
Last modified
2026-10-20T19:53:10.247

Related Entities (3)

AFFECTS (1)

→[Software]npm/apostrophe

VULNERABLE_TO (1)

←[Software]npm/apostrophe

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-113710 (CVSS v3.1 5.9) — Ninja Signal Threat Intelligence | Ninja Signal