Skip to main content
CVE Vulnerability Database

CVE-2024-3096: PHP Authentication Bypass Vulnerability

CVE-2024-3096 is an authentication bypass flaw in PHP that allows attackers to bypass password verification when hashes start with a null byte. This article covers technical details, affected versions, and mitigation.

Updated:

CVE-2024-3096 Overview

CVE-2024-3096 is an authentication bypass vulnerability affecting PHP versions 8.1.* before 8.1.28, 8.2.* before 8.2.18, and 8.3.* before 8.3.5. The vulnerability exists in the password_verify() function, which incorrectly returns true when validating an empty string against passwords that begin with a null byte (\\x00). This flaw could allow attackers to bypass authentication mechanisms in applications relying on PHP's built-in password hashing functions.

Critical Impact

Applications using password_hash() and password_verify() for authentication may be vulnerable to unauthorized access if stored passwords begin with a null byte, allowing authentication bypass with a blank password.

Affected Products

  • PHP versions 8.1.* before 8.1.28
  • PHP versions 8.2.* before 8.2.18
  • PHP versions 8.3.* before 8.3.5
  • Debian Linux 10.0

Discovery Timeline

  • 2024-04-29 - CVE-2024-3096 published to NVD
  • 2025-11-04 - Last updated in NVD database

Technical Details for CVE-2024-3096

Vulnerability Analysis

This vulnerability represents an input validation error in PHP's password_verify() function. The core issue lies in how the function handles password hashes that were created from passwords starting with a null byte character (\\x00). When a password beginning with a null byte is hashed using password_hash(), subsequent verification attempts using password_verify() with an empty string as the password will incorrectly return true, effectively bypassing the authentication check.

The vulnerability can be exploited remotely without requiring user interaction, making it particularly concerning for web applications that rely on PHP's native password handling functions. The primary impact is unauthorized access to confidential information through authentication bypass.

Root Cause

The root cause stems from improper input validation (CWE-20) within the password_verify() function. The function fails to properly handle the comparison when the stored password hash was derived from a password containing a leading null byte. Null bytes are traditionally used as string terminators in C-based languages, and this behavior appears to cause the verification logic to incorrectly treat an empty string as matching the null-prefixed password.

Attack Vector

The attack vector is network-based, requiring an attacker to interact with a vulnerable PHP application's authentication mechanism. The attack scenario involves:

  1. Identifying a PHP application using password_hash() and password_verify() for authentication
  2. Discovering or creating an account where the password starts with a null byte (\\x00)
  3. Attempting authentication with a blank/empty password string
  4. Gaining unauthorized access when password_verify() incorrectly returns true

The vulnerability manifests in the password verification logic where null-byte prefixed passwords create an exploitable edge case. When an application stores a password hash generated from a password like \\x00secret, an attacker can authenticate by simply providing an empty string. For technical implementation details, see the GitHub PHP Security Advisory.

Detection Methods for CVE-2024-3096

Indicators of Compromise

  • Successful authentication attempts with empty or blank password fields
  • Anomalous login patterns where users authenticate without providing valid credentials
  • Application logs showing authentication success for accounts that should require passwords

Detection Strategies

  • Review PHP application authentication logs for successful logins with empty password submissions
  • Implement application-level logging to capture raw password input lengths before verification
  • Audit stored password hashes for evidence of null-byte prefixed original passwords
  • Deploy web application firewall rules to flag authentication requests with empty password fields

Monitoring Recommendations

  • Monitor authentication endpoints for unusual patterns of successful logins with minimal or empty credentials
  • Implement real-time alerting for authentication anomalies across PHP-based applications
  • Track PHP version deployments across infrastructure to identify unpatched systems
  • Review access logs for accounts that may have been compromised through this authentication bypass

How to Mitigate CVE-2024-3096

Immediate Actions Required

  • Upgrade PHP to version 8.1.28, 8.2.18, or 8.3.5 or later immediately
  • Audit existing password storage for any passwords that may begin with null bytes
  • Implement additional input validation to reject passwords containing null bytes
  • Force password resets for any accounts identified with potentially vulnerable password hashes

Patch Information

PHP has released security patches addressing this vulnerability. Upgrade to the following minimum versions:

  • PHP 8.1.x: Upgrade to 8.1.28 or later
  • PHP 8.2.x: Upgrade to 8.2.18 or later
  • PHP 8.3.x: Upgrade to 8.3.5 or later

For detailed patch information, refer to the GitHub PHP Security Advisory. Additional distribution-specific patches are available from Debian LTS Announcement, NetApp Security Advisory, and Fedora Package Announcements.

Workarounds

  • Add application-level validation to reject passwords containing null bytes before passing to password_hash()
  • Implement additional authentication factors (MFA) as a defense-in-depth measure
  • Add length validation to ensure passwords are non-empty before calling password_verify()
  • Consider using a web application firewall to filter requests with empty password fields
bash
# Check current PHP version
php -v

# Verify PHP version meets minimum requirements (example for 8.2.x)
php -r "echo version_compare(PHP_VERSION, '8.2.18', '>=') ? 'Patched' : 'Vulnerable';"

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.