Skip to content

Commit b9c4b55

Browse files
Add security advisory for RCE
1 parent 18c7c72 commit b9c4b55

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

‎public/archive/archive.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<uri>http://php.net/contact</uri>
1010
<email>php-webmaster@lists.php.net</email>
1111
</author>
12+
<xi:include href="entries/2026-10-21-5.xml"/>
1213
<xi:include href="entries/2026-10-21-4.xml"/>
1314
<xi:include href="entries/2026-10-21-3.xml"/>
1415
<xi:include href="entries/2026-10-21-2.xml"/>
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<entry xmlns="http://www.w3.org/2005/Atom">
3+
<title>Security advisory: Critical remote code execution vulnerabilities, update now</title>
4+
<id>https://www.php.net/archive/2026.php#2026-10-21-5</id>
5+
<published>2026-10-21T00:35:26+00:00</published>
6+
<updated>2026-10-21T00:35:26+00:00</updated>
7+
<link href="https://www.php.net/index.php#2026-10-21-5" rel="alternate" type="text/html"/>
8+
<link href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="via" type="text/html"/>
9+
<category term="frontpage" label="PHP.net frontpage news"/>
10+
<content type="xhtml">
11+
<div xmlns="http://www.w3.org/1999/xhtml">
12+
<p>
13+
<strong>PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. All PHP users are strongly encouraged to update immediately.</strong>
14+
</p>
15+
16+
<p><strong>Who is at risk:</strong> all PHP installations serving web requests, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. We consider the risk highest for mod_php, with a demonstrated exploit where an unauthenticated request can trigger the attack before any application code runs.</p>
17+
18+
<p><strong>The vulnerabilities:</strong></p>
19+
20+
<ul>
21+
<li><strong>RCE via OOM corruption</strong>, CVE-2026-109618 (<a href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w">GHSA-w8hw-w9fx-j79w</a>): out-of-memory
22+
handling can interrupt PHP while internal request data is only partially initialized. Request cleanup may then treat the invalid data as valid.</li>
23+
<li><strong>RCE via stale global state</strong>, CVE-2026-109619 (<a href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp">GHSA-6wmf-4rv5-p3rp</a>): request-owned
24+
internal state can survive after its backing memory has been freed. A later request handled by the same worker may use that stale state before normal initialization resets it.</li>
25+
</ul>
26+
27+
<p><strong>How to update:</strong></p>
28+
29+
<ul>
30+
<li>Update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35. Source downloads are on our <a href="https://www.php.net/downloads.php?source=Y">downloads page</a>. Windows source and binaries are <a href="https://www.php.net/downloads.php?os=windows">on the same page</a>.</li>
31+
<li>Linux distributions and LTS vendors received the patches in advance, so check your vendor for updated packages.</li>
32+
<li><strong>PHP 8.1 and older</strong> no longer receive updates from the PHP project. Some distributions and LTS vendors provide backported fixes, so contact your vendor for details, or upgrade to a supported version.</li>
33+
<li>If you rely on the volunteer-maintained <code>rpms.remirepo.net</code>, we urge you to switch to distribution packages or build from source, so you can immediately apply updates. The repo will not have updates today.</li>
34+
35+
<li>Given the severity of these vulnerabilities, the PHP security team provided minimal source-backports for <a href="https://github.com/php/php-src/tree/PHP-7.4-CVE-2026-109618-109619">PHP 7.4</a>, <a href="https://github.com/php/php-src/tree/PHP-8.0-CVE-2026-109618-109619">PHP 8.0</a>, and <a href="https://github.com/php/php-src/tree/PHP-8.1-CVE-2026-109618-109619">PHP 8.1</a> to help people building from source or without access to an LTS vendor.
36+
</li>
37+
</ul>
38+
39+
<p><strong>If you cannot update immediately:</strong> while only an update is a complete solution, the following measures reduce exposure to specific attack paths but do not make an installation safe.</p>
40+
41+
<p><strong>RCE via OOM corruption (CVE-2026-109618):</strong></p>
42+
43+
<ul>
44+
<li>Set <code>memory_limit=-1</code>, preferably in a way applications can't override, such as <code>php_admin_value</code> in the FPM pool or Apache configuration, and check that no pool, directory or application setting puts a finite limit back. This removes the controllable PHP memory limit failure, but an underlying allocation failure can still reach the vulnerable path.</li>
45+
<li>Set a low <code>post_max_size</code>. For applications that don't require file uploads, set <code>post_max_size = 8M</code>. If file uploads are necessary, set <code>post_max_size = 32M</code>. Keep <code>upload_max_filesize</code> below <code>post_max_size</code>.
46+
Consider enforcing limits at the web server or proxy level for decoded request size, input field count, multipart part count, header count, and nesting depth. These
47+
limits must also cover requests without a usable <code>Content-Length</code>.</li>
48+
<li>Use a container or cgroup limit as an availability boundary, preferably with a policy that kills only the affected worker. Do not substitute <code>RLIMIT_AS</code> or
49+
<code>RLIMIT_DATA</code>, as these can cause the vulnerable allocation failure.</li>
50+
</ul>
51+
52+
<p><strong>RCE via stale global state (CVE-2026-109619):</strong></p>
53+
54+
<ul>
55+
<li>Set <code>session.upload_progress.enabled=0</code> and restart every worker. Use <code>php.ini</code>, an FPM pool or server
56+
configuration that applies before request parsing. Do not rely on <code>ini_set()</code> or FPM <code>.user.ini</code>. This blocks the confirmed session paths but not other variants.</li>
57+
<li>On PHP 8.5, set <code>fatal_error_backtraces=0</code> and restart every worker. This blocks the confirmed fatal backtrace path only.</li>
58+
<li>Remove invalid or deprecated settings applied per request that emit diagnostics before initialization. Hiding diagnostics with <code>error_reporting</code>, <code>display_errors</code>
59+
or <code>@</code> does not help.</li>
60+
<li>Fix attacker-reachable fatal errors and execution timeouts, including failures in callbacks, upload or import processing and cleanup.</li>
61+
</ul>
62+
63+
<p>The advisories linked above have the full technical details.</p>
64+
65+
</div>
66+
</content>
67+
</entry>

0 commit comments

Comments
 (0)