CVE-2026-64941 (GCVE-0-2026-64941)

Vulnerability from cvelistv5 – Published: 2026-08-10 11:05 – Updated: 2026-08-10 13:00
VLAI
Title
Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR
Summary
URL Redirection to Untrusted Site ('Open Redirect') vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim's browser to an origin of the attacker's choosing via a :to value containing ASCII tab, LF or CR. redirect/2 validates :to through the private validate_local_url!/2 in lib/phoenix_live_view.ex, which is intended to guarantee the target is a path within the application. It rejects a leading // and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as /<TAB>/example.com passes validation as a path and is then resolved as the scheme-relative URL //example.com. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. push_patch/2 is also affected before 0.7.0, which is when that expansion was added. This issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9.
SSVC
Exploitation: poc Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-08-10 13:00 UTC
CWE
  • CWE-601 - URL Redirection to Untrusted Site ('Open Redirect')
Assigner
EEF CNA under the mitre root
CNA scorecard A 97/100 over 357 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
phoenixframework phoenix_live_view Affected: 0.5.0 , < 1.0.19 (semver)
Affected: 1.1.0-rc.0 , < 1.1.33 (semver)
Affected: 1.2.0-rc.0 , < 1.2.9 (semver)
    cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*
Create a notification for this product.
phoenixframework phoenix_live_view Affected: b20dba3f65a380b2e4868dae03397f13d2daa070 , < * (git)
    cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-64941",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-10T13:00:10.932600Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-08-10T13:00:33.543Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://repo.hex.pm",
          "cpes": [
            "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.Phoenix.LiveView\u0027"
          ],
          "packageName": "phoenix_live_view",
          "packageURL": "pkg:hex/phoenix_live_view",
          "product": "phoenix_live_view",
          "programFiles": [
            "lib/phoenix_live_view.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
            },
            {
              "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
            }
          ],
          "repo": "https://github.com/phoenixframework/phoenix_live_view",
          "vendor": "phoenixframework",
          "versions": [
            {
              "lessThan": "1.0.19",
              "status": "affected",
              "version": "0.5.0",
              "versionType": "semver"
            },
            {
              "lessThan": "1.1.33",
              "status": "affected",
              "version": "1.1.0-rc.0",
              "versionType": "semver"
            },
            {
              "lessThan": "1.2.9",
              "status": "affected",
              "version": "1.2.0-rc.0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.Phoenix.LiveView\u0027"
          ],
          "packageName": "phoenixframework/phoenix_live_view",
          "packageURL": "pkg:github/phoenixframework/phoenix_live_view",
          "product": "phoenix_live_view",
          "programFiles": [
            "lib/phoenix_live_view.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
            },
            {
              "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
            }
          ],
          "repo": "https://github.com/phoenixframework/phoenix_live_view",
          "vendor": "phoenixframework",
          "versions": [
            {
              "changes": [
                {
                  "at": "0b8c733133466912f81adecaea72b6712370242e",
                  "status": "unaffected"
                },
                {
                  "at": "1c164f83df0bb922dfff9c60d125da5b0cfd6619",
                  "status": "unaffected"
                },
                {
                  "at": "2068b304d71907064b159b6bc60c5ad85a876ecf",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "b20dba3f65a380b2e4868dae03397f13d2daa070",
              "versionType": "git"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eThe application must pass an externally influenced value as \u003ccode\u003e:to\u003c/code\u003e to \u003ccode\u003eredirect/2\u003c/code\u003e, or to \u003ccode\u003epush_patch/2\u003c/code\u003e before 0.7.0, for example a \u003ccode\u003ereturn_to\u003c/code\u003e parameter carried through sign-in or a navigation target taken from a \u003ccode\u003ehandle_event/3\u003c/code\u003e payload.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "The application must pass an externally influenced value as `:to` to `redirect/2`, or to `push_patch/2` before 0.7.0, for example a `return_to` parameter carried through sign-in or a navigation target taken from a `handle_event/3` payload."
            }
          ],
          "value": "The application must pass an externally influenced value as :to to redirect/2, or to push_patch/2 before 0.7.0, for example a return_to parameter carried through sign-in or a navigation target taken from a handle_event/3 payload."
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "1.0.19",
                  "versionStartIncluding": "0.5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "1.1.33",
                  "versionStartIncluding": "1.1.0-rc.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "1.2.9",
                  "versionStartIncluding": "1.2.0-rc.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "AND"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Eurico Nicacio"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Steffen Deusch"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "Jos\u00e9 Valim"
        },
        {
          "lang": "en",
          "type": "analyst",
          "value": "Jonatan M\u00e4nnchen / EEF"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eURL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a \u003ccode\u003e:to\u003c/code\u003e value containing ASCII tab, LF or CR.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eredirect/2\u003c/code\u003e validates \u003ccode\u003e:to\u003c/code\u003e through the private \u003ccode\u003evalidate_local_url!/2\u003c/code\u003e in \u003ccode\u003elib/phoenix_live_view.ex\u003c/code\u003e, which is intended to guarantee the target is a path within the application. It rejects a leading \u003ccode\u003e//\u003c/code\u003e and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as \u003ccode\u003e/\u0026lt;TAB\u0026gt;/example.com\u003c/code\u003e passes validation as a path and is then resolved as the scheme-relative URL \u003ccode\u003e//example.com\u003c/code\u003e. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. \u003ccode\u003epush_patch/2\u003c/code\u003e is also affected before 0.7.0, which is when that expansion was added.\u003c/p\u003e\n\u003cp\u003eThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "URL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a `:to` value containing ASCII tab, LF or CR.\n\n`redirect/2` validates `:to` through the private `validate_local_url!/2` in `lib/phoenix_live_view.ex`, which is intended to guarantee the target is a path within the application. It rejects a leading `//` and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as `/\u003cTAB\u003e/example.com` passes validation as a path and is then resolved as the scheme-relative URL `//example.com`. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. `push_patch/2` is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9."
            }
          ],
          "value": "URL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a :to value containing ASCII tab, LF or CR.\n\nredirect/2 validates :to through the private validate_local_url!/2 in lib/phoenix_live_view.ex, which is intended to guarantee the target is a path within the application. It rejects a leading // and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as /\u003cTAB\u003e/example.com passes validation as a path and is then resolved as the scheme-relative URL //example.com. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. push_patch/2 is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-3",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-3 Using Leading \u0027Ghost\u0027 Character Sequences to Bypass Input Filters"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 2.1,
            "baseSeverity": "LOW",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "LOW",
            "subIntegrityImpact": "LOW",
            "userInteraction": "ACTIVE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "NONE",
            "vulnIntegrityImpact": "NONE",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-601",
              "description": "CWE-601 URL Redirection to Untrusted Site (\u0027Open Redirect\u0027)",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-10T11:05:14.571Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "tags": [
            "vendor-advisory",
            "related"
          ],
          "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-64941.html"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-64941"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR",
      "workarounds": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eReject any untrusted value containing ASCII tab, LF or CR before passing it as \u003ccode\u003e:to\u003c/code\u003e to \u003ccode\u003eredirect/2\u003c/code\u003e, or to \u003ccode\u003epush_patch/2\u003c/code\u003e before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Reject any untrusted value containing ASCII tab, LF or CR before passing it as `:to` to `redirect/2`, or to `push_patch/2` before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value."
            }
          ],
          "value": "Reject any untrusted value containing ASCII tab, LF or CR before passing it as :to to redirect/2, or to push_patch/2 before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value."
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-64941",
    "datePublished": "2026-08-10T11:05:14.571Z",
    "dateReserved": "2026-08-09T16:30:01.572Z",
    "dateUpdated": "2026-08-10T13:00:33.543Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-64941",
      "date": "2026-11-14",
      "epss": "0.00599",
      "percentile": "0.49266"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://repo.hex.pm",
                "cpes": [
                  "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.Phoenix.LiveView\u0027"
                ],
                "packageName": "phoenix_live_view",
                "packageURL": "pkg:hex/phoenix_live_view",
                "product": "phoenix_live_view",
                "programFiles": [
                  "lib/phoenix_live_view.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
                  },
                  {
                    "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
                  }
                ],
                "repo": "https://github.com/phoenixframework/phoenix_live_view",
                "vendor": "phoenixframework",
                "versions": [
                  {
                    "lessThan": "1.0.19",
                    "status": "affected",
                    "version": "0.5.0",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "1.1.33",
                    "status": "affected",
                    "version": "1.1.0-rc.0",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "1.2.9",
                    "status": "affected",
                    "version": "1.2.0-rc.0",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "collectionURL": "https://github.com",
                "cpes": [
                  "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.Phoenix.LiveView\u0027"
                ],
                "packageName": "phoenixframework/phoenix_live_view",
                "packageURL": "pkg:github/phoenixframework/phoenix_live_view",
                "product": "phoenix_live_view",
                "programFiles": [
                  "lib/phoenix_live_view.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
                  },
                  {
                    "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
                  }
                ],
                "repo": "https://github.com/phoenixframework/phoenix_live_view",
                "vendor": "phoenixframework",
                "versions": [
                  {
                    "changes": [
                      {
                        "at": "0b8c733133466912f81adecaea72b6712370242e",
                        "status": "unaffected"
                      },
                      {
                        "at": "1c164f83df0bb922dfff9c60d125da5b0cfd6619",
                        "status": "unaffected"
                      },
                      {
                        "at": "2068b304d71907064b159b6bc60c5ad85a876ecf",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "b20dba3f65a380b2e4868dae03397f13d2daa070",
                    "versionType": "git"
                  }
                ]
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "URL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a :to value containing ASCII tab, LF or CR.\n\nredirect/2 validates :to through the private validate_local_url!/2 in lib/phoenix_live_view.ex, which is intended to guarantee the target is a path within the application. It rejects a leading // and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as /\u003cTAB\u003e/example.com passes validation as a path and is then resolved as the scheme-relative URL //example.com. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. push_patch/2 is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9."
          },
          {
            "lang": "es",
            "value": "Vulnerabilidad de redirecci\u00f3n de URL a sitio no confiable (\u2019redirecci\u00f3n abierta\u2019) en phoenixframework phoenix_live_view permite a un atacante enviar el navegador de una v\u00edctima a un origen elegido por el atacante a trav\u00e9s de un valor :to que contiene tabulador ASCII, LF o CR.\n\nredirect/2 valida :to a trav\u00e9s de la funci\u00f3n privada validate_local_url!/2 en lib/phoenix_live_view.ex, que est\u00e1 destinada a garantizar que el objetivo sea una ruta dentro de la aplicaci\u00f3n. Rechaza un // inicial y cualquier barra invertida, pero no el tabulador ASCII, LF o CR. Los navegadores eliminan esos tres caracteres antes de analizar una URL, por lo que un valor como /[TAB]/example.com pasa la validaci\u00f3n como una ruta y luego se resuelve como la URL relativa al esquema //example.com. Las funciones de navegaci\u00f3n en vivo comparten la protecci\u00f3n pero no se ven afectadas, porque el cliente expande su objetivo contra el origen actual. push_patch/2 tambi\u00e9n se ve afectado antes de 0.7.0, que es cuando se a\u00f1adi\u00f3 esa expansi\u00f3n.\n\nEste problema afecta a phoenix_live_view: desde 0.5.0 antes de 1.0.19, desde 1.1.0-rc.0 antes de 1.1.33, y desde 1.2.0-rc.0 antes de 1.2.9."
          }
        ],
        "id": "CVE-2026-64941",
        "lastModified": "2026-10-24T16:10:00.153",
        "metrics": {
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 2.1,
                "baseSeverity": "LOW",
                "confidentialityRequirement": "NOT_DEFINED",
                "exploitMaturity": "NOT_DEFINED",
                "integrityRequirement": "NOT_DEFINED",
                "modifiedAttackComplexity": "NOT_DEFINED",
                "modifiedAttackRequirements": "NOT_DEFINED",
                "modifiedAttackVector": "NOT_DEFINED",
                "modifiedPrivilegesRequired": "NOT_DEFINED",
                "modifiedSubAvailabilityImpact": "NOT_DEFINED",
                "modifiedSubConfidentialityImpact": "NOT_DEFINED",
                "modifiedSubIntegrityImpact": "NOT_DEFINED",
                "modifiedUserInteraction": "NOT_DEFINED",
                "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
                "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
                "modifiedVulnIntegrityImpact": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "LOW",
                "subIntegrityImpact": "LOW",
                "userInteraction": "ACTIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-64941",
                "options": [
                  {
                    "exploitation": "poc"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-10T13:00:10.932600Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-08-10T12:17:19.873",
        "references": [
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://cna.erlef.org/cves/CVE-2026-64941.html"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://osv.dev/vulnerability/EEF-CVE-2026-64941"
          },
          {
            "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
            "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
          }
        ],
        "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "vulnStatus": "Awaiting Analysis",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-601"
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-64941",
                    "options": [
                      {
                        "Exploitation": "poc"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-08-10T13:00:10.932600Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-08-10T13:00:29.061Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "references": [
              {
                "tags": [
                  "exploit"
                ],
                "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
              }
            ],
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://repo.hex.pm",
              "cpes": [
                "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.Phoenix.LiveView\u0027"
              ],
              "packageName": "phoenix_live_view",
              "packageURL": "pkg:hex/phoenix_live_view",
              "product": "phoenix_live_view",
              "programFiles": [
                "lib/phoenix_live_view.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
                },
                {
                  "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
                }
              ],
              "repo": "https://github.com/phoenixframework/phoenix_live_view",
              "vendor": "phoenixframework",
              "versions": [
                {
                  "lessThan": "1.0.19",
                  "status": "affected",
                  "version": "0.5.0",
                  "versionType": "semver"
                },
                {
                  "lessThan": "1.1.33",
                  "status": "affected",
                  "version": "1.1.0-rc.0",
                  "versionType": "semver"
                },
                {
                  "lessThan": "1.2.9",
                  "status": "affected",
                  "version": "1.2.0-rc.0",
                  "versionType": "semver"
                }
              ]
            },
            {
              "collectionURL": "https://github.com",
              "cpes": [
                "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.Phoenix.LiveView\u0027"
              ],
              "packageName": "phoenixframework/phoenix_live_view",
              "packageURL": "pkg:github/phoenixframework/phoenix_live_view",
              "product": "phoenix_live_view",
              "programFiles": [
                "lib/phoenix_live_view.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.Phoenix.LiveView\u0027:redirect/2"
                },
                {
                  "name": "\u0027Elixir.Phoenix.LiveView\u0027:push_patch/2"
                }
              ],
              "repo": "https://github.com/phoenixframework/phoenix_live_view",
              "vendor": "phoenixframework",
              "versions": [
                {
                  "changes": [
                    {
                      "at": "0b8c733133466912f81adecaea72b6712370242e",
                      "status": "unaffected"
                    },
                    {
                      "at": "1c164f83df0bb922dfff9c60d125da5b0cfd6619",
                      "status": "unaffected"
                    },
                    {
                      "at": "2068b304d71907064b159b6bc60c5ad85a876ecf",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "b20dba3f65a380b2e4868dae03397f13d2daa070",
                  "versionType": "git"
                }
              ]
            }
          ],
          "configurations": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe application must pass an externally influenced value as \u003ccode\u003e:to\u003c/code\u003e to \u003ccode\u003eredirect/2\u003c/code\u003e, or to \u003ccode\u003epush_patch/2\u003c/code\u003e before 0.7.0, for example a \u003ccode\u003ereturn_to\u003c/code\u003e parameter carried through sign-in or a navigation target taken from a \u003ccode\u003ehandle_event/3\u003c/code\u003e payload.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "The application must pass an externally influenced value as `:to` to `redirect/2`, or to `push_patch/2` before 0.7.0, for example a `return_to` parameter carried through sign-in or a navigation target taken from a `handle_event/3` payload."
                }
              ],
              "value": "The application must pass an externally influenced value as :to to redirect/2, or to push_patch/2 before 0.7.0, for example a return_to parameter carried through sign-in or a navigation target taken from a handle_event/3 payload."
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "1.0.19",
                      "versionStartIncluding": "0.5.0",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "1.1.33",
                      "versionStartIncluding": "1.1.0-rc.0",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "1.2.9",
                      "versionStartIncluding": "1.2.0-rc.0",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "AND"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Eurico Nicacio"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "Steffen Deusch"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "Jos\u00e9 Valim"
            },
            {
              "lang": "en",
              "type": "analyst",
              "value": "Jonatan M\u00e4nnchen / EEF"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eURL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a \u003ccode\u003e:to\u003c/code\u003e value containing ASCII tab, LF or CR.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eredirect/2\u003c/code\u003e validates \u003ccode\u003e:to\u003c/code\u003e through the private \u003ccode\u003evalidate_local_url!/2\u003c/code\u003e in \u003ccode\u003elib/phoenix_live_view.ex\u003c/code\u003e, which is intended to guarantee the target is a path within the application. It rejects a leading \u003ccode\u003e//\u003c/code\u003e and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as \u003ccode\u003e/\u0026lt;TAB\u0026gt;/example.com\u003c/code\u003e passes validation as a path and is then resolved as the scheme-relative URL \u003ccode\u003e//example.com\u003c/code\u003e. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. \u003ccode\u003epush_patch/2\u003c/code\u003e is also affected before 0.7.0, which is when that expansion was added.\u003c/p\u003e\n\u003cp\u003eThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "URL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a `:to` value containing ASCII tab, LF or CR.\n\n`redirect/2` validates `:to` through the private `validate_local_url!/2` in `lib/phoenix_live_view.ex`, which is intended to guarantee the target is a path within the application. It rejects a leading `//` and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as `/\u003cTAB\u003e/example.com` passes validation as a path and is then resolved as the scheme-relative URL `//example.com`. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. `push_patch/2` is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9."
                }
              ],
              "value": "URL Redirection to Untrusted Site (\u0027Open Redirect\u0027) vulnerability in phoenixframework phoenix_live_view allows an attacker to send a victim\u0027s browser to an origin of the attacker\u0027s choosing via a :to value containing ASCII tab, LF or CR.\n\nredirect/2 validates :to through the private validate_local_url!/2 in lib/phoenix_live_view.ex, which is intended to guarantee the target is a path within the application. It rejects a leading // and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as /\u003cTAB\u003e/example.com passes validation as a path and is then resolved as the scheme-relative URL //example.com. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. push_patch/2 is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix_live_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-3",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-3 Using Leading \u0027Ghost\u0027 Character Sequences to Bypass Input Filters"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "baseScore": 2.1,
                "baseSeverity": "LOW",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "LOW",
                "subIntegrityImpact": "LOW",
                "userInteraction": "ACTIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-601",
                  "description": "CWE-601 URL Redirection to Untrusted Site (\u0027Open Redirect\u0027)",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-10T11:05:14.571Z",
            "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "shortName": "EEF"
          },
          "references": [
            {
              "tags": [
                "vendor-advisory",
                "related"
              ],
              "url": "https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://cna.erlef.org/cves/CVE-2026-64941.html"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://osv.dev/vulnerability/EEF-CVE-2026-64941"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf"
            }
          ],
          "source": {
            "discovery": "EXTERNAL"
          },
          "title": "Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR",
          "workarounds": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eReject any untrusted value containing ASCII tab, LF or CR before passing it as \u003ccode\u003e:to\u003c/code\u003e to \u003ccode\u003eredirect/2\u003c/code\u003e, or to \u003ccode\u003epush_patch/2\u003c/code\u003e before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "Reject any untrusted value containing ASCII tab, LF or CR before passing it as `:to` to `redirect/2`, or to `push_patch/2` before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value."
                }
              ],
              "value": "Reject any untrusted value containing ASCII tab, LF or CR before passing it as :to to redirect/2, or to push_patch/2 before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value."
            }
          ]
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "assignerShortName": "EEF",
        "cveId": "CVE-2026-64941",
        "datePublished": "2026-08-10T11:05:14.571Z",
        "dateReserved": "2026-08-09T16:30:01.572Z",
        "dateUpdated": "2026-08-10T13:00:33.543Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



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
How durations are calculated

Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.

Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.

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.