
Exploit de prova de conceito para CVE-2026-55168 demonstrando escrita arbitrária de arquivo autenticada via plantio de symlink durante restauração de backup no Runtipi.
Este repositório contém um PoC simples para CVE-2026-55168 no Runtipi.
O problema é uma escrita arbitrária de ficheiro autenticada que pode ser alcançada através do fluxo de restauro de backup. Um arquivo de backup malicioso pode plantar um symlink nos dados restaurados da aplicação, e uma atualização normal de configuração posterior segue esse symlink e escreve conteúdo controlado pelo atacante fora do diretório pretendido.
Referência do aviso:
Versões afetadas:
<= 4.10.0O PoC faz login no Runtipi, cria um arquivo de backup malicioso em memória, carrega-o, aciona o restauro e, em seguida, envia um pedido normal de atualização user-config.
O payload de restauro planta este symlink:
user-config/app.env -> /data/state/proof.txt
Depois disso, o pedido normal para atualizar a config da aplicação faz com que o Runtipi escreva o conteúdo fornecido em:
/data/state/proof.txt
Portanto, a parte importante não é apenas a persistência do symlink durante o restauro, mas o facto de que uma escrita legítima posterior segue o symlink plantado.
poc.py — PoC Python completopython 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 quiser, também pode guardar o arquivo gerado localmente:
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
Se o alvo for vulnerável, o script termina com sucesso e imprime um pequeno resultado JSON com status: "ok".
Este PoC é fornecido para fins de investigação e reprodução.