CVE-2026-45307
Full vulnerability record from the local CVENow database.
Description
Speakr is a personal, self-hosted web application designed for transcribing audio recordings. Prior to 0.8.20-alpha, the is_safe_url() helper used to validate post-login redirect targets applied urljoin(request.host_url, target) before parsing, while the controller passed the raw target to redirect(). A scheme-relative input such as ////evil.com resolved to a same-host URL during validation but was emitted verbatim in the Location header, where the browser interpreted it as a network-path-relative redirect to an attacker-controlled host. This vulnerability is fixed in 0.8.20-alpha.
Severity
MEDIUM
CVSS score
6.1
(v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-05-28 18:16:34.907000
Last modified
2026-10-26 13:10:00.140000
View original CVE JSON
{
"id": "CVE-2026-45307",
"sourceIdentifier": "[email protected]",
"published": "2026-05-28T18:16:34.907",
"lastModified": "2026-10-26T13:10:00.140",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Speakr is a personal, self-hosted web application designed for transcribing audio recordings. Prior to 0.8.20-alpha, the is_safe_url() helper used to validate post-login redirect targets applied urljoin(request.host_url, target) before parsing, while the controller passed the raw target to redirect(). A scheme-relative input such as ////evil.com resolved to a same-host URL during validation but was emitted verbatim in the Location header, where the browser interpreted it as a network-path-relative redirect to an attacker-controlled host. This vulnerability is fixed in 0.8.20-alpha."
},
{
"lang": "es",
"value": "Speakr es una aplicación web personal, autoalojada, diseñada para transcribir grabaciones de audio. Antes de 0.8.20-alpha, la función auxiliar is_safe_url() utilizada para validar los objetivos de redirección post-inicio de sesión aplicaba urljoin(request.host_url, target) antes del análisis, mientras que el controlador pasaba el objetivo en bruto a redirect(). Una entrada relativa al esquema como ////evil.com se resolvía a una URL del mismo host durante la validación, pero se emitía textualmente en el encabezado Location, donde el navegador la interpretaba como una redirección relativa a la ruta de red a un host controlado por un atacante. Esta vulnerabilidad está corregida en 0.8.20-alpha."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "murtaza-nasir",
"product": "speakr",
"versions": [
{
"version": "< 0.8.20-alpha",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "REQUIRED",
"scope": "CHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 2.8,
"impactScore": 2.7
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-05-28T19:30:58.519666Z",
"id": "CVE-2026-45307",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-601"
}
]
}
],
"references": [
{
"url": "https://github.com/murtaza-nasir/speakr/security/advisories/GHSA-5cpp-mqgh-4c38",
"source": "[email protected]"
},
{
"url": "https://github.com/murtaza-nasir/speakr/security/advisories/GHSA-5cpp-mqgh-4c38",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}