This is a storefront guestbook that forgot to make visitors prove they own the pen
CVE-2025-22385 affects Optimizely Configured Commerce before 5.2.2408. The flaw is simple: the B2B application would create newly requested accounts without requiring email confirmation first. That means an unauthenticated remote user can automate account signups at scale, creating junk accounts or accounts tied to third-party email addresses. The vendor frames the likely impact correctly: database growth, operational clutter, and unsolicited storefront accounts rather than data theft or privilege gain.
The vendor's MEDIUM 5.9 baseline is slightly generous in real enterprise conditions. Yes, the bug is network-reachable and unauthenticated, but the blast radius is mostly storage/ops noise, and exploitation usually depends on a public self-registration flow actually being enabled on the storefront. No evidence surfaced of KEV listing, active exploitation, or a public weaponized PoC. For most 10,000-host environments this is a cleanup-and-upgrade issue, not an incident-response issue.
3 steps from start to impact.
Find a public registration surface
curl or Burp Suite is enough to enumerate the registration workflow and required fields. There is no need for prior credentials if the site accepts anonymous visitor registration.- The organization exposes a Configured Commerce storefront to the internet
- Anonymous account creation or visitor registration is enabled
- The attacker can reach the registration endpoint over HTTPS
- Many B2B portals restrict access to customers or approved buyers rather than open public registration
- Some sites front the app with CDN/WAF controls that rate-limit obvious automation
- Product fingerprinting is not as trivial as mass-scanning common VPN or edge appliances
Automate unverified account creation
Burp Intruder, curl, or any signup script, the attacker submits repeated account creation requests with arbitrary email addresses. Because pre-fix versions did not require email validation before account creation, the application stores the accounts immediately. This is the core abuse path described by the vendor advisory.- Registration requests are not blocked by custom business logic
- The vulnerable version is earlier than 5.2.2408
- The target workflow does not add separate approval or anti-bot checks
- Rate limits, CAPTCHA, bot management, or custom moderation can slow mass creation substantially
- Some deployments may require extra workflow fields that make automation brittle
- Cloud edge controls and app logging usually make volumetric signup abuse visible fast
Accumulate junk identities and storage pressure
- The attacker keeps request volume high enough to matter operationally
- The target has weak pruning, alerting, or signup monitoring
- This is nuisance-to-availability pressure, not direct code execution or account takeover
- Database/storage impact usually takes time and volume rather than a single exploit packet
- Ops teams can remediate by pruning accounts and tightening edge controls even before upgrade
The supporting signals.
| In-the-wild status | No confirmed active exploitation found in reviewed sources, and the CVE is not listed in CISA KEV. |
|---|---|
| Public PoC availability | No public weaponized PoC located in primary-source review. This looks easy to script with generic web tooling, but no named public exploit repo stood out. |
| EPSS | 0.00385 from the provided intel block, which is very low and consistent with low observed attacker interest. |
| KEV status | Not in KEV as of the reviewed CISA catalog source; no KEV date applies. |
| CVSS vector | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H — remote and unauthenticated, but with high complexity and availability-only impact. |
| Affected versions | All Configured Commerce versions prior to 5.2.2408, including pre-fix STS/LTS builds called out by Optimizely. |
| Fixed version | 5.2.2408; Optimizely states the application now requires email validation before account creation. |
| Exposure profile | Configured Commerce is typically used for internet-facing B2B storefronts, but the vuln is only reachable where anonymous registration is actually exposed. That narrows the real population materially. |
| Scanning / telemetry | No vendor, GreyNoise, or Censys telemetry for this CVE was surfaced in the reviewed sources. Treat external exposure as environment-specific rather than internet-scale commodity mass exploitation. |
| Disclosure | CVE published 2025-01-04; Optimizely advisory updated 2025-01-06. |
noisgate verdict.
The decisive downgrade factor is blast radius: this is generally limited to account spam and resource consumption, not compromise of data or control. Even though the bug is unauthenticated and remote, it only matters on storefronts with exposed self-registration and usually gets blunted by normal anti-automation controls.
Why this verdict
- Vendor baseline starts at 5.9 MEDIUM because the bug is remote and unauthenticated, but that overstates the business impact for most deployments.
- Requires a public registration path — if the storefront does not expose anonymous signup, the attack chain dies before it starts. That implies a much smaller reachable population than a typical edge-service CVE.
- Impact is mostly ops pain, not compromise — the published CVSS already shows no confidentiality or integrity loss, and the vendor advisory describes database/storage pressure and unsolicited account creation rather than takeover.
- Modern controls should catch volume abuse — WAF, CDN bot controls, rate limits, and registration anomaly monitoring all apply here and materially raise attacker effort.
- Threat telemetry is cold — no KEV entry, no reviewed evidence of in-the-wild exploitation, and no obvious public PoC ecosystem push this downward again.
Why not higher?
This is not a perimeter-breaker, auth bypass to sensitive data, or privilege-escalation chain. The attacker gets nuisance account creation and possible slow-burn storage pressure, not immediate tenant compromise. Requiring public self-registration also cuts down the exposed population versus always-on admin or edge services.
Why not lower?
It is still remotely reachable on some public storefronts and requires no credentials. In organizations with open signup and weak anti-automation, mass account creation can create tangible operational cost, user confusion, and avoidable support load.
What to do — in priority order.
- Rate-limit registration — Apply CDN/WAF throttling and bot controls to account-creation endpoints to make mass signup economically unattractive. For a LOW verdict there is no SLA (treat as backlog hygiene), but if the storefront is public you should still deploy this during the next normal change window.
- Disable anonymous signup where unnecessary — If your business model does not need self-service registration, turn it off or gate it behind approved customer onboarding. That removes the primary prerequisite for exploitation and can be done ahead of the eventual patch.
- Alert on signup spikes — Create detections for bursts of account creation, repeated POSTs to registration endpoints, and large numbers of dormant new accounts. This helps catch abuse early and limits the only realistic impact path.
- Prune dormant junk accounts — Review for no-activity accounts and clusters created in very small time windows, matching the vendor's mitigation guidance. Use this as routine hygiene until the platform is upgraded.
- MFA does not help because the attacker is abusing account creation before identity validation, not logging into an existing account.
- Endpoint AV/EDR on user workstations does not stop this; the traffic lands on the storefront application and database, not on employee endpoints.
- Network segmentation behind the storefront is only marginally helpful because the vulnerable action is performed through the intended public web front end.
Crowdsourced verification payload.
Run this on an auditor workstation, CI job, or admin jump box where Python 3 is available. Invoke it as python verify_cve_2025_22385.py 5.2.2407 or feed versions from CMDB/SBOM export; no elevated privileges are required because this script validates the known deployed Configured Commerce version, not live exploitability.
#!/usr/bin/env python3
# verify_cve_2025_22385.py
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN / bad input
#
# Usage:
# python verify_cve_2025_22385.py 5.2.2407
# python verify_cve_2025_22385.py 5.2.2408
#
# This script compares an observed Optimizely Configured Commerce version
# against the fixed version for CVE-2025-22385.
import re
import sys
FIXED = (5, 2, 2408)
def parse_version(v):
if not v:
return None
# Accept forms like 5.2.2408, 5.2.2408.123, 5.2.2408+sts, 5.2.2408+lts
m = re.match(r'^\s*(\d+)\.(\d+)\.(\d+)(?:[.+-].*)?\s*$', v)
if not m:
return None
return tuple(int(x) for x in m.groups())
def main():
if len(sys.argv) != 2:
print('UNKNOWN: provide exactly one version argument, e.g. 5.2.2408')
sys.exit(2)
raw = sys.argv[1]
parsed = parse_version(raw)
if parsed is None:
print(f'UNKNOWN: unable to parse version: {raw}')
sys.exit(2)
if parsed < FIXED:
print(f'VULNERABLE: {raw} is earlier than fixed version 5.2.2408')
sys.exit(1)
else:
print(f'PATCHED: {raw} is at or above fixed version 5.2.2408')
sys.exit(0)
if __name__ == '__main__':
main()
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.