GHSA-mg4x-prh7-g4mx json
Zend-Captcha Information Disclosure and Insufficient Entropy vulnerability
published 2y ago modified last yr.
- cvss
- 7.5
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
In Zend Framework, `Zend_Captcha_Word` (v1) and `Zend\Captcha\Word` (v2) generate a "word" for a CAPTCHA challenge by selecting a sequence of random letters from a character set. Prior to this advisory, the selection was performed using PHP's internal `array_rand()` function. This function does not generate sufficient entropy due to its usage of rand() instead of more cryptographically secure methods such as `openssl_pseudo_random_bytes()`. This could potentially lead to information disclosure should an attacker be able to brute force the random number generation.
Patch / fix
- packagist zendframework/zend-captcha 2.4.9, 2.5.2
Is GHSA-mg4x-prh7-g4mx in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| packagist | zendframework/zend-captcha | >=2.0.0, <2.4.9 >=2.5.0, <2.5.2 |
2.4.9 2.5.2 |
Classification
- Weakness
-
- CWE-331 Insufficient Entropy
References
-
github.com
/zendframework/zend-captcha/commit/43c276df6e94e498bf530538aea53876a24fc47c
web
-
github.com
/zendframework/zend-captcha/commit/5561ef813bb4ad814e835343289dc5077d2eb262
web
-
framework.zend.com
/security/advisory/ZF2015-09
web
-
github.com
/FriendsOfPHP/security-advisories/blob/master/zendframework/zend-captcha/ZF2015-09.yaml
web
-
github.com
/zendframework/zend-captcha
package
Sources
- GitHub Advisory GHSA-mg4x-prh7-g4mx
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.