
Ce dépôt contient un PoC simple pour CVE-2026-55168 dans Runtipi.
Le problème est une écriture arbitraire de fichier authentifiée, accessible via le flux de restauration de sauvegarde. Une archive de sauvegarde spécialement conçue peut placer un lien symbolique dans les données d'application restaurées, et une mise à jour de configuration normale ultérieure suit ce lien symbolique et écrit un contenu contrôlé par l'attaquant en dehors du répertoire prévu.
Avis de référence :
Versions affectées :
<= 4.10.0Le PoC se connecte à Runtipi, crée une archive de sauvegarde malveillante en mémoire, la téléverse, déclenche la restauration, puis envoie une requête normale de mise à jour user-config.
La charge utile de restauration place ce lien symbolique :
user-config/app.env -> /data/state/proof.txt
Ensuite, la requête normale de mise à jour de la configuration de l'application amène Runtipi à écrire le contenu fourni dans :
/data/state/proof.txt
La partie importante n'est donc pas seulement la persistance du lien symbolique pendant la restauration, mais le fait qu'une écriture légitime ultérieure suit le lien symbolique placé.
poc.py — PoC Python de bout en boutpython poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--app-urn demoapp3:_user \
--target-path /data/state/proof.txt \
--write-content PWNED_FROM_USERCFG_WRITE
Si vous le souhaitez, vous pouvez aussi enregistrer l'archive générée localement :
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
Si la cible est vulnérable, le script se termine avec succès et affiche un petit résultat JSON avec status: "ok".
Ce PoC est fourni à des fins de recherche et de reproduction.