CVE-2025-68113
📋 TL;DR
A cryptographic flaw in ALTCHA libraries allows challenge payload splicing, enabling replay attacks where previously solved CAPTCHA challenges can be reused beyond their intended expiration. This primarily impacts abuse-prevention mechanisms like rate limiting and bot mitigation. All users of affected ALTCHA libraries are vulnerable until patched.
💻 Affected Systems
- ALTCHA libraries for Go, Ruby, Python, Erlang, Node.js, PHP, Java
⚠️ Manual Verification Required
This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.
Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).
🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Attackers bypass bot protection entirely, enabling unlimited automated requests that could lead to account takeover, credential stuffing, or denial of service through resource exhaustion.
Likely Case
Attackers bypass rate limiting and bot detection for specific endpoints, enabling automated spam, scraping, or brute-force attacks.
If Mitigated
With proper server-side replay handling and short challenge expiration times, impact is limited to minor abuse potential.
🎯 Exploit Status
Exploitation requires understanding of the cryptographic flaw and ability to manipulate challenge payloads, but no authentication is needed.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Go: 1.0.0, Ruby: 1.0.0, Python: 1.0.0, Erlang: 1.0.0, Node.js: 1.4.1, PHP: 1.3.1, Java: 1.3.0
Vendor Advisory: https://github.com/altcha-org/altcha-lib-ex/commit/09b2bad466ad0338a5b24245380950ea9918333e
Restart Required: No
Instructions:
1. Identify which ALTCHA library your application uses. 2. Update to the patched version for your language/platform. 3. Test CAPTCHA functionality. 4. No restart required for interpreted languages; restart application server for compiled languages.
🔧 Temporary Workarounds
Delimiter workaround
allAppend a delimiter to the salt value before HMAC computation to prevent parameter ambiguity
Modify HMAC computation to use format: <salt>?expires=<time>&
🧯 If You Can't Patch
- Implement strict server-side replay detection with short challenge expiration times
- Add additional layers of bot protection (rate limiting, IP blocking, behavioral analysis)
🔍 How to Verify
Check if Vulnerable:
Check if your application uses any ALTCHA library and verify version against affected ranges
Check Version:
Check package manager: npm list altcha-lib, pip show altcha, gem list altcha, go list -m all, etc.
Verify Fix Applied:
Verify library version matches patched version and test CAPTCHA functionality with replay attempts
📡 Detection & Monitoring
Log Indicators:
- Multiple successful CAPTCHA validations from same challenge ID
- CAPTCHA submissions with expired timestamps
- Unusual spike in automated requests
Network Indicators:
- Repeated CAPTCHA challenge reuse patterns
- Abnormal request rates bypassing rate limits
SIEM Query:
source="application_logs" AND (message="CAPTCHA validation" OR message="challenge") | stats count by challenge_id | where count > 1
🔗 References
- https://github.com/altcha-org/altcha-lib-ex/commit/09b2bad466ad0338a5b24245380950ea9918333e
- https://github.com/altcha-org/altcha-lib-go/commit/4a5610745ef79895a67bac858b2e4f291c2614b8
- https://github.com/altcha-org/altcha-lib-java/commit/69277651fdd6418ae10bf3a088901506f9c62114
- https://github.com/altcha-org/altcha-lib-java/releases/tag/v1.3.0
- https://github.com/altcha-org/altcha-lib-php/commit/9e9e70c864a9db960d071c77c778be0c9ff1a4d0
- https://github.com/altcha-org/altcha-lib-php/releases/tag/v1.3.1
- https://github.com/altcha-org/altcha-lib-rb/commit/4fd7b64cbbfc713f3ca4e066c2dd466e3b8d359b
- https://github.com/altcha-org/altcha-lib/commit/cb95d83a8d08e273b6be15e48988e7eaf60d5c08
- https://github.com/altcha-org/altcha-lib/releases/tag/1.4.1
- https://github.com/altcha-org/altcha-lib/security/advisories/GHSA-6gvq-jcmp-8959