Skip to main content

pH7Builder EUVDEUVD-2026-97067

| CVE-2026-108904 HIGH
Insufficiently Protected Credentials (CWE-522)
2026-10-11 disclosure@vulncheck.com GHSA-3m9j-mmxr-3x76
7.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid private API key
  2. Delivery
    Call users()/user() API endpoints
  3. Exploit
    Receive unfiltered rows with hashes/tokens/TOTP secrets
  4. Execution
    Replay reset tokens and TOTP secrets
  5. Impact
    Take over accounts and bypass 2FA

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
Exploitation Conditions

Exploitation requires the attacker to hold a valid private API key for the target pH7Builder instance and to reach the member API's UserController::users()/user() endpoints, which return unfiltered database rows on versions before 18.5.0. The limiting factors are: (1) a valid private API key is mandatory (PR:L) - anonymous attackers cannot exploit this; (2) the target must expose the member API to the attacker; and (3) only unpatched versions prior to 18.5.0 are affected. The leaked hashValidation reset tokens being non-expiring removes any time-window limit on token replay, amplifying the post-disclosure impact.

Impact

This is a credible but bounded risk best characterized as medium-severity requiring authentication. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) confirms network-reachable, low-complexity exploitation with no user interaction, but PR:L means an attacker must already hold a valid private API key - this is not an anonymous, internet-wide exposure. The impact is concentrated on confidentiality (VC:H) with no integrity or availability effect (VI:N/VA:N), which aligns with CWE-522 (Insufficiently Protected Credentials): the API returns bcrypt password hashes, non-expiring hashValidation reset tokens, and TOTP secrets. The real-world danger is the secondary effect - leaked reset tokens and TOTP secrets enable account takeover and 2FA bypass, so confidentiality loss cascades into integrity compromise even though the base vector scores VI:N. No EPSS score, no CISA KEV listing, and no public exploit were provided, so there is no evidence of active or automated exploitation; the patch and root cause are, however, firmly confirmed by the vendor commit. Net: prioritize patching for any internet-facing pH7 deployment that issues API keys, but this is not a drop-everything emergency on the level of an unauthenticated RCE - the PR:L barrier and niche product footprint temper urgency. Note one signal-vs-text nuance: the vector says PR:L (a valid private API key), which is weaker than full user authentication, so a leaked or over-provisioned key materially widens exposure.

Exploit ScenarioDerived

An attacker who has obtained a valid private API key (e.g., a low-trust integration partner, a compromised third-party app, or a leaked key) calls the member API's users()/user() endpoints and receives raw database rows including bcrypt hashes, hashValidation reset tokens, and TOTP secrets. Using the non-expiring reset tokens and TOTP secrets, the attacker takes over targeted member accounts and bypasses two-factor authentication. No public exploit code was identified at time of analysis, but the vulnerable code path and fix are confirmed in the vendor's GitHub commit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 11, 2026

Authenticated API clients of pH7Builder (pH7 Social Dating CMS) before 18.5.0 can retrieve sensitive member records - including bcrypt password hashes, non-expiring hashValidation password-reset tokens, and TOTP two-factor secrets - because the member API endpoints UserController::users() and user() return unfiltered database rows directly to the caller. Exploitation requires a valid private API key (PR:L) and network reachability to the exposed member API, so anonymous attackers cannot trigger it, but the leaked reset tokens never expire, removing any time window on their reuse. No public exploit code has been identified at time of analysis and the issue is not confirmed as actively exploited (CISA KEV); the vendor addressed it in 18.5.0 and via upstream commit 52a59da. This is a credible but bounded risk best characterized as medium-severity requiring authentication.

RemediationAI

