<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Paul Schell – Blog</title>
    <link>https://paulschell.com/en/blog/</link>
    <description>Articles on Symfony upgrades, PHP migrations and maintaining legacy projects: security updates, end-of-support dates and practical advice for existing projects.</description>
    <language>en</language>
    <lastBuildDate>Fri, 23 Oct 2026 08:00:00 +0000</lastBuildDate>
    <atom:link href="https://paulschell.com/en/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Critical PHP vulnerability: update to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 now</title>
      <link>https://paulschell.com/en/blog/php-security-vulnerability-october-2026/</link>
      <guid isPermaLink="true">https://paulschell.com/en/blog/php-security-vulnerability-october-2026/</guid>
      <pubDate>Fri, 23 Oct 2026 08:00:00 +0000</pubDate>
      <dc:creator>Paul Schell</dc:creator>
      <description>Two critical PHP vulnerabilities allow unauthenticated remote code execution. Who is affected, which versions fix it and what to do on PHP 8.1 and older.</description>
      <content:encoded><![CDATA[<p>On 21 October 2026 the PHP team released security updates for all supported versions. They fix two vulnerabilities that let attackers run code on the server without logging in. This update takes priority over everything else.</p>
<h2>What happened</h2>
    <p>Both vulnerabilities (CVE-2026-109618 and CVE-2026-109619) are rated CVSS 9.2. They sit in PHP's own request handling, before any application code runs. A framework like Symfony or Laravel does not protect against them.</p>
    <ul><li>CVE-2026-109618: if PHP runs out of memory during a request, internal data can stay half initialized and later be treated as valid during cleanup.</li><li>CVE-2026-109619: internal state of a request can survive after its memory has been freed and be used by the next request on the same worker.</li></ul>
    <h2>Who is affected</h2>
    <p>Every PHP installation that serves web requests: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. The PHP team rates the risk highest for mod_php, where an unauthenticated exploit has been demonstrated.</p>
    <h2>What to do now</h2>
    <ol><li>Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35. Linux distributions and LTS vendors received the patches in advance, so packages should be available.</li><li>Restart every worker (PHP-FPM, Apache, FrankenPHP) so the new version actually runs. php -v on the command line only shows the CLI version, not necessarily the one behind the web server.</li><li>Rebuild and redeploy container images, even if the code has not changed.</li><li>If you use rpms.remirepo.net: the PHP team recommends switching to distribution packages or building from source, because the repository did not have the updates right away.</li></ol>
    <h2>If you cannot update right away</h2>
    <p>The PHP team lists settings that block individual attack paths. They explicitly do not make an installation safe and only bridge the time until the update:</p>
    <ul><li>Set session.upload_progress.enabled=0 in php.ini or the FPM pool (not via ini_set() or .user.ini) and restart every worker.</li><li>On PHP 8.5, also set fatal_error_backtraces=0.</li><li>Keep post_max_size low (8M without file uploads, 32M otherwise) and limit request sizes at the web server or proxy.</li></ul>
    <h2>PHP 8.1 and older</h2>
    <p>PHP 8.1 and older no longer receive updates from the PHP project. Given the severity, the PHP team still published minimal patches for 7.4, 8.0 and 8.1 this time, but only as source code to build yourself. Some distributions and LTS vendors ship backports.</p>
    <p>That is an exception you cannot count on next time. Now is a good moment to plan the <a href="https://paulschell.com/en/php-migration/">migration to a supported version</a>. PHP 8.2 also reaches end of life on 31 December 2026. The supported versions are listed on <a href="https://www.php.net/supported-versions.php" rel="noopener">php.net/supported-versions.php</a>.</p>
    <h2>Sources</h2>
    <ul class="sources"><li><a href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="noopener">php.net: security advisory of 21 October 2026</a></li><li><a href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener">GHSA-w8hw-w9fx-j79w (CVE-2026-109618)</a></li><li><a href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener">GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)</a></li><li><a href="https://www.php.net/supported-versions.php" rel="noopener">php.net: supported versions</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>PHP and Symfony in October 2026: security updates, end of support and what's coming in November</title>
      <link>https://paulschell.com/en/blog/php-symfony-october-2026/</link>
      <guid isPermaLink="true">https://paulschell.com/en/blog/php-symfony-october-2026/</guid>
      <pubDate>Fri, 23 Oct 2026 08:00:00 +0000</pubDate>
      <dc:creator>Paul Schell</dc:creator>
      <description>The monthly roundup: three Symfony vulnerabilities, the end of PHP 8.2, PHP 8.6 and Symfony 8.2 in November and what it means for existing projects.</description>
      <content:encoded><![CDATA[<p>A busy month: besides the critical PHP vulnerability there were security updates for Symfony, several end-of-support dates are getting close, and PHP 8.6 and Symfony 8.2 arrive in November. Here is the overview and what it means for existing projects.</p>
<h2>Security: update PHP and Symfony</h2>
    <p>First things first: since 21 October there are PHP updates fixing two critical remote code execution vulnerabilities (8.5.12, 8.4.27, 8.3.36, 8.2.35). The details are in a <a href="https://paulschell.com/en/blog/php-security-vulnerability-october-2026/">separate post</a>.</p>
    <p>On 15 October Symfony published three vulnerabilities that let a single crafted request take down a process:</p>
    <ul><li>HttpFoundation (CVE-2026-108082): a crafted Cache-Control header costs almost a second of CPU per request. Affects every application that handles HTTP requests.</li><li>Yaml (CVE-2026-109413): deeply nested inline YAML crashes the process. This includes #[MapRequestPayload] when the Yaml component is installed and the format is not restricted.</li><li>ExpressionLanguage (CVE-2026-109449): deeply nested expressions crash the process, for example via #[Assert\ExpressionSyntax].</li></ul>
    <p>Everything is fixed in the current patch releases 5.4.54, 6.4.48, 7.4.21 and 8.1.9. A composer update symfony/* within your current version is enough.</p>
    <h2>End of support in the coming months</h2>
    <ul><li>30 November 2026: Symfony 6.4 moves to security fixes only (until November 2027).</li><li>31 December 2026: PHP 8.2 stops receiving security fixes.</li><li>31 December 2026: PHP 8.4 moves to security fixes only (until the end of 2028).</li><li>31 January 2027: Symfony 8.1 reaches end of life. Symfony 8.0 has been unsupported since July 2026.</li></ul>
    <p>Current dates are listed on <a href="https://www.php.net/supported-versions.php" rel="noopener">php.net/supported-versions.php</a> and <a href="https://symfony.com/releases" rel="noopener">symfony.com/releases</a>.</p>
    <h2>New in November: PHP 8.6 and Symfony 8.2</h2>
    <p>PHP 8.6 is scheduled for 19 November 2026 and is available as a release candidate for testing. Symfony 8.2 follows at the end of November and is maintained until July 2027. From the Symfony blog of the last weeks:</p>
    <ul><li>A new JsonSchema component</li><li>Signed Messenger transports with secret rotation</li><li>Support for HTTP trailers</li><li>Safer HTML in translations</li></ul>
    <h2>What it means for existing projects</h2>
    <ul><li>If your project runs on PHP 8.2, now is the time to <a href="https://paulschell.com/en/php-migration/">move to 8.3 or 8.4</a>. Symfony 6.4 and 7.4 run on both.</li><li>Symfony 8.0 and 8.1 are short-lived releases. If you are on one of them, move to 8.2 by the end of January or deliberately stay on 7.4 LTS, which gets security fixes until November 2029.</li><li>Symfony 6.4 is safe until November 2027, but now is a calm moment to plan the <a href="https://paulschell.com/en/symfony-upgrade/">move to 7.4 LTS</a>. Fixing deprecations while still on 6.4 makes that step much smaller.</li><li>Nobody needs PHP 8.6 right away. Adding an 8.6 job to your CI is worth it, though, to see deprecations early.</li></ul>
    <h2>Sources</h2>
    <ul class="sources"><li><a href="https://www.php.net/" rel="noopener">php.net: news</a></li><li><a href="https://symfony.com/blog/category/security-advisories" rel="noopener">Symfony: security advisories</a></li><li><a href="https://symfony.com/releases" rel="noopener">Symfony: releases and support periods</a></li><li><a href="https://wiki.php.net/todo/php86" rel="noopener">PHP 8.6: release schedule</a></li><li><a href="https://symfony.com/blog/category/living-on-the-edge" rel="noopener">Symfony blog: New in Symfony 8.2</a></li></ul>]]></content:encoded>
    </item>
  </channel>
</rss>
