OESA-2026-4383 (CVE-2025-1218)

Vulnerability from osv_openeuler – Published: 2026-10-16 12:00 – Updated: 2026-10-16 12:00 – Source website
VLAI
Summary
php security update
Details

PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. The php package contains the module (often referred to as mod_php) which adds support for the PHP language to Apache HTTP Server.

Security Fix(es):

The mysqlnd wire protocol parser reads fields out of server packets before checking that the packet still holds enough bytes for them. A malicious or compromised MySQL server can send a truncated packet and make the client read past the end of the packet buffer, which is undefined behaviour and can crash the process.(CVE-2025-1218)

The SOAP HTTP client guards its response buffer growth with a check that relies on signed integer overflow, which is undefined behaviour and is not guaranteed to trigger. When the check is optimised away, a malicious SOAP server can make the client allocate a buffer far smaller than the data it then writes into it, producing a heap buffer overflow.(CVE-2025-14181)

phar_tar_number() parses the octal size field of a TAR header into a uint32_t with no overflow check. The field is 11 octal digits wide and holds values up to 0x1FFFFFFFF, so a size above 0xFFFFFFFF silently wraps. The parser then skips the wrong number of data blocks and interprets attacker-controlled file content as the next TAR header, which lets a crafted archive inject entries that PharData reports and extracts as if they were genuine.(CVE-2026-6103)

cleanup_xml_node() in the SOAP XML parser recurses once per XML nesting level with no depth limit. An unauthenticated attacker can post a SOAP request containing tens of thousands of nested elements to any SoapServer endpoint, exhaust the stack and crash the process. The same unbounded recursion exists in the SOAP value decoder and in the WSDL node search helper.(CVE-2026-91765)

When the http:// stream wrapper follows a redirect it forwards the user-supplied Authorization, Cookie and Proxy-Authorization headers unchanged, even when the redirect target is a different host, a different port, or a downgrade from HTTPS to HTTP. A server that can steer a redirect therefore receives credentials that were only meant for the original origin. This is the same class of issue that libcurl fixed in 7.58.0 ( CVE-2018-1000007 https://github.com/advisories/GHSA-g7x2-hrfp-pv5f ).(CVE-2026-91766)

php_openssl_matches_wildcard_name() in ext/openssl/xp_ssl.c underflows the length argument passed to memchr() when a TLS server certificate presents a wildcard name whose literal characters are together longer than the hostname being verified. A malicious server presenting such a certificate makes the PHP client read up to SIZE_MAX bytes past the end of a heap allocation. The path is reachable from any default client stream, because verify_peer_name is enabled by default.(CVE-2026-91767)

The IPv6 branch of the FastCGI client access check compares only the first 12 bytes of a 16-byte IPv6 address, so listen.allowed_clients matches on a /96 prefix instead of the exact address. An attacker who can source an address sharing the first 96 bits with an allowed one passes the check and reaches the FastCGI endpoint.(CVE-2026-91768)

PHP's OpenSSL stream peer verification checks the certificate's subjectAltName entries first and, whenever no entry matches, falls back to the Common Name. RFC 6125 requires the CN to be ignored once the certificate presents any service identity, so a certificate carrying a non-matching DNS SAN was still accepted when its CN matched the requested peer_name. A certificate trusted by the client for one name can therefore be used to impersonate another.(CVE-2026-91769)

The convert.base64-encode, convert.quoted-printable-encode and convert.quoted-printable-decode stream filters accept a line-break-chars option whose length is tracked separately from the string itself. The filter constructors duplicate the value with pestrdup(), which stops at the first NUL byte, while keeping the original length. When the filter later emits a line break it copies the recorded length out of the truncated allocation, reading past its end and placing adjacent heap bytes into the filter output.(CVE-2026-92842)

When the HTTP stream wrapper follows a redirect and the response carries a Location header with an empty value, the redirect code reads one byte past the end of the heap buffer holding the location. The value of that out-of-bounds byte decides which redirect target is built, so a malicious server controls whether the client is sent to the host root or to the current directory.(CVE-2026-93682)