Vendor-released patch: upgrade to pH7Builder 18.5.0, which centralizes credential stripping in _protected/framework/Api/Api.trait.php via a recursive filterSensitiveFields() routine covering password, hashValidation, and twoFactorAuthSecret - see upstream commit 52a59da534c7666f7607c8a9b8c42037eb4de66d (https://github.com/pH7Software/pH7-Social-Dating-CMS/commit/52a59da534c7666f7607c8a9b8c42037eb4de66d) and the vendor advisory at https://www.vulncheck.com/advisories/ph7builder-before-18.5.0-sensitive-data-exposure-via-member-api-usercontroller. Patching alone does not undo prior exposure, so treat every member record reachable through the API as compromised: force a global password reset, invalidate all outstanding hashValidation reset tokens (they do not expire on their own, so they must be explicitly cleared or regenerated), and re-provision TOTP secrets for affected accounts - regenerate the authenticator enrollment for every user flagged, since a leaked twoFactorAuthSecret remains valid until replaced, and be aware this forces re-enrollment friction for legitimate users. Rotate any private API keys used by trusted integrations and audit API access logs for the users()/user() endpoints to identify which records were actually pulled; rotating keys will break existing integrations until clients are reconfigured. As a compensating control while patching, restrict the member API to known client IP ranges at a reverse proxy or WAF and disable the public-facing member API entirely on instances where no external integration depends on it - the trade-off being that legitimate mobile or partner clients lose access - and monitor outbound use of reset tokens in the interim.

Affected VersionsENISA

ph7builder 0 <18.5.0

Affected Packages

euvd ph7builder fix: 18.5.0

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

pH7Builder is a PHP social dating CMS built on its own MVC framework, and the affected code lives in the framework's API layer: _protected/app/system/modules/api/controllers/UserController.php and the shared _protected/framework/Api/Api.trait.php. The vulnerability is CWE-522 (Insufficiently Protected Credentials): the API's JSON encoding helper serialized entire database rows straight to API responses, so credential-bearing columns such as password (a bcrypt hash), hashValidation (used as a password-reset validation token), and twoFactorAuthSecret (the TOTP seed backing two-factor authentication) were included in output whenever the users()/user() actions returned member objects. The upstream fix introduces a private SENSITIVE_FIELDS constant in Api.trait.php and a recursive filterSensitiveFields() routine applied inside the JSON encoder, which walks nested arrays and objects (cloning objects rather than mutating them) and unsets those three fields at every depth, and the corresponding unit test verifies both the recursion and that the original object is not modified. The patch commit also removes now-redundant unset($aData['password']) calls from the createAccount() and login() paths in UserController.php, since filtering is centralized in the encoder. Because the leaked hashValidation tokens are non-expiring in the affected versions, disclosure is not merely informational: the tokens remain replayable indefinitely for password reset, and the TOTP secrets permit generation of valid second factors, effectively defeating 2FA for any member whose record was exposed.

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

Vendor (vulncheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

API reachable over network with low complexity (AV:N/AC:L); a valid private API key is required so PR:L not PR:N; high confidentiality loss of credentials, no direct integrity/availability impact (C:H/I:N/A:N).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 11, 2026 - 16:02 EUVD
CVE Published
Oct 11, 2026 - 15:16 cve.org
HIGH 7.1

DescriptionCVE.org

pH7Builder (pH7 Social Dating CMS) before 18.5.0 contains an information disclosure vulnerability that allows API clients to obtain sensitive member data because UserController::users() and user() return unfiltered database rows. Attackers holding a valid private API key can retrieve bcrypt password hashes, non-expiring hashValidation reset tokens, and TOTP secrets to take over accounts and bypass two-factor authentication.

Executive ViewAI

Why It Matters

pH7Builder (pH7 Social Dating CMS) deployments below 18.5.0 expose sensitive member records to authenticated API clients holding a valid private API key, including password hashes, non-expiring password-reset tokens, and TOTP secrets. This creates account-takeover and privacy/compliance risk for affected dating-platform members, so leadership should prioritize verification, credential rotation, and remediation despite the requirement for authenticated access. No public exploit identified at time of analysis and the issue is not confirmed actively exploited (CISA KEV).

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche open-source social/dating CMS, limited enterprise footprint
Social Media
2
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy