GHSA-44qr-rrjg-2cqq - ApostropheCMS: CAPTCHA response token not URL-encoded
**Summary**
Form and login CAPTCHA verification interpolate the user-supplied widget token unencoded into the server-side verification URL/body, allowing a crafted token to inject query parameters into the reCAPTCHA/hCaptcha verify request.
**Details**
- `packages/form/lib/recaptcha.js:39` โ `recaptchaUri = 'https://www.google.com/recaptcha/api/siteverify?secret=${recaptchaSecret}&response=${input.recaptcha}'`
- `packages/login-recaptcha/index.js:44` โ same pattern for login
- `packages/login-hcaptcha/index.js:47` โ `body: 'response=${token}&secret=${secret}'`
**PoC**
```
input.recaptcha = 'attacker_token&secret=INJECTED_SECRET&something=1'
โ resulting verify URL:
https://www.google.com/recaptcha/api/siteverify?secret=<real>&response=attacker_token&secret=INJECTED_SECRET&something=1
# (replicated exactly from recaptcha.js:39)
```
**Impact**
Low: a crafted token smuggles extra `key=value` pairs (`secret`, extra `response`) into the outbound verify call, forcing verification failures (DoS of the captcha gate and of captcha-gated login/form flows) and enabling automated bypass probing; no secret exfiltration.
**Remediation** โ Build the verify request with `URL` + `searchParams` (or `encodeURIComponent` on both `secret` and `response`), and validate the token against `^[A-Za-z0-9._-]{1,2048}$` before use.
MEDIUM
Severity & confidence
Source severitymedium
Platform severitymedium
Confidencemedium
Exploitationunknown
CVSS-
Affected
Vendors@apostrophecms
Products@apostrophecms/form@apostrophecms/login-recaptcha@apostrophecms/login-hcaptcha
Reporting sources (1)
GitHub Security Advisories
Timeline & provenance
Published2026-10-20T18:05:35
Last updated2026-10-21T07:49:05
Ingested2026-10-20T18:21:26
FreshnessNEAR-REAL-TIME
Threat typeadvisory
Recommended action
Review the advisory and upgrade affected packages to the first patched version.
Next steps
- Identify affected systems in your environment.
- Apply the vendor patch or mitigation guidance.
- Review logs for indicators described in the advisory.
- Follow the affected vendor/product to track updates.
Confidence explanation
Reported by a single or secondary source; treat as indicative, verify before acting.
Source type: vendor ยท Original: GitHub Security Advisories