CVE-2025-58761
Full vulnerability record from the local CVENow database.
Description
Tautulli is a Python based monitoring and tracking tool for Plex Media Server. The `real_pms_image_proxy` endpoint in Tautulli v2.15.3 and prior is vulnerable to path traversal, allowing unauthenticated attackers to read arbitrary files from the application server's filesystem. The `real_pms_image_proxy` is used to fetch an image directly from the backing Plex Media Server. The image to be fetched is specified through an `img` URL parameter, which can either be a URL or a file path. There is some validation ensuring that `img` begins with the prefix `interfaces/default/images` in order to be served from the local filesystem. However this can be bypassed by passing an `img` parameter which begins with a valid prefix, and then adjoining path traversal characters in order to reach files outside of intended directories. An attacker can exfiltrate files on the application file system, including the `tautulli.db` SQLite database containing active JWT tokens, as well as the `config.ini` file which contains the hashed admin password, the JWT token secret, and the Plex Media Server token and connection details. If the password is cracked, or if a valid JWT token is present in the database, an unauthenticated attacker can escalate their privileges to obtain administrative control over the application. Version 2.16.0 contains a fix for the issue.
View original CVE JSON
{
"id": "CVE-2025-58761",
"sourceIdentifier": "[email protected]",
"published": "2025-09-09T20:15:49.763",
"lastModified": "2026-10-19T17:10:00.173",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Tautulli is a Python based monitoring and tracking tool for Plex Media Server. The `real_pms_image_proxy` endpoint in Tautulli v2.15.3 and prior is vulnerable to path traversal, allowing unauthenticated attackers to read arbitrary files from the application server's filesystem. The `real_pms_image_proxy` is used to fetch an image directly from the backing Plex Media Server. The image to be fetched is specified through an `img` URL parameter, which can either be a URL or a file path. There is some validation ensuring that `img` begins with the prefix `interfaces/default/images` in order to be served from the local filesystem. However this can be bypassed by passing an `img` parameter which begins with a valid prefix, and then adjoining path traversal characters in order to reach files outside of intended directories. An attacker can exfiltrate files on the application file system, including the `tautulli.db` SQLite database containing active JWT tokens, as well as the `config.ini` file which contains the hashed admin password, the JWT token secret, and the Plex Media Server token and connection details. If the password is cracked, or if a valid JWT token is present in the database, an unauthenticated attacker can escalate their privileges to obtain administrative control over the application. Version 2.16.0 contains a fix for the issue."
},
{
"lang": "es",
"value": "Tautulli es una herramienta de monitoreo y seguimiento basada en Python para Plex Media Server. El punto final 'real_pms_image_proxy' en Tautulli v2.15.3 y anteriores es vulnerable a salto de ruta, permitiendo a atacantes no autenticados leer archivos arbitrarios del sistema de archivos del servidor de aplicaciones. El 'real_pms_image_proxy' se utiliza para obtener una imagen directamente del Plex Media Server de respaldo. La imagen a obtener se especifica a través de un parámetro URL 'img', que puede ser una URL o una ruta de archivo. Existe cierta validación que asegura que 'img' comienza con el prefijo 'interfaces/default/images' para ser servido desde el sistema de archivos local. Sin embargo, esto puede ser eludido pasando un parámetro 'img' que comienza con un prefijo válido, y luego adjuntando caracteres de salto de ruta para alcanzar archivos fuera de los directorios previstos. Un atacante puede exfiltrar archivos del sistema de archivos de la aplicación, incluyendo la base de datos SQLite 'tautulli.db' que contiene tokens JWT activos, así como el archivo 'config.ini' que contiene la contraseña de administrador con hash, el secreto del token JWT y el token y los detalles de conexión de Plex Media Server. Si la contraseña es descifrada, o si un token JWT válido está presente en la base de datos, un atacante no autenticado puede escalar sus privilegios para obtener control administrativo sobre la aplicación. La versión 2.16.0 contiene una solución para el problema."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Tautulli",
"product": "Tautulli",
"versions": [
{
"version": "< 2.16.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:C/C:H/I:N/A:N",
"baseScore": 8.6,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "CHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 3.9,
"impactScore": 4.0
},
{
"source": "[email protected]",
"type": "Primary",
"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": "2025-09-10T13:47:50.599702Z",
"id": "CVE-2025-58761",
"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-27"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:tautulli:tautulli:*:*:*:*:*:*:*:*",
"versionEndExcluding": "2.16.0",
"matchCriteriaId": "2DC34660-238E-4602-816E-D7DA8D91E923"
}
]
}
]
}
],
"references": [
{
"url": "https://github.com/Tautulli/Tautulli/commit/ec77a70aafc555e1aad0d9981f719d1200c117f1",
"source": "[email protected]",
"tags": [
"Patch"
]
},
{
"url": "https://github.com/Tautulli/Tautulli/security/advisories/GHSA-r732-m675-wj7w",
"source": "[email protected]",
"tags": [
"Exploit",
"Vendor Advisory"
]
},
{
"url": "https://github.com/Tautulli/Tautulli/security/advisories/GHSA-r732-m675-wj7w",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"tags": [
"Exploit",
"Vendor Advisory"
]
}
]
}