← Back to CVE Explorer

CVE-2026-43929

Full vulnerability record from the local CVENow database.

Description

ssrfcheck is a library that checks if a string contains a potential SSRF attack. In 1.3.0 and earlier, ssrfcheck fails to block Server-Side Request Forgery attacks when the target private IP address is encoded as an IPv4-mapped IPv6 address (e.g. http://[::ffff:127.0.0.1]/). The WHATWG URL parser built into Node.js silently normalizes the IPv4 notation inside the brackets to compressed hex form ([::ffff:7f00:1]) before the library's private-IP regex ever runs. The regex was written to match dot-notation only and therefore never matches any real input — all seven IANA private IPv4 ranges, including the AWS/GCP/Azure metadata address 169.254.169.254, are bypassed. Any application using isSSRFSafeURL() to guard HTTP requests made with user-supplied URLs is fully exposed to SSRF.

Severity
HIGH
CVSS score
8.2 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-05-12 18:17:28.970000
Last modified
2026-10-26 18:10:00.173000
View original CVE JSON
{
  "id": "CVE-2026-43929",
  "sourceIdentifier": "[email protected]",
  "published": "2026-05-12T18:17:28.970",
  "lastModified": "2026-10-26T18:10:00.173",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "ssrfcheck is a library that checks if a string contains a potential SSRF attack. In 1.3.0 and earlier, ssrfcheck fails to block Server-Side Request Forgery attacks when the target private IP address is encoded as an IPv4-mapped IPv6 address (e.g. http://[::ffff:127.0.0.1]/). The WHATWG URL parser built into Node.js silently normalizes the IPv4 notation inside the brackets to compressed hex form ([::ffff:7f00:1]) before the library's private-IP regex ever runs. The regex was written to match dot-notation only and therefore never matches any real input — all seven IANA private IPv4 ranges, including the AWS/GCP/Azure metadata address 169.254.169.254, are bypassed. Any application using isSSRFSafeURL() to guard HTTP requests made with user-supplied URLs is fully exposed to SSRF."
    },
    {
      "lang": "es",
      "value": "ssrfcheck es una biblioteca que comprueba si una cadena contiene un ataque potencial de SSRF. En la versión 1.3.0 y anteriores, ssrfcheck no logra bloquear ataques de falsificación de petición del lado del servidor cuando la dirección IP privada de destino está codificada como una dirección IPv6 mapeada a IPv4 (por ejemplo, http://[::ffff:127.0.0.1]/). El analizador de URL WHATWG integrado en Node.js normaliza silenciosamente la notación IPv4 dentro de los corchetes a la forma hexadecimal comprimida ([::ffff:7f00:1]) antes de que se ejecute la expresión regular de IP privada de la biblioteca. La expresión regular fue escrita para coincidir solo con la notación de puntos y, por lo tanto, nunca coincide con ninguna entrada real - los siete rangos de IPv4 privados de la IANA, incluida la dirección de metadatos de AWS/GCP/Azure 169.254.169.254, son eludidos. Cualquier aplicación que utilice isSSRFSafeURL() para proteger peticiones HTTP realizadas con URL proporcionadas por el usuario está completamente expuesta a SSRF."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "felippe-regazio",
          "product": "ssrfcheck",
          "versions": [
            {
              "version": "<= 1.3.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N",
          "baseScore": 8.2,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "LOW",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 4.2
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-05-13T14:36:54.063869Z",
          "id": "CVE-2026-43929",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-184"
        },
        {
          "lang": "en",
          "value": "CWE-918"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/felippe-regazio/ssrfcheck/security/advisories/GHSA-j4rj-2jr5-m439",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/felippe-regazio/ssrfcheck/security/advisories/GHSA-j4rj-2jr5-m439",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}