Bug 1547725 (CVE-2015-9253) - CVE-2015-9253 php: Infinite loop in php-fpm when restarting a child using program execution function
Summary: CVE-2015-9253 php: Infinite loop in php-fpm when restarting a child using pro...
Alias: CVE-2015-9253
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
Whiteboard: impact=moderate,public=20150803,repor...
Keywords: Security
Depends On: 1547726
Blocks: 1547732
TreeView+ depends on / blocked
Reported: 2018-02-21 19:55 UTC by Laura Pardo
Modified: 2019-06-08 22:41 UTC (History)
7 users (show)

Clone Of:
Last Closed: 2018-02-27 05:00:38 UTC

Attachments (Terms of Use)

Description Laura Pardo 2018-02-21 19:55:42 UTC
An issue was discovered in PHP through 7.2.2. The php-fpm master process restarts a child process in an endless loop when using program execution functions (e.g., passthru, exec, shell_exec, or system) with a non-blocking STDIN stream. This allows a remote attacker to generate a DoS on Shared Hosting Services, performed by this php-fpm master process consuming 100% of the CPU and disk space with a large volume of error logs.

https://bugs.php.net/bug.php?id=70185 [php 5.4]
https://bugs.php.net/bug.php?id=75968 [php 7.2]

Comment 1 Laura Pardo 2018-02-21 19:56:10 UTC
Created php tracking bugs for this issue:

Affects: fedora-all [bug 1547726]

Comment 2 Huzaifa S. Sidhpurwala 2018-02-27 04:59:52 UTC

The Red Hat Product Security Team does not consider this issue as a security flaw because specially crafted PHP scripts (containing embedded operating system commands) are required to trigger this flaw.

Comment 3 cadonline 2018-02-27 08:23:10 UTC
Correction to "containing embedded operating system commands": no embedded operating system commands are needed, only 2 php scripts are needed to CPU-DOS a shared hosting server without leaving a trace where the high load comes from, making it impossible to detect which hosting customer is to blame for.

copy from PHP Bug #75968:

Script 1:
stream_set_blocking(STDIN, false);
echo "Blah";

Script 2:
passthru('/usr/bin/php /path/to/1.php');

Note You need to log in before you can comment on or make changes to this bug.