{
  "affected": [
    {
      "ecosystem_specific": {
        "aarch64": [
          "php-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-bcmath-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-cli-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-common-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-dba-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-dbg-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-debuginfo-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-debugsource-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-devel-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-embedded-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-enchant-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-ffi-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-fpm-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-gd-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-gmp-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-intl-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-ldap-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-mbstring-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-mysqlnd-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-odbc-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-opcache-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-pdo-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-pgsql-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-process-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-snmp-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-soap-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-sodium-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-tidy-8.3.35-1.oe2403sp1.aarch64.rpm",
          "php-xml-8.3.35-1.oe2403sp1.aarch64.rpm"
        ],
        "noarch": [
          "php-help-8.3.35-1.oe2403sp1.noarch.rpm"
        ],
        "src": [
          "php-8.3.35-1.oe2403sp1.src.rpm"
        ],
        "x86_64": [
          "php-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-bcmath-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-cli-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-common-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-dba-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-dbg-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-debuginfo-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-debugsource-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-devel-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-embedded-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-enchant-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-ffi-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-fpm-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-gd-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-gmp-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-intl-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-ldap-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-mbstring-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-mysqlnd-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-odbc-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-opcache-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-pdo-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-pgsql-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-process-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-snmp-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-soap-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-sodium-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-tidy-8.3.35-1.oe2403sp1.x86_64.rpm",
          "php-xml-8.3.35-1.oe2403sp1.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:24.03-LTS-SP1",
        "name": "php",
        "purl": "pkg:rpm/openEuler/php\u0026distro=openEuler-24.03-LTS-SP1"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "8.3.35-1.oe2403sp1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "severity": "High"
  },
  "details": "PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. The php package contains the module (often referred to as mod_php) which adds support for the PHP language to Apache HTTP Server.\r\n\r\nSecurity Fix(es):\n\nThe mysqlnd wire protocol parser reads fields out of server packets before checking that the packet still holds enough bytes for them. A malicious or compromised MySQL server can send a truncated packet and make the client read past the end of the packet buffer, which is undefined behaviour and can crash the process.(CVE-2025-1218)\n\nThe SOAP HTTP client guards its response buffer growth with a check that relies on signed integer overflow, which is undefined behaviour and is not guaranteed to trigger. When the check is optimised away, a malicious SOAP server can make the client allocate a buffer far smaller than the data it then writes into it, producing a heap buffer overflow.(CVE-2025-14181)\n\nphar_tar_number() parses the octal size field of a TAR header into a uint32_t with no overflow check. The field is 11 octal digits wide and holds values up to 0x1FFFFFFFF, so a size above 0xFFFFFFFF silently wraps. The parser then skips the wrong number of data blocks and interprets attacker-controlled file content as the next TAR header, which lets a crafted archive inject entries that PharData reports and extracts as if they were genuine.(CVE-2026-6103)\n\ncleanup_xml_node() in the SOAP XML parser recurses once per XML nesting level with no depth limit. An unauthenticated attacker can post a SOAP request containing tens of thousands of nested elements to any SoapServer endpoint, exhaust the stack and crash the process. The same unbounded recursion exists in the SOAP value decoder and in the WSDL node search helper.(CVE-2026-91765)\n\nWhen the http:// stream wrapper follows a redirect it forwards the user-supplied Authorization, Cookie and Proxy-Authorization headers unchanged, even when the redirect target is a different host, a different port, or a downgrade from HTTPS to HTTP. A server that can steer a redirect therefore receives credentials that were only meant for the original origin. This is the same class of issue that libcurl fixed in 7.58.0 ( CVE-2018-1000007 https://github.com/advisories/GHSA-g7x2-hrfp-pv5f ).(CVE-2026-91766)\n\nphp_openssl_matches_wildcard_name() in ext/openssl/xp_ssl.c underflows the length argument passed to memchr() when a TLS server certificate presents a wildcard name whose literal characters are together longer than the hostname being verified. A malicious server presenting such a certificate makes the PHP client read up to SIZE_MAX bytes past the end of a heap allocation. The path is reachable from any default client stream, because verify_peer_name is enabled by default.(CVE-2026-91767)\n\nThe IPv6 branch of the FastCGI client access check compares only the first 12 bytes of a 16-byte IPv6 address, so listen.allowed_clients matches on a /96 prefix instead of the exact address. An attacker who can source an address sharing the first 96 bits with an allowed one passes the check and reaches the FastCGI endpoint.(CVE-2026-91768)\n\nPHP\u0026apos;s OpenSSL stream peer verification checks the certificate\u0026apos;s subjectAltName entries first and, whenever no entry matches, falls back to the Common Name. RFC 6125 requires the CN to be ignored once the certificate presents any service identity, so a certificate carrying a non-matching DNS SAN was still accepted when its CN matched the requested peer_name. A certificate trusted by the client for one name can therefore be used to impersonate another.(CVE-2026-91769)\n\nThe convert.base64-encode, convert.quoted-printable-encode and convert.quoted-printable-decode stream filters accept a line-break-chars option whose length is tracked separately from the string itself. The filter constructors duplicate the value with pestrdup(), which stops at the first NUL byte, while keeping the original length. When the filter later emits a line break it copies the recorded length out of the truncated allocation, reading past its end and placing adjacent heap bytes into the filter output.(CVE-2026-92842)\n\nWhen the HTTP stream wrapper follows a redirect and the response carries a Location header with an empty value, the redirect code reads one byte past the end of the heap buffer holding the location. The value of that out-of-bounds byte decides which redirect target is built, so a malicious server controls whether the client is sent to the host root or to the current directory.(CVE-2026-93682)",
  "id": "OESA-2026-4383",
  "modified": "2026-10-16T12:00:00Z",
  "published": "2026-10-16T12:00:00Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-4383"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-1218"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-14181"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-6103"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91765"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91766"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91767"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91768"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91769"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-92842"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-93682"
    }
  ],
  "schema_version": "1.7.2",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
      "type": "CVSS_V3"
    }
  ],
  "summary": "php security update",
  "upstream": [
    "CVE-2025-1218",
    "CVE-2025-14181",
    "CVE-2026-6103",
    "CVE-2026-91765",
    "CVE-2026-91766",
    "CVE-2026-91767",
    "CVE-2026-91768",
    "CVE-2026-91769",
    "CVE-2026-92842",
    "CVE-2026-93682"
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.