<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>php &#8211; PT ESC</title>
	<atom:link href="https://ptesc.tech/en/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://ptesc.tech/en/</link>
	<description></description>
	<lastBuildDate>Fri, 23 Oct 2026 15:56:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://ptesc.tech/wp-content/uploads/2026/09/cropped-cropped-large_icon-32x32.png</url>
	<title>php &#8211; PT ESC</title>
	<link>https://ptesc.tech/en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Another super-duper vulnerability threatens the whole world</title>
		<link>https://ptesc.tech/en/another-super-duper-vulnerability-threatens-the-whole-world/</link>
		
		<dc:creator><![CDATA[global_author]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 15:41:00 +0000</pubDate>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[cve]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://ptesc.tech/?p=1902</guid>

					<description><![CDATA[On October 21, two critical PHP vulnerabilities were disclosed — CVE-2026-109618 and CVE-2026-109619, both with a CVSS score of 9.2. Their exploitation allows unauthenticated code execution with the privileges of the web server. PHP version…]]></description>
										<content:encoded><![CDATA[<p>On October 21, two critical PHP vulnerabilities were disclosed — <a href="https://nvd.nist.gov/vuln/detail/cve-2026-109618" rel="noopener" target="_blank">CVE-2026-109618</a> and <a href="https://nvd.nist.gov/vuln/detail/cve-2026-109619" rel="noopener" target="_blank">CVE-2026-109619</a>, both with a CVSS score of 9.2. Their exploitation allows unauthenticated code execution with the privileges of the web server.</p>
<p>PHP versions from 5.4 onward can be considered vulnerable. Interestingly, the vulnerabilities were found with the help of AIs (Gemini 4 Argon + GPT-5.6 Sol), and the patch is more than 10 thousand lines of code.</p>
<figure class="wp-block-image"><img decoding="async" width="1024" height="746" src="https://ptesc.tech/wp-content/uploads/2026/10/photo_640@23-10-2026_18-41-42-1024x746.jpg" class="attachment-large size-large" alt="" loading="lazy" /></figure>
<h3>What the vulnerability is</h3>
<p>The attacker&#8217;s main goal is to trigger a fatal error, such as out-of-memory (OOM), at the right moment while the PHP interpreter is processing an incoming web request.</p>
<p>The CVEs are related to PHP potentially mistakenly treating a new data array that has not yet been initialized due to an OOM error as initialized. This means that an attacker, by spamming PHP memory with specially crafted requests, can cause the same memory region to be freed and allocated for different arrays.</p>
<p>As a result, due to the OOM error, the fields and pointers of a data array were not initialized in time, and they ended up containing data from previous requests controlled by the attacker. And when freeing memory after the error, PHP will call array cleanup functions at addresses controlled by the attacker. That is why exploiting these two vulnerabilities requires serious preparation and large HTTP requests.</p>
<blockquote>
<p><strong>Important:</strong> due to the ASLR address randomization mechanism, the attacker needs to achieve a memory leak in order to learn the address of a function, for example <code>system()</code>.</p>
</blockquote>
<h3>How exactly exploitation occurs</h3>
<p>Since the source of the vulnerability lies deep and is related to the memory free and allocation mechanisms in PHP, there are several ways to exploit it.</p>
<h5>1. x-www-form-urlencoded forms</h5>
<p>The amount of memory allocated during PHP processing here is achieved through the great nesting depth of form parameters <code>(...[x])</code>. PHP accounts for a new array element even before it is populated, and copying a long name while processing an HTTP request can exceed <code>memory_limit</code>, causing out-of-memory.</p>
<p>When cleaning up the array, PHP mistakes the planted bytes for a ready-made element. By placing a fake array in the right memory region and substituting a function address into it, the attacker can force PHP to call it during cleanup.</p>
<h5>2. Tracking file uploads</h5>
<p>During a multipart upload with upload progress tracking enabled via the PHP_SESSION_UPLOAD_PROGRESS parameter, PHP writes the upload status to the session — the visitor&#8217;s data store between requests. Many empty file fields with nested names also cause a huge amount of memory to be allocated and an OOM error.</p>
<p>After OOM, the memory may be freed but the pointer to it retained. The next request via upload progress may access it again — this is use-after-free (UAF). If the request lands in the same process that survived the crash, the memory may already contain the attacker&#8217;s data.</p>
<blockquote>
<p><strong>Important:</strong> since the attacker can directly influence the structure of the PHP session data, in one of the requests they manage to trigger a PHP memory leak via the <code>Set-Cookie: PHPSESSID=</code> header, which allows bringing the exploitation through to command execution.</p>
</blockquote>
<h4>3. Crash report in PHP 8.5.</h4>
<p>When the <code>fatal_error_backtraces</code> flag is enabled (enabled by default), PHP saves the list of functions that were executing at the moment of the fatal error. After the request completes, the memory of the list is freed, but the pointer remains. The error message at the start of the next request causes PHP to access it again, triggering another <code>use-after-free</code>.</p>
<p>New reports and PoCs for these vulnerabilities appear every day, which makes creating detections for their exploitation even more difficult. However, to successfully exploit and execute malicious code, the attacker needs to learn the exact addresses of functions (for example, <code>system</code>).</p>
<p>A full exploit that executes malicious code is so far known only for the method using the <code>PHP_SESSION_UPLOAD_PROGRESS</code> parameter.</p>
<figure class="wp-block-image"><img decoding="async" width="1024" height="362" src="https://ptesc.tech/wp-content/uploads/2026/10/photo_641@23-10-2026_18-41-42-1024x362.jpg" class="attachment-large size-large" alt="" loading="lazy" /></figure>
<h3>Network artifacts</h3>
<p>The only known full attack chain so far has an obvious artifact — the <code>PHP_SESSION_UPLOAD_PROGRESS</code> parameter in the request body. Successful exploitation may be indicated by an unusually long <code>PHPSESSID</code> value in the response containing URL-encoded memory bytes.</p>
<p>Although the <code>PHP_SESSION_UPLOAD_PROGRESS</code> parameter itself can also be used in ordinary requests, in practice we have not encountered this parameter in network requests.</p>
<blockquote>
<p><strong>Important:</strong> there is no single mandatory network marker for all exploitation variants.</p>
</blockquote>
<h3>What is known about the attacks</h3>
<p>Amazon specialists <a href="https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/" rel="noopener" target="_blank">recorded</a> attempted attacks as early as October 17. After the vulnerabilities were disclosed, the number of attack attempts in Cloudflare&#8217;s network grew to millions, according to the company&#8217;s head.</p>
<h3>How to fix</h3>
<p>Update PHP to 8.2.35, 8.3.36, 8.4.27, 8.5.12, or a newer fixed version of your branch.</p>
<p>Until you update, the following PHP settings will help reduce the risk:</p>
<ul>
<li><code>session.upload_progress.enabled=0</code> — blocks the known chains via upload progress;</li>
<li><code>fatal_error_backtraces=0</code> — blocks the corresponding path on PHP 8.5;</li>
<li>request size and complexity limits on the web server or reverse proxy.</li>
</ul>
<p>The settings must take effect before the request is parsed: set them in <code>php.ini</code> or the server configuration.</p>
<p>For <a href="https://nvd.nist.gov/vuln/detail/cve-2026-109618" rel="noopener" target="_blank">CVE-2026-109618</a>, the PHP developers also suggest setting <code>memory_limit=-1</code> with external memory limits at the container/cgroup level. This is a partial measure: a system-level memory allocation failure can still lead to the vulnerable path.</p>
<p><strong>Only updating PHP fully fixes both vulnerabilities.</strong></p>
<h3>Suricata signatures</h3>
<pre><code>alert http any any -&gt; any any (msg: &quot;ATTACK [PTsecurity] Possible PHP RCE Exploitation attempt. PHP upload progress in multipart request (PHP2Shell, CVE-2026-109618, CVE-2026-109619)&quot;; flow: established, to_server; http.content_type; content: &quot;multipart/form-data&quot;; startswith; nocase; http.request_body; content: &quot;PHP_SESSION_UPLOAD_PROGRESS&quot;; threshold: type limit, track by_src, count 1, seconds 300; reference: cve, 2026-109618; reference: cve, 2026-109619; reference: url, wiz.io/blog/php2shell-php-rce; classtype: attempted-admin; sid: 10018633; rev: 1;)

alert http any any -&gt; any any (msg: &quot;ATTACK [PTsecurity] Successful PHP RCE Exploitation. PHPSESSID memory leak (PHP2Shell, CVE-2026-109619)&quot;; flow: established, to_client; http.header.raw; content: &quot;Set-Cookie|3a|&quot;; nocase; content: &quot;PHPSESSID=&quot;; nocase; distance: 0; content: &quot;%&quot;; distance: 0; pcre: &quot;/Set-Cookie\x3a[\x20\x09]*PHPSESSID\x3d(?:[^\x3b\x25\r\n\x20\x09]{0,64}\x25(?:[0189a-f][0-9a-f]|7f)){12}/im&quot;; threshold: type limit, track by_dst, count 1, seconds 300; reference: cve, 2026-109619; reference: url, wiz.io/blog/php2shell-php-rce; classtype: successful-admin; sid: 10018632; rev: 3;)</code></pre>
<p><span class="hashtag">#cve</span> <span class="hashtag">#php</span></p>
<p><a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
