Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain stale confirmation token from a leaked/old email
-
ExploitVisit /confirm-account/?confirmed_token=<token>
-
ExecutionToken validates despite age (confirmed_sent_at ignored)
-
ImpactUnconfirmed account activated and shielded from cleanup purge
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | The attacker must possess a valid, previously-issued confirmation token for a specific account that is still unconfirmed (confirmed_at IS NULL), obtained out-of-band - a compromised mailbox, old email backup, forwarded mail, or server logs - since the attacker cannot generate tokens themselves. The vulnerable path is the unauthenticated /confirm-account/ endpoint in blueprintUE self-hosted edition <=4.3.3, where findUserIDWithConfirmedToken never evaluates confirmed_sent_at, so any age of token is accepted. Limiting factors: exploitation is entirely gated on leaking a stale token (no token = no attack), it yields only account activation and purge-evasion rather than password access or takeover, and the fix in 4.3.4 is the only complete remedy (tokens are given a 1-hour validity window and regenerated on resend). |
| Impact | The supplied CVSS 4.0 base score is 6.3 (medium) with vector AV:N/AC:L/AT:P/PR:N/UI:N and impact limited to VI:L (VC:N, VA:N) - i.e. a low integrity impact only, no confidentiality or availability effect. The AT:P (attack requirements present) metric reflects that exploitation depends on the attacker first obtaining a stale, previously-issued confirmation token, a precondition outside the attacker's control; they cannot mint tokens themselves. No CISA KEV listing is present and no EPSS score was provided, and there is no evidence of active exploitation, so exploitation status is: no public exploit identified as active, though a step-by-step PoC reference exists in the GHSA advisory (not verified as working exploit code). The vuln.today decision label is this_month, consistent with routine (not emergency) prioritization. Net real-world risk is modest and bounded: the flaw lets an attacker activate an account that was never confirmed and lets that account evade the optional 30-day cleanup cron, but per the vendor it does not disclose the password and is not account takeover by itself. This is a genuine-but-low-urgency issue rather than a high-impact priority; the main signal to weigh is that AV:N looks alarming but the AT:P prerequisite (leaked old email/token) substantially limits practical exploitability. |
| Exploit ScenarioDerived | An attacker who recovers an old blueprintUE registration email from a compromised mailbox, email backup, forwarded message, or server logs extracts the never-expiring confirmed_token and requests /confirm-account/?confirmed_token=<token>. Because UserModel::findUserIDWithConfirmedToken only checks the token and that confirmed_at IS NULL - ignoring confirmed_sent_at - a months-old token still validates and activates the unconfirmed account, also keeping it from the unconfirmed-user purge job. A proof-of-concept with exact SQL and steps is published in the GHSA advisory, but it is a reference PoC, not verified as packaged working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Stale account-confirmation links in blueprintUE self-hosted edition 4.3.3 and earlier never expire, so anyone who later obtains an old confirmation email - from a compromised mailbox, an archived backup, forwarded mail, or server logs - can still activate an account that was never meant to be confirmed. The impact is confined to unauthorised account activation plus evasion of the optional unconfirmed-user purge job; the token does not expose the password and does not by itself constitute account takeover. The vendor's GHSA-qp6g-7v4v-33r9 advisory documents a proof-of-concept procedure, no CISA KEV entry exists, and the issue is scored medium (supplied CVSS 4.0 base 6.3; assessor CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N), which places it on a 'this month' remediation cadence rather than an emergency one.
RemediationAI
Upgrade blueprintUE self-hosted edition to 4.3.4 or later - vendor-released patch 4.3.4 (release tag v4.3.4, upstream commit 8bba1615bf76b144ac5cd72637c243490f08bc37, PR #266) is the only complete remedy, because it enforces the one-hour confirmation window, regenerates the token on every resend, and extends the resend throttle to one hour. Per the advisory, no configuration toggle removes the flaw in 4.3.3: the lookup simply never reads confirmed_sent_at. Compensating controls for instances that cannot move immediately are operational and partial: make sure the optional unconfirmed-account cleanup cron job is actually scheduled and running, since the advisory notes many installs leave it unset and unconfirmed rows then persist indefinitely - the trade-off is that legitimate slow-to-confirm users lose their pending account; and treat any confirmation email or link as a live credential, expiring or rotating tokens directly in the database (for example overwriting confirmed_token with a random value or setting confirmed_at) for accounts that should not be activated - this breaks any confirmation mail already in flight and must be repeated as new stale mails surface. Because the pre-fix flaw only ever yields activation of an unconfirmed account, reviewing users created by unverified registrations for abuse after applying the update is worthwhile. References: https://github.com/blueprintue/blueprintue-self-hosted-edition/security/advisories/GHSA-qp6g-7v4v-33r9, https://github.com/blueprintue/blueprintue-self-hosted-edition/releases/tag/v4.3.4, https://www.vulncheck.com/advisories/blueprintue-self-hosted-edition-before-4.3.4-non-expiring-account-confirmation-tokens.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
blueprintUE self-hosted edition is a PHP web application using a custom MVC layer over a MySQL database with a users table holding confirmed_token, confirmed_at and confirmed_sent_at columns. On registration (and on resend), a token is produced with Helper::getRandomString(255) and mailed as a link to /confirm-account/?confirmed_token=..., which is reachable without authentication. The lookup routine UserModel::findUserIDWithConfirmedToken only asserted that the supplied token matched a row and that confirmed_at IS NULL; it never evaluated confirmed_sent_at, so token age was irrelevant to acceptance. That is the CWE-613 insufficient session expiration class: a credential-like secret with no enforced lifetime and no rotation. The upstream commit 8bba1615bf76b144ac5cd72637c243490f08bc37 closes the gap by adding AND confirmed_sent_at >= (UTC_TIMESTAMP() - INTERVAL 1 HOUR) to the lookup, so tokens are now valid for one hour only; the same commit stops reusing an existing token when resending and always mints a fresh one, raises the resend throttle in UserService::isUserConfirmedAccount from 300 to 3600 seconds, updates the confirmation email and error page to say the link is valid for one hour or has expired, and adjusts the login/confirm-account test fixtures accordingly. The trigger is the unauthenticated confirmation endpoint; the attacker cannot mint tokens and must already hold a valid token for an account that is still unconfirmed.
Know when the next one hits your stack
- 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
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Confirm endpoint is unauthenticated (PR:N/UI:N), but exploitation needs an out-of-band leaked stale token the attacker can't control (AC:H); impact is only account activation, so I:L and C:N/A:N.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
blueprintUE self-hosted edition before 4.3.4 contains an insufficient session expiration vulnerability that allows attackers to confirm accounts using stale tokens because UserModel::findUserIDWithConfirmedToken ignores confirmed_sent_at. Attackers who obtain an old confirmation link from a compromised mailbox, backup, or forwarded mail can activate unconfirmed accounts and evade the unconfirmed-account cleanup job.
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.
EUVD-2026-116593
GHSA-pc87-6hr3-m9jr
NVD
CVE.org
Exploit-DB