CVE-2024-2408·PHP vulnerability
The openssl_private_decrypt function in PHP, when using PKCS1 padding (OPENSSL_PKCS1_PADDING, which is the default), is vulnerable to the Marvin Attack unless it is used with an OpenSSL version that includes the changes from this pull request: https://github.com/openssl/openssl/pull/13817 (rsa_pkcs1_implicit_rejection). These changes are part of OpenSSL 3.2 and have also been backported to stable versions of various Linux distributions, as well as to the PHP builds provided for Windows since the previous release. All distributors and builders should ensure that this version is used to prevent PHP from being vulnerable. PHP Windows builds for the versions 8.1.29, 8.2.20 and 8.3.8 and above include OpenSSL patches that fix the vulnerability.
- Severity
- medium
- Software
- PHP
- Fixed in
- 8.3.8
- Published
Affected versions
From: 8.3.0
Until: 8.3.8
Fixed in: 8.3.8
How to fix this CVE
Update PHP to version 8.3.8 or later to patch the cryptographic weakness in the openssl_private_decrypt function. The vulnerability affects RSA decryption operations using PKCS1 padding when OpenSSL lacks implicit rejection protections. Ensure your system uses OpenSSL 3.2 or a patched stable distribution build that includes the rsa_pkcs1_implicit_rejection countermeasure.
sudo dnf update phpDefensia detects this vulnerability
How to check if you are affected
- Run `php -v` to display the installed PHP version; CVE-2024-2408 affects versions 8.3.0 through 8.3.7
- Check OpenSSL version with `openssl version` to confirm it is 3.2 or later, or verify your distribution applies the backported rsa_pkcs1_implicit_rejection patch
- Search application logs for calls to openssl_private_decrypt() by grepping source code: `grep -r 'openssl_private_decrypt' /path/to/app/` to identify which components perform RSA decryption
- After patching, re-run `php -v` to confirm PHP is updated to 8.3.8 or higher and verify OpenSSL library version with `php -i | grep 'OpenSSL'`
FAQ
What is CVE-2024-2408?
CVE-2024-2408 is a timing-based side-channel vulnerability in PHP's openssl_private_decrypt function when using default PKCS1 padding. Without proper OpenSSL patches, attackers may infer information about decrypted data through careful analysis of decryption response times.
Is CVE-2024-2408 being actively exploited?
No, CVE-2024-2408 is not listed as actively exploited by CISA, and no public proof-of-concept exploits are currently available. However, the Marvin Attack technique is well-documented in cryptographic research and warrants immediate patching.
What versions of PHP are affected by CVE-2024-2408?
PHP versions 8.3.0 through 8.3.7 are vulnerable on systems with unpatched OpenSSL. Fixed versions include PHP 8.1.29, 8.2.20, 8.3.8 and later on all platforms.
How do I check if my server is vulnerable to CVE-2024-2408?
Run `php -v` to check your PHP version (vulnerable if between 8.3.0–8.3.7), then run `openssl version` to verify OpenSSL is 3.2 or includes the rsa_pkcs1_implicit_rejection backport from your Linux distribution.
Does Defensia detect CVE-2024-2408?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If PHP is installed on a monitored server, CVE-2024-2408 will appear in your dashboard with remediation steps.
Related PHP CVEs
References
- https://github.com/php/php-src/security/advisories/GHSA-hh26-4ppw-5864
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/PKGTQUOA2NTZ3RXN22CSAUJPIRUYRB4B/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/W45DBOH56NQDRTOM2DN2LNA2FZIMC3PK/
- https://github.com/php/php-src/security/advisories/GHSA-hh26-4ppw-5864
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/PKGTQUOA2NTZ3RXN22CSAUJPIRUYRB4B/
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-2408. Free for 1 server.
Get started free