CVE-2026-48544
Full vulnerability record from the local CVENow database.
Description
Taipy 4.1.1, fixed in commit 129fd40, contains a path traversal vulnerability in the ElementLibrary.get_resource() method in taipy/gui/extension/library.py that allows unauthenticated attackers to escape the intended module directory by exploiting an incomplete path containment check using str.startswith() without a trailing path separator. Attackers can send crafted GET requests with path traversal segments targeting a prefix-matching sibling directory on disk, bypassing the directory containment check because Flask's path converter and Werkzeug's WSGI layer preserve the traversal segments while the resolved path still satisfies the flawed startswith comparison, enabling unauthorized file access outside the intended library directory.
View original CVE JSON
{
"id": "CVE-2026-48544",
"sourceIdentifier": "[email protected]",
"published": "2026-05-27T15:16:30.880",
"lastModified": "2026-10-26T12:10:00.130",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Taipy 4.1.1, fixed in commit 129fd40, contains a path traversal vulnerability in the ElementLibrary.get_resource() method in taipy/gui/extension/library.py that allows unauthenticated attackers to escape the intended module directory by exploiting an incomplete path containment check using str.startswith() without a trailing path separator. Attackers can send crafted GET requests with path traversal segments targeting a prefix-matching sibling directory on disk, bypassing the directory containment check because Flask's path converter and Werkzeug's WSGI layer preserve the traversal segments while the resolved path still satisfies the flawed startswith comparison, enabling unauthorized file access outside the intended library directory."
},
{
"lang": "es",
"value": "Taipy 4.1.1, corregido en el commit 129fd40, contiene una vulnerabilidad de salto de ruta en el método ElementLibrary.get_resource() en taipy/gui/extensión/biblioteca.py que permite a atacantes no autenticados escapar del directorio del módulo previsto al explotar una verificación incompleta de contención de ruta que utiliza str.startswith() sin un separador de ruta final. Los atacantes pueden enviar solicitudes GET manipuladas con segmentos de salto de ruta dirigidos a un directorio hermano en disco que coincida con un prefijo, eludiendo la verificación de contención de directorio porque el convertidor de rutas de Flask y la capa WSGI de Werkzeug preservan los segmentos de salto mientras que la ruta resuelta aún satisface la comparación defectuosa de startswith, lo que permite el acceso no autorizado a archivos fuera del directorio de la biblioteca previsto."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Avaiga",
"product": "taipy",
"defaultStatus": "affected",
"repo": "https://github.com/Avaiga/taipy",
"packageURL": "pkg:pypi/taipy",
"versions": [
{
"version": "0",
"lessThanOrEqual": "4.1.1",
"versionType": "semver",
"status": "affected"
},
{
"version": "129fd407ffca49ee4ab853772c88d0c873e038dd",
"versionType": "git",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/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",
"baseScore": 8.7,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"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:N/A:N",
"baseScore": 7.5,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 3.9,
"impactScore": 3.6
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-05-28T15:38:20.951176Z",
"id": "CVE-2026-48544",
"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-22"
}
]
}
],
"references": [
{
"url": "https://github.com/Avaiga/taipy/commit/129fd407ffca49ee4ab853772c88d0c873e038dd",
"source": "[email protected]"
},
{
"url": "https://github.com/Avaiga/taipy/issues/2868",
"source": "[email protected]"
},
{
"url": "https://github.com/Avaiga/taipy/pull/2871",
"source": "[email protected]"
},
{
"url": "https://www.vulncheck.com/advisories/taipy-path-traversal-via-elementlibrary-get-resource",
"source": "[email protected]"
},
{
"url": "https://github.com/Avaiga/taipy/issues/2868",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}