Cloudanix VulnDB

CVE-2015-3411

Medium · 6.5

CVSS

6.5

EPSS

3.3%

Published

May 16, 2016

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in older PHP versions lets attackers trick certain file-handling functions into reading or changing any file on the server instead of only the files the application intended to allow.

Exploit Available
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

PHP fails to strip or reject %00 (null byte) sequences in pathnames passed to DOMDocument load, xmlwriter_open_uri, finfo_file, and hash_hmac_file, allowing the null byte to truncate the string at the operating-system level and bypass extension or directory restrictions.

Why it matters to the business

Attackers may read or overwrite arbitrary files on the server, exposing sensitive configuration or data and enabling further compromise of the web application or host.

How an attack unfolds

An attacker supplies a filename containing a null byte (for example filename.xml) to an application that calls one of the four affected PHP functions while performing an extension or path check; the check passes but the operating system treats the name as terminating at the null byte, granting access outside the intended scope.

How to fix it

Upgrade PHP to version 5.4.40, 5.5.24, 5.6.8 or later on all affected Red Hat Enterprise Linux and PHP installations; apply vendor patches and rebuild any custom PHP builds.

How to confirm the fix worked

Verify installed PHP version is at or above the fixed releases; attempt a controlled test request containing a null-byte filename against the affected functions and confirm the operation is rejected or truncated correctly.

Typical attack path

  1. Locate a PHP application that accepts user-controlled filenames and passes them to DOMDocument::load, xmlwriter_open_uri, finfo_file, or hash_hmac_file after an extension whitelist check
  2. Append a null byte followed by an allowed extension (e.g., \0.xml) to the supplied filename
  3. Submit the crafted value via HTTP request, form field, or API parameter
  4. Observe successful read or write of an arbitrary file outside the permitted directory or extension set

How to detect it

Search web-server and application logs for HTTP requests or POST bodies containing %00 or literal null bytes followed by common extensions; inspect PHP error or access logs for unexpected file paths being opened by the listed functions.

  • %00.xml
  • %00.jpg
  • %00.png
  • filename\0
  • DOMDocument::load.*%00
  • finfo_file.*%00
  • hash_hmac_file.*%00

What your security team should do

  • Prioritize patching PHP on all internet-facing systems within the next maintenance window
  • Audit application code for direct calls to the four listed functions with untrusted input
  • Add server-side filename sanitization that explicitly rejects or strips null bytes before any file operation
  • Enable PHP open_basedir and disable dangerous functions where feasible

The record

PHP before 5.4.40, 5.5.x before 5.5.24, and 5.6.x before 5.6.8 does not ensure that pathnames lack %00 sequences, which might allow remote attackers to read or write to arbitrary files via crafted input to an application that calls (1) a DOMDocument load method, (2) the xmlwriter_open_uri function, (3) the finfo_file function, or (4) the hash_hmac_file function, as demonstrated by a filename\0.xml attack that bypasses an intended configuration in which client users may read only .xml files.

Affected packages

Ecosystem Package Introduced Fixed
Debian:6.0 php5 0 5.3.3.1-7+squeeze27
Red Hat:enterprise_linux:6::client php 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-bcmath 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-cli 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-common 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-dba 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-debuginfo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-devel 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-embedded 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-enchant 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-fpm 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-gd 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-imap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-intl 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-ldap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-mbstring 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-mysql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-odbc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-pdo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-pgsql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-process 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-pspell 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-recode 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-snmp 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-soap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-tidy 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-xml 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-xmlrpc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::client php-zts 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-bcmath 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-cli 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-common 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-dba 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-debuginfo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-devel 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-embedded 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-enchant 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-fpm 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-gd 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-imap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-intl 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-ldap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-mbstring 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-mysql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-odbc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-pdo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-pgsql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-process 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-pspell 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-recode 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-snmp 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-soap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-tidy 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-xml 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-xmlrpc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::computenode php-zts 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-bcmath 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-cli 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-common 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-dba 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-debuginfo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-devel 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-embedded 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-enchant 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-fpm 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-gd 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-imap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-intl 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-ldap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-mbstring 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-mysql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-odbc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-pdo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-pgsql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-process 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-pspell 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-recode 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-snmp 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-soap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-tidy 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-xml 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-xmlrpc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::server php-zts 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-bcmath 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-cli 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-common 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-dba 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-debuginfo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-devel 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-embedded 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-enchant 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-fpm 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-gd 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-imap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-intl 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-ldap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-mbstring 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-mysql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-odbc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-pdo 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-pgsql 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-process 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-pspell 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-recode 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-snmp 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-soap 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-tidy 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-xml 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-xmlrpc 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:6::workstation php-zts 0 0:5.3.3-46.el6_6
Red Hat:enterprise_linux:7::client php 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-bcmath 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-cli 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-common 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-dba 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-debuginfo 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-devel 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-embedded 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-enchant 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-fpm 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-gd 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-intl 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-ldap 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-mbstring 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-mysql 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-mysqlnd 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-odbc 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-pdo 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-pgsql 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-process 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-pspell 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-recode 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-snmp 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-soap 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-xml 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::client php-xmlrpc 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-bcmath 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-cli 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-common 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-dba 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-debuginfo 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-devel 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-embedded 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-enchant 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-fpm 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-gd 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-intl 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-ldap 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-mbstring 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-mysql 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-mysqlnd 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-odbc 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-pdo 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-pgsql 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-process 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-pspell 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-recode 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-snmp 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-soap 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-xml 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::computenode php-xmlrpc 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::server php 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-bcmath 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-cli 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-common 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-dba 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-debuginfo 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-devel 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-embedded 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-enchant 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-fpm 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-gd 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-intl 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-ldap 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-mbstring 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-mysql 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-mysqlnd 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-odbc 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-pdo 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-pgsql 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-process 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-pspell 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-recode 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-snmp 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-soap 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-xml 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::server php-xmlrpc 0 0:5.4.16-36.ael7b_1
Red Hat:enterprise_linux:7::workstation php 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-bcmath 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-cli 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-common 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-dba 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-debuginfo 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-devel 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-embedded 0 0:5.4.16-36.el7_1
Red Hat:enterprise_linux:7::workstation php-enchant 0 0:5.4.16-36.el7_1

Related vulnerabilities