Security Vulnerability Report
中文
CVE-2026-24129 CVSS 8.0 HIGH

CVE-2026-24129

Published: 2026-01-22 23:15:58
Last Modified: 2026-02-26 21:38:34

Description

Runtipi is a Docker-based, personal homeserver orchestrator that facilitates multiple services on a single server. Versions 3.7.0 and above allow an authenticated user to execute arbitrary system commands on the host server by injecting shell metacharacters into backup filenames. The BackupManager fails to sanitize the filenames of uploaded backups. The system persists user-uploaded files directly to the host filesystem using the raw originalname provided in the request. This allows an attacker to stage a file containing shell metacharacters (e.g., $(id).tar.gz) at a predictable path, which is later referenced during the restore process. The successful storage of the file is what allows the subsequent restore command to reference and execute it. This issue has been fixed in version 4.7.0.

CVSS Details

CVSS Score
8.0
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:runtipi:runtipi:*:*:*:*:*:*:*:* - VULNERABLE
3.7.0 <= Runtipi < 4.7.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
上传备份文件,文件名为 $(whoami).tar.gz

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-24129", "sourceIdentifier": "[email protected]", "published": "2026-01-22T23:15:58.303", "lastModified": "2026-02-26T21:38:33.640", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Runtipi is a Docker-based, personal homeserver orchestrator that facilitates multiple services on a single server. Versions 3.7.0 and above allow an authenticated user to execute arbitrary system commands on the host server by injecting shell metacharacters into backup filenames. The BackupManager fails to sanitize the filenames of uploaded backups. The system persists user-uploaded files directly to the host filesystem using the raw originalname provided in the request. This allows an attacker to stage a file containing shell metacharacters (e.g., $(id).tar.gz) at a predictable path, which is later referenced during the restore process. The successful storage of the file is what allows the subsequent restore command to reference and execute it. This issue has been fixed in version 4.7.0."}, {"lang": "es", "value": "Runtipi es un orquestador de servidor doméstico personal basado en Docker que facilita múltiples servicios en un único servidor. Las versiones 3.7.0 y superiores permiten a un usuario autenticado ejecutar comandos de sistema arbitrarios en el servidor anfitrión inyectando metacaracteres de shell en los nombres de archivo de las copias de seguridad. El BackupManager no logra sanear los nombres de archivo de las copias de seguridad cargadas. El sistema persiste los archivos cargados por el usuario directamente en el sistema de archivos del anfitrión utilizando el 'originalname' en bruto proporcionado en la solicitud. Esto permite a un atacante preparar un archivo que contiene metacaracteres de shell (por ejemplo, $(id).tar.gz) en una ruta predecible, que luego se referencia durante el proceso de restauración. Al lograr almacenar el archivo, permite que el comando de restauración posterior lo referencie y ejecute. Este problema ha sido solucionado en la versión 4.7.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H", "baseScore": 8.0, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.3, "impactScore": 6.0}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-78"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:runtipi:runtipi:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.7.0", "versionEndExcluding": "4.7.0", "matchCriteriaId": "7AE4B49C-D816-47CE-9DBB-D65762BE8763"}]}]}], "references": [{"url": "https://github.com/runtipi/runtipi/commit/c3aa948885554a370d374692158a3bfe1cfdc85a", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/runtipi/runtipi/releases/tag/v4.7.0", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/runtipi/runtipi/security/advisories/GHSA-vrgf-rcj5-6gv9", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}