NES for PHP 7 Release Notes: PHP 7.4
Comprehensive release notes and changelog for NES for PHP 7 Release Notes: PHP 7.4, including security patches, bug fixes, and feature updates across all supported versions.
PHP 7.4
7.4.4 (NES) - October 26, 2026
Packages: https://registry.nes.herodevs.com/bin/nes/php/v7.4.33-nes-7.4.4/ (see Installation)
Container Images: registry.nes.herodevs.com/nes/php-nes:7.4.33-nes-7.4.4-<variant>-<base> (see Container Images)
Windows: https://registry.nes.herodevs.com/bin/nes/php/v7.4.33-nes-7.4.4/php-v7.4.33-nes-7.4.4.windows.x64.ts.zip (Windows Server 2022, x64; see Windows)
Based on PHP 7.4.33.
This release patches the following CVEs:
- GHSA-m3wq-j48p-jxwh A flaw in the libzip library of the RHEL 8 packages lets a crafted zip archive with colliding entry names slow down opening it. - (Low)
- CVE-2026-28387 The Windows zip bundles OpenSSL 3.5.9 in place of 1.1.1s, which fixes CVE-2026-28387, CVE-2023-4807, CVE-2022-4450, CVE-2023-0215, CVE-2023-0464, CVE-2025-69421, CVE-2026-28388, CVE-2026-28389, CVE-2026-28390 and CVE-2023-0286. - (High)
- CVE-2023-38545 The Windows zip bundles libcurl 8.23.0 in place of 7.70.0, which fixes CVE-2023-38545, CVE-2020-8231, CVE-2020-8285 and CVE-2020-8286. - (Critical)
- CVE-2023-4863 The Windows zip bundles libwebp 1.6.0 in place of 1.1.0, which fixes CVE-2023-4863 and CVE-2023-1999. - (High)
- CVE-2020-11080 The Windows zip bundles nghttp2 1.70.0 in place of 1.40.0, which fixes CVE-2020-11080, CVE-2023-35945 and CVE-2023-44487. - (High)
- CVE-2024-56171 The Windows zip bundles libxml2 2.10.4 in place of 2.9.10, built with the fixes for CVE-2024-56171, CVE-2021-3518, CVE-2021-3517, CVE-2022-40304, CVE-2022-49043, CVE-2026-11979, CVE-2026-86138, CVE-2026-86140, CVE-2026-86142, CVE-2026-86144, CVE-2025-24928, CVE-2019-20388, CVE-2020-7595, CVE-2022-2309, CVE-2022-23308, CVE-2022-40303, CVE-2024-25062, CVE-2025-27113, CVE-2025-32414, CVE-2025-32415, CVE-2026-86143, CVE-2024-34459, CVE-2025-6021, CVE-2026-6653, CVE-2023-45322, CVE-2025-8732, CVE-2026-0989, CVE-2026-0990, CVE-2026-0992, CVE-2026-86137 and CVE-2026-86141. - (Critical)
- CVE-2020-11656 The Windows zip bundles SQLite 3.53.4 in place of 3.31.1, which fixes CVE-2020-11656, CVE-2020-35527, CVE-2025-6965, CVE-2020-9327, CVE-2020-11655, CVE-2020-35525, CVE-2022-35737, CVE-2023-7104 and CVE-2020-13630. - (Critical)
- CVE-2022-37434 The Windows zip bundles zlib 1.3.2 in place of 1.2.12, which fixes CVE-2022-37434, CVE-2023-45853 and CVE-2026-22184. - (Critical)
- CVE-2022-27404 The Windows zip bundles FreeType 2.15.0 in place of 2.9.1, which fixes CVE-2022-27404, CVE-2020-15999, CVE-2025-27363, CVE-2022-27405 and CVE-2022-27406. - (Critical)
- CVE-2026-25646 The Windows zip bundles libpng 1.6.59 in place of 1.6.34, which fixes CVE-2026-25646 and CVE-2026-22801. - (High)
- CVE-2019-17498 The Windows zip bundles libssh2 1.11.1 in place of 1.9.0, built with the fixes for CVE-2019-17498, CVE-2026-55199, CVE-2026-58050, CVE-2025-15661, CVE-2026-7598, CVE-2026-55200, CVE-2026-58051, CVE-2026-66032, CVE-2026-66033, CVE-2026-66034 and CVE-2026-66035. - (High)
- CVE-2018-11813 The Windows zip bundles libjpeg-turbo 3.2.0 in place of libjpeg 9c, which fixes CVE-2018-11813, CVE-2020-14152 and CVE-2020-14153. - (High)
- CVE-2022-4883 The Windows zip bundles libXpm 3.5.19 in place of 3.5.12, which fixes CVE-2022-4883, CVE-2022-44617 and CVE-2022-46285. - (High)
- CVE-2019-11068 The Windows zip bundles libxslt 1.1.43 in place of 1.1.32, which fixes CVE-2019-11068, CVE-2021-30560, CVE-2024-55549, CVE-2025-24855 and CVE-2019-5815. - (Critical)
- CVE-2020-10531 The Windows zip bundles ICU 72.1 in place of 66.1, which fixes CVE-2020-10531. - (High)
- CVE-2022-24407 The Windows zip bundles Cyrus SASL 2.1.28 in place of 2.1.27, which fixes CVE-2022-24407 and CVE-2019-19906. - (High)
- CVE-2019-12450 The Windows zip bundles GLib 2.90.0 in place of 2.53.3, which fixes CVE-2019-12450, CVE-2025-14087, CVE-2026-58016, CVE-2026-58014, CVE-2026-58010, CVE-2026-58012, CVE-2026-58013, CVE-2020-35457, CVE-2023-32643, CVE-2019-13012, CVE-2021-27218, CVE-2021-27219, CVE-2023-29499, CVE-2023-32636, CVE-2026-58011 and CVE-2026-58015. - (Critical)
- CVE-2020-25694 The Windows zip bundles libpq 14.24 in place of 11.4, which fixes CVE-2020-25694. - (High)
- CVE-2020-36229 The Windows zip bundles OpenLDAP 2.7.0 in place of 2.4.47, which fixes CVE-2020-36229 and CVE-2020-36230. - (High)
- CVE-2018-18066 The Windows zip bundles Net-SNMP 5.9.4 in place of 5.7.3, which fixes CVE-2018-18066. - (High)
- CVE-2026-85091 The Windows zip's zlib is updated to a build that fixes CVE-2026-85091, a heap buffer overflow after a stalled non-blocking write. - (High)
Upgrade notes
- Session upload progress is off by default:
session.upload_progress.enablednow defaults toOffin the build and in the shippedphp.inifiles. This mitigates CVE-2026-115560, which needs session upload progress to be enabled and has no upstream fix yet; the fix will follow in a later release. Session upload progress has had no effect since release 7.4.1, so settingsession.upload_progress.enabledtoOndoes not bring it back. - Windows: this release adds a zip of PHP for Windows, the thread-safe x64
build (see the Windows line above for the file and the supported Windows
version). It runs PHP from the command line, from IIS through FastCGI and
from Apache (
php7apache2_4.dll), and replaces the PHP 7.4 zip you use today: the extension build is the same (API20190902,TS,VC15). It needs Microsoft's Visual C++ Redistributable for Visual Studio 2015-2026 (x64), which the zip does not include.SHASUMS256.txt, signed with the release key, lists the zip; the programs are not Authenticode-signed. The Windows page has the download, verification and installation steps. - Windows: the zip carries the fixes for the Windows-only vulnerabilities
CVE-2024-4577 and
CVE-2024-8926 (php-cgi
argument injection), CVE-2024-1874
and CVE-2024-5585
(
proc_open()command injection) and CVE-2026-17545 (device names in paths). Every release's zip is tested against CVE-2024-4577, CVE-2024-8926 and CVE-2024-5585 before it ships, with the default code page and with the Japanese code page 932 that CVE-2024-4577 needs. - Windows: every library the zip bundles is past its known High and Critical
CVEs (listed above). Among them: OpenSSL 3.5.9, where other PHP 7.4 zips have
OpenSSL 1.1.1 (the legacy provider is in
extras\ssl), cURL 8.23.0, libxml2 2.10.4, libxslt 1.1.43, SQLite 3.53.4, zlib 1.3.2, libzip 1.12.1, libssh2 1.11.1, libpq 14.24, OpenLDAP 2.7.0, Net-SNMP 5.9.4 and ICU 72.1. The enchant extension uses Enchant 2. The zip has a CycloneDX SBOM atextras\sbom.cdx.json. - RHEL 8 and 9: Argon2 password hashing (
PASSWORD_ARGON2I,PASSWORD_ARGON2ID) comes from thephp-sodiumpackage, as on RHEL 10; PHP is not linked with libargon2. Installphp-sodiumif you hash passwords with Argon2. - This release also fixes these flaws, which have no CVE ids:
- DOM: a use-after-free when a
DOMXPath::registerPhpFunctions()callback returns a node of another document (GH-22554). - DOM: namespace nodes in XPath. Passing one to a PHP function read outside
its structure and could crash, and a namespace node returned by
DOMXPath::query()orDOMXPath::evaluate(), or passed to a PHP function, could outlive its parent element or that element's document. The namespace nodeDOMElement::getAttributeNode()orDOMElement::getAttributeNodeNS()returns for anxmlnsattribute had the same use-after-free, and with two or more namespace declarations on the element itsparentNoderead past the declaration and could crash. - XSL: passing a namespace node to a
php:function()callback read outside its structure and crashed. The callback now gets the namespace node in the transformed document, and itsparentNodeis a copy of the declaring element, as other node arguments are copies. - HTTP stream wrapper: on a redirect, the check for user-supplied headers no
longer reads the byte before the
headercontext option. - mysqlnd: a server's binary-protocol row too short for its NULL bitmap made the client read past the row. Such a row now fails with the warning "Malformed server packet. No packet space left for the NULL bitmap".
- intl:
Locale::getKeywords()returned a keyword value of exactly 100 bytes without its terminating NUL, and leaked memory when it failed. - SOAP: node names that PHP code supplies are limited to 50000 bytes, the
longest name libxml2 reads back. An over-long
SoapVarorSoapParamname, or a key of an array a server returns, is not used, and the node keeps its default name. An over-long__soapCall()function name,SoapHeadername, property name of an object without a WSDL type, or element name of anXSD_ANYXMLarray fails with aSoapFault("SOAP-ERROR: Encoding: ... name is too long"). AnXSD_ANYXMLarray with an integer key no longer crashes. unserialize(): a use-after-free when a nestedunserialize()call, made from theunserialize()method of aSerializableclass (ArrayObject,ArrayIterator,SplDoublyLinkedList,SplQueue,SplStack,SplObjectStorageor a class of your own), replaces through a back-reference an object that is still being filled. AGMPobject being unserialized is protected the same way.
- DOM: a use-after-free when a
7.4.3 (NES) - October 23, 2026
Packages: https://registry.nes.herodevs.com/bin/nes/php/v7.4.33-nes-7.4.3/ (see Installation)
Container Images: registry.nes.herodevs.com/nes/php-nes:7.4.33-nes-7.4.3-<variant>-<base> (see Container Images)
Based on PHP 7.4.33.
This release adds no new security patches; it includes every security patch from earlier releases.
Upgrade notes
- This release adds Debian 13, Ubuntu 26.04 and RHEL 10 (with AlmaLinux 10 and Rocky Linux 10). Release 7.4.2 was not published: an upgrade from 7.4.1 needs no extra steps.
- Debian 13: there is no
php7.4-imap. Remove it (sudo apt-get remove php7.4-imap) before you upgrade; theimap_*functions are not available. - RHEL 10:
php-imap,php-pdo-dblib,php-pdo-firebird,php-tidy,php-oci8andphp-litespeedare not available. Remove them before you rundnf module switch-to php:nes-7.4. - RHEL 10:
php-dbahas nodb4orgdbmhandler. Move data kept in Berkeley DB or GDBM files to another handler (lmdb,tcadb,cdb,flatfileorinifile) before you switch. - RHEL 10:
php-enchantuses Enchant 2, which keeps its user configuration in~/.config/enchant. - RHEL 10:
php-pspellneedsaspellfrom CodeReady Linux Builder (crbon AlmaLinux and Rocky Linux).
7.4.1 (NES) - October 23, 2026
Packages: https://registry.nes.herodevs.com/bin/nes/php/v7.4.33-nes-7.4.1/ (see Installation)
Based on PHP 7.4.33.
This release patches the following CVEs:
- CVE-2022-4900 A flaw in PHP's built-in web server (
php -S) can cause a heap buffer overflow whenPHP_CLI_SERVER_WORKERSis set to a very large value. - (Medium) - CVE-2022-31631 A flaw in PHP's PDO SQLite driver can make
PDO::quote()return an unquoted or truncated string for inputs of 2 GiB or more, which can lead to SQL injection. - (Critical) - CVE-2023-0567 A flaw in PHP's
crypt()andpassword_verify()can accept malformed Blowfish ($2y$) hashes, so any password matches such a hash. - (High) - CVE-2023-0568 A flaw in PHP's path resolution can write one byte past a stack buffer when a resolved path is exactly one byte shorter than the maximum path length. - (High)
- CVE-2023-0662 A flaw in PHP's multipart/form-data parsing lets a single request with very many parts consume excessive CPU and fill the logs, causing a denial of service. The new
max_multipart_body_partssetting limits the number of parts. - (High) - CVE-2023-3247 A flaw in PHP's SOAP client HTTP Digest authentication can send uninitialised stack memory to the server and uses a weak client nonce. - (Low)
- CVE-2023-3823 A flaw in PHP's XML extensions can let another libxml2 user in the same process enable external entity loading, exposing PHP to XML external entity (XXE) attacks. - (High)
- CVE-2023-3824 A flaw in PHP's phar extension can cause a stack buffer overflow when reading a directory of a crafted phar archive. - (Critical)
- CVE-2024-1874 A flaw in PHP's
proc_open()on Windows can let an attacker-controlled argument run arbitrary commands through cmd.exe. - (Critical) - CVE-2024-2756 An incomplete fix for CVE-2022-31629 lets crafted cookie names be turned into
__Host-or__Secure-cookies, which can let a network or same-site attacker set cookies the application treats as secure. - (Medium) - CVE-2024-3096 A flaw in PHP's
password_hash()hashes a bcrypt password that starts with a NUL byte as the empty string, sopassword_verify()accepts an empty password for it. - (Medium) - CVE-2024-4577 A flaw in PHP's CGI binary on Windows with some code pages can turn query string bytes into command-line options, allowing remote code execution. - (Critical)
- CVE-2024-5458 A flaw in PHP's
FILTER_VALIDATE_URLfilter can accept URLs with invalid user information when the host is an IPv6 address. - (Medium) - CVE-2024-5585 An incomplete fix for CVE-2024-1874 lets
proc_open()on Windows run a program name with trailing spaces or dots through cmd.exe without escaping. - (High) - CVE-2024-8925 A flaw in PHP's multipart/form-data parsing can mishandle long boundaries, letting an attacker who controls part of a request body hide or merge form fields. - (Low)
- CVE-2024-8926 An incomplete fix for CVE-2024-4577 lets PHP's CGI binary on Windows with some code page configurations receive command-line options from the query string. - (High)
- CVE-2024-8927 A flaw in PHP's CGI binary lets a client set
HTTP_REDIRECT_STATUSwith a request header and bypasscgi.force_redirect, which in some configurations allows arbitrary file inclusion. - (High) - CVE-2024-8929 A flaw in PHP's MySQL native driver lets a hostile MySQL server make the client read past its buffers and return heap memory, possibly other queries' data. - (Medium)
- CVE-2024-8932 A flaw in PHP's
ldap_escape()on 32-bit systems can write past its buffer for very long inputs. - (Critical) - CVE-2024-9026 A flaw in PHP-FPM worker output logging lets a script inject or remove a few characters of the next log message when
catch_workers_outputis on. - (Low) - CVE-2024-11233 A flaw in PHP's
convert.quoted-printable-decodestream filter can read one byte past its input buffer, which can crash the process or disclose memory. - (Medium) - CVE-2024-11234 A flaw in PHP's HTTP stream wrapper can let user input add headers or whole requests when a request goes through an HTTP proxy with
request_fulluri. - (Medium) - CVE-2024-11236 A flaw in PHP's PDO dblib and Firebird drivers on 32-bit systems can make
PDO::quote()write past its buffer for very long strings. - (Critical) - CVE-2025-1217 A flaw in PHP's HTTP stream wrapper mishandles folded response headers, so an application can act on the wrong header value, such as the wrong
Content-Type. - (Medium) - CVE-2025-1218 A flaw in PHP's MySQL native driver lets a malicious MySQL server make the client read past the end of a packet. - (Low)
- CVE-2025-1219 A flaw in PHP's libxml stream handling can decode a document loaded over HTTP with the wrong character set when the URL redirects. - (Medium)
- CVE-2025-1220 A flaw in PHP's
fsockopen()and socket stream functions ignores everything after a NUL byte in a host name, which can bypass allow-lists and server-side request forgery checks. - (Low) - CVE-2025-1734 A flaw in PHP's HTTP stream wrapper accepts invalid response header lines, which can make applications accept invalid headers. - (Medium)
- CVE-2025-1735 A flaw in PHP's PostgreSQL extensions ignores escaping errors, so malformed escaped strings can reach queries. - (Medium)
- CVE-2025-1736 A flaw in PHP's HTTP stream wrapper can drop the Basic authentication header or other standard headers when user-supplied headers are separated by a bare line feed. - (Medium)
- CVE-2025-1861 A flaw in PHP's HTTP stream wrapper truncates long redirect locations, so it can follow a different URL than the server sent. - (Medium)
- CVE-2025-6491 A flaw in PHP's SOAP extension can crash the process with a NULL pointer dereference for a
SoapVarwhose qualified name has a namespace prefix over 2 GB. - (Medium) - CVE-2025-14178 A flaw in PHP's
array_merge()can overflow a heap buffer when the merged arrays hold 2^32 elements or more, which can cause memory corruption. - (Medium) - CVE-2025-14181 A flaw in PHP's SOAP client lets a malicious SOAP server sending chunked data overflow the client's response buffer. - (Medium)
- CVE-2026-6103 A flaw in PHP's phar extension can misparse a crafted tar archive, causing out-of-bounds reads. - (Medium)
- CVE-2026-6722 A flaw in PHP's SOAP decoder can cause a use-after-free for an
apache:Mapwith duplicate keys, which can lead to memory corruption. - (Critical) - CVE-2026-6735 A flaw in the PHP-FPM status page prints request URIs unescaped, allowing stored cross-site scripting against whoever views the full status page. - (High)
- CVE-2026-7258 A flaw in many PHP functions,
urldecode()among them, passes negative values to C character classification functions, which can cause out-of-bounds reads on some C libraries. - (Medium) - CVE-2026-7260 A flaw in PHP's phar extension follows tar symlinks without a limit, so an archive with a symlink cycle can crash the process. - (Medium)
- CVE-2026-7261 A flaw in PHP's SOAP server with session persistence can cause a use-after-free when a header handler returns or throws a
SoapFault. - (Medium) - CVE-2026-7262 A flaw in PHP's SOAP decoder can crash the process with a NULL pointer dereference for an
apache:Mapitem without a value. - (Low) - CVE-2026-7568 A flaw in PHP's
metaphone()can read before its buffer for strings of 2 GiB or more. - (Medium) - CVE-2026-14355 A flaw in PHP's
openssl_encrypt()can overflow a heap buffer by up to 8 bytes with AES key wrap with padding. - (Medium) - CVE-2026-17543 A flaw in PHP's
pg_convert()and thepg_insert(),pg_update(),pg_select()andpg_delete()helpers can quote values incorrectly whenstandard_conforming_stringsis on, which can lead to SQL injection. - (High) - CVE-2026-17545 A flaw in PHP on Windows lets a file name such as
CONorNULopen a device instead of a file, which can cause a denial of service. - (Medium) - CVE-2026-91765 A flaw in PHP's SOAP extension recurses without a limit on deeply nested XML, so an unauthenticated request can crash the process. - (High)
- CVE-2026-91766 A flaw in PHP's HTTP stream wrapper sends
Authorization,CookieandProxy-Authorizationheaders to any host a redirect names, leaking credentials. - (Medium) - CVE-2026-91767 A flaw in PHP's OpenSSL extension can read far past the peer name when matching a crafted wildcard certificate name. - (Medium)
- CVE-2026-91768 A flaw in PHP's FastCGI client check compares only part of an IPv6 address, so other hosts in the same /96 prefix can send FastCGI requests to an allowed pool. - (Medium)
- CVE-2026-91769 A flaw in PHP's OpenSSL extension falls back to a certificate's Common Name when no subjectAltName matches, so a certificate issued for another host can be accepted. - (Medium)
- CVE-2026-92842 A flaw in PHP's
convert.*stream filters can put heap memory into the filter output when theline-break-charsoption contains a NUL byte. - (Medium) - CVE-2026-93682 A flaw in PHP's HTTP stream wrapper reads one byte past an empty redirect location, which can change the redirect target. - (Medium)
- CVE-2026-109618 A flaw in PHP's out-of-memory handling can leave request memory half-initialised and corrupt the heap, which is rated as remote code execution. A script that runs out of
memory_limitnow ends its process. - (Critical) - CVE-2026-109619 A flaw in PHP's request cleanup can leave global state pointing at freed memory, so a later request in the same process can read it. - (Critical)
- GHSA-4w77-75f9-2c8w A flaw in PHP's built-in web server can cause a heap use-after-free for a request without a
Content-Typeheader. - (Low) - GHSA-ch8v-r6jh-4vvr A flaw in PHP's
FILTER_SANITIZE_ENCODEDfilter leaves part of its table uninitialised, so whether byte 0xFF is encoded depends on stack contents. - (Low) - GHSA-wg4p-4hqh-c3g9 A flaw in PHP's
xml_parse_into_struct()can read past the end of a tag name whenXML_OPTION_SKIP_TAGSTARTis larger than the name. - (Low) - GHSA-www2-q4fc-65wf A flaw in PHP's DNS and network lookup functions ignores everything after a NUL byte in a name, which can bypass checks on the name. - (Low)
- CVE-2026-9672 A flaw in PHP's bundled GD library can read uninitialised stack memory into an image when decoding a crafted GIF, disclosing information.
- CVE-2021-38115 A flaw in PHP's bundled GD library can read uninitialised memory when loading a truncated TGA image, which can cause a denial of service.
- CVE-2021-40812 A flaw in PHP's bundled GD library ignores failed writes in the BMP and WebP writers, which can lead to an out-of-bounds read. - (Medium)
- CVE-2022-1586 A flaw in PHP's bundled PCRE2 library can cause an out-of-bounds read in JIT-compiled caseless matching of Unicode property classes.
- CVE-2022-1587 A flaw in PHP's bundled PCRE2 library can cause an out-of-bounds read in JIT-compiled recursive patterns.
- CVE-2026-89156 A flaw in PHP's bundled PCRE2 library can read before a UTF subject when matching with
\X. - (Low) - CVE-2026-103111 A flaw in PHP's bundled PCRE2 library can write outside the JIT stack for patterns with very many capturing groups and recursion. - (High)
- GHSA-43gg-c3xx-7w7g A flaw in PHP's bundled PCRE2 library on ARM64 can read past the end of the subject in JIT-compiled matching, which can cause a denial of service. - (Low)
- GHSA-m3wq-j48p-jxwh A flaw in the libzip library of the RHEL 8 packages lets a crafted zip archive with colliding entry names slow down opening it. - (Low)
- CVE-2024-2408 The Marvin attack: RSA decryption with PKCS1 v1.5 padding in PHP's
openssl_private_decrypt()can leak timing information that lets an attacker decrypt ciphertexts. NES for PHP 7 relies on the system OpenSSL's implicit rejection where the platform provides it; Debian 12's OpenSSL does not. - (Medium)
Upgrade notes
php -vandPHP_VERSIONreport7.4.33-nes, soversion_compare(PHP_VERSION, '7.4.33', '>=')is false.PHP_VERSION_IDstays 70433, and extensions built for PHP 7.4 load as before.- A script that runs out of
memory_limitnow ends its process: the fatal error goes to stderr (and toerror_logwhenlog_errorsis on), and no shutdown function runs. php-fpm starts a new worker in its place. Raisememory_limitwhere a script needs more. This is the mitigation of CVE-2026-109618 and CVE-2026-109619. - Session upload progress is disabled:
session.upload_progress.enabledhas no effect. - The new
max_multipart_body_partssetting (the fix of CVE-2023-0662) limits the parts of a multipart/form-data request body. Its default, -1, meansmax_input_varsplusmax_file_uploads; raise it for forms with more fields and files.