Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as provisioned Trusted Intermediary
-
ExploitEnumerate sequential accountId values
-
ExecutionRequest editClientForm for foreign accounts
-
ImpactHarvest cross-group applicant names and emails
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Attacker must already hold an authenticated, admin-provisioned Trusted Intermediary account within a CiviForm instance running a version prior to 3.33.0; with that role they call GET /admin/tiDash/editClientForm/:accountId and vary the accountId path parameter. Exploitation is LIMITED by: (1) the requirement for a legitimate Trusted Intermediary role (not a basic applicant or anonymous user), (2) the narrow data disclosed - only applicant display name and email address, not full benefit-application contents, and (3) applicability only to versions before the 3.33.0 fix. No victim interaction is actually required for the enumeration despite the input vector's UI:R metric. |
| Impact | This is a genuine but moderate-severity authorization flaw (CWE-639, insecure direct object reference). The provided CVSS base score of 4.5 (Medium) reflects that exploitation requires an already-provisioned, authenticated Trusted Intermediary account (PR:H in the input vector) and that impact is limited to confidentiality of applicant display data (C:H/I:N/A:N). No EPSS score, KEV listing, or public exploit code is present in the supplied intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation; this is not a drop-everything priority. Several input signals are internally inconsistent and should be verified: the vector asserts UI:R (user interaction required), yet the described attack is pure server-side enumeration of accountId values via GET requests and realistically needs no victim interaction (UI:N is more defensible); and C:H seems high given that only a display name and email are exposed rather than full application records (C:L is arguably more accurate). The real-world risk is best characterized as a privacy/PII-exposure issue exploitable only by insiders with the Trusted Intermediary role, not by anonymous internet attackers. |
| Exploit ScenarioDerived | A Trusted Intermediary who has been provisioned in a CiviForm deployment iterates numeric accountId values against GET /admin/tiDash/editClientForm/:accountId; because showEditClientForm calls lookupAccount(accountId) without confirming the account belongs to the intermediary's trustedIntermediaryGroup, the server returns the citizen's name and email for accounts outside the attacker's group. No public exploit code is identified at time of analysis, and the fix commit/PR demonstrate the missing authorization check rather than a weaponized exploit. The attack is low-complexity and network-reachable but gated behind holding a legitimate Trusted Intermediary account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
An authenticated insecure direct object reference in CiviForm before 3.33.0 lets a Trusted Intermediary read the display name and email address of applicants belonging to other trusted intermediary groups by enumerating account IDs through GET /admin/tiDash/editClientForm/:accountId. The route enforces the Trusted Intermediary role but the downstream showEditClientForm handler performs a raw lookupAccount(accountId) without verifying that the citizen account falls inside the caller's trustedIntermediaryGroup, so varying the accountId path parameter returns a different applicant's personal identifiers. Exploitation requires a legitimate, admin-provisioned Trusted Intermediary account, the disclosed data is limited to name and email (not full application contents), and the fix ships in version 3.33.0; no public exploit code or confirmed active exploitation was identified at time of analysis, and the risk is a moderate-severity authorization flaw rather than a broad data breach.
RemediationAI
Upgrade to CiviForm 3.33.0, the vendor-released patch version (see https://github.com/civiform/civiform/releases/tag/v3.33.0); the fix was merged as PR https://github.com/civiform/civiform/pull/13635 with commit https://github.com/civiform/civiform/commit/ccfd84ff2d9ee6570a1b1524c7ae3a3732e1839e and is documented in the GitHub Security Advisory GHSA-qv7c-9hjr-9rv7 at https://github.com/civiform/civiform/security/advisories/GHSA-qv7c-9hjr-9rv7. If an immediate upgrade is not possible, the most effective compensating control is to restrict the Trusted Intermediary role to the smallest possible set of vetted accounts and audit that provisioning list, since the flaw is only reachable by an account holding that role - the trade-off is reduced intermediary capacity for benefit applicants. In addition, review reverse-proxy or WAF logs for sequential or high-volume requests to /admin/tiDash/editClientForm/ with varying accountId values and alert on that pattern; this does not stop a slow, low-rate enumeration and may generate false positives from legitimate TI workflows. Rotating or tightening access to intermediary credentials and periodically reconciling trustedIntermediaryGroup membership limits the blast radius of an already-compromised TI account, but only the 3.33.0 upgrade fully removes the missing object-level authorization check.
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
CWE-639 (Authorization Bypass Through User-Controlled Key) in a Java/Play Framework web application. CiviForm is a government benefits application platform that reuses applicant data across programs, and it models two distinct principals: citizen applicants who own accounts, and Trusted Intermediaries (TIs) - staff or nonprofit helpers provisioned by an administrator - who are scoped to a trustedIntermediaryGroup. The vulnerable endpoint is a two-part flow: the GET /admin/tiDash/editClientForm/:accountId route confirms the requester holds the Trusted Intermediary role, but the showEditClientForm implementation then calls lookupAccount(accountId) directly and renders the applicant display name, including the citizen's name and email address, for whatever identifier is supplied. Because the accountId is an attacker-controlled key and group membership is never re-checked against the account's owning group, the authorization decision is made at the wrong granularity - role-level rather than object-level. The upstream fix (PR #13635, commit ccfd84ff2d9ee6570a1b1524c7ae3a3732e1839e) generalizes this pattern by inserting checkApplicantAuthorization(request, applicantId) authorization gates ahead of applicant data retrieval in applicant-facing controllers, ensuring the account is validated on every request path rather than only at the role boundary. Affected builds are captured by the CPE cpe:2.3:a:civiform:civiform:*:*:*:*:*:*:*:*, i.e. the whole CiviForm product line prior to the 3.33.0 release.
Know when Civiform 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:L/PR:H/UI:R/S:U/C:H/I:N/A:N
Trusted Intermediary is a standard provisioned role (PR:L), enumeration needs no victim interaction (UI:N), and only name/email PII is exposed (C:L), with no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
CiviForm simplifies applications for government benefits programs by reusing applicant data across multiple benefit applications. Prior to 3.33.0, GET /admin/tiDash/editClientForm/:accountId verifies that the requester is a Trusted Intermediary but showEditClientForm performs a raw lookupAccount(accountId) without confirming that the citizen account belongs to the requester's trustedIntermediaryGroup. An authenticated Trusted Intermediary can enumerate accountId values and read the applicant display name, including the citizen's name and email address, for accounts outside the intermediary's group. This issue is fixed in version 3.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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-95984
NVD
CVE.org
EPSS
GitHub
Exploit-DB