Skip to content
Heist/ feed
Back to feed
Medium

guzzlehttp/psr7: Host Confusion via Weak URI Host Validation

Type: advisorySources: OSV

guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Prior to 2.12.3, Uri::assertValidHost() does not reject URI host components containing authority delimiters, embedded ports, or malformed IPv6 brackets, allowing Uri::getHost() to disagree with the URI authority used for security or routing decisions. This issue is fixed in version 2.12.3.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59882
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 15:06 UTC · Revision 1

Source evidence

guzzlehttp/psr7: Host Confusion via Weak URI Host Validation

core-osv · Original source

Published 8 Jul 2026, 15:50 UTC

guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Prior to 2.12.3, Uri::assertValidHost() does not reject URI host components containing authority delimiters, embedded ports, or malformed IPv6 brackets, allowing Uri::getHost() to disagree with the URI authority used for security or routing decisions. This issue is fixed in version 2.12.3.

osv:CVE-2026-59882
Complete source record
{
  "id": "713315a45de0f75cfc2b2315efd36de940bdfe0552e98f7c52d2d97322633c95",
  "url": "https://osv.dev/vulnerability/CVE-2026-59882",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "guzzlehttp/psr7: Host Confusion via Weak URI Host Validation",
    "summary": "guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Prior to 2.12.3, Uri::assertValidHost() does not reject URI host components containing authority delimiters, embedded ports, or malformed IPv6 brackets, allowing Uri::getHost() to disagree with the URI authority used for security or routing decisions. This issue is fixed in version 2.12.3.",
    "evidence": "osv:CVE-2026-59882",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-59882",
      "aliases": [
        "CVE-2026-59882",
        "GHSA-c2w2-prh8-qm98"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/guzzle/psr7",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
                },
                {
                  "fixed": "ddd64f17d4cc1f7e5ffe6fd2c989ec7221712580"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:guzzlephp:psr-7:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.12.3"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ddd64f17d4cc1f7e5ffe6fd2c989ec7221712580"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.12.3"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2.12.2",
            "2.12.1",
            "2.12.0",
            "2.11.1",
            "2.11.0",
            "2.10.1",
            "2.10.0",
            "2.9.0",
            "2.8.1",
            "2.8.0",
            "2.7.1",
            "2.7.0",
            "2.6.3",
            "2.6.2",
            "2.6.1",
            "2.6.0",
            "2.5.0",
            "2.4.4",
            "2.4.3",
            "2.4.2",
            "2.4.1",
            "2.4.0",
            "2.3.0",
            "2.2.2",
            "2.2.1",
            "2.2.0",
            "2.1.0",
            "2.0.0",
            "2.0.0-rc1",
            "2.0.0-beta1",
            "1.6.0",
            "1.5.0",
            "1.5.2",
            "1.5.1",
            "1.4.2",
            "1.4.1",
            "1.4.0",
            "1.3.1",
            "1.3.0",
            "1.2.3",
            "1.2.2",
            "1.2.1",
            "1.2.0",
            "1.1.0",
            "1.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-59882.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:36.636481338Z",
      "provider": "osv",
      "references": [
        "https://github.com/guzzle/psr7/releases/tag/2.12.3",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59882.json",
        "https://github.com/guzzle/psr7/security/advisories/GHSA-c2w2-prh8-qm98",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-59882",
        "https://github.com/guzzle/psr7/commit/ddd64f17d4cc1f7e5ffe6fd2c989ec7221712580",
        "https://github.com/guzzle/psr7/pull/811"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-436"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59882.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59882",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 503979,
  "published_at": "2026-07-08T15:50:03.077+00:00"
}