OpenClaw에서의 Symlink race 및 클라이언트 제어 가능 Auth header
요약
본 기술 보고서는 OpenClaw에서 발견된 네 가지 CVE에 대해 다루고 있으며, 특히 TOCTOU 취약점과 MCP 권한 상승 문제를 중점적으로 분석합니다. TOCTOU는 파일 시스템 경로 검증 과정 사이에 심볼릭 링크 교체를 통해 호스트의 임의 파일을 읽거나 쓸 수 있게 합니다. 또한, OpenClaw 서버가 자식 프로세스의 환경 변수(예: `OPENCLAW_MCP_SENDER_IS_OWNER=true`)를 신뢰하여 권한 상승이 발생하며, 이는 베어러 토큰 검증 부재 및 heredoc 확장을 통한 환경 변수 유출 취약점과 결합되어 전체 런타임 제어를 가능하게 합니다.
핵심 포인트
- TOCTOU(Time-of-Check to Time-of-Use) 취약점을 통해 파일 시스템 경로를 조작하여 호스트 권한을 탈취할 수 있습니다.
- OpenClaw 서버가 자식 프로세스의 환경 변수 값을 신뢰하는 구조적 결함으로 인해 MCP 권한 상승이 발생합니다.
- 베어러 토큰에 대한 적절한 검증 메커니즘이 부재하며, 이는 보안 취약점을 악용하는 데 사용됩니다.
- 여러 개의 개별 취약점(Symlink race, 환경 변수 조작 등)을 체이닝하여 전체 런타임 제어로 이어지게 할 수 있습니다.
네 가지 새로운 OpenClaw CVE에 관한 이 기술 보고서(writeup)를 읽었는데, 그중 몇 가지는 스크롤을 멈추게 만들었습니다. TOCTOU (Time-of-Check to Time-of-Use) 취약점들은 명확하면서도 흥미롭습니다. 샌드박스(sandbox)가 파일 경로를 검증하고, 그것이 허용된 루트(root) 내부에 있는지 확인한 다음, 파일을 엽니다. 두 번의 작업이 수행됩니다. 그 사이에 심볼릭 링크(Symlink) 교체가 일어납니다. 그러면 호스트의 무엇이든 읽거나 쓸 수 있는 권한을 얻게 됩니다. 2026년임에도 불구하고 우리는 여전히 파일 시스템 경로에 대해 '확인 후 사용(check-then-use)' 방식을 배포하고 있습니다. 하지만 저를 놀라게 한 것은 MCP 권한 상승(privilege escalation)이었습니다. 자식 프로세스(child process)가 루프백(loopback)을 통해 OpenClaw 서버에 다시 연결될 때, 서버는 HTTP 헤더를 확인하여 해당 프로세스가 소유자 권한을 가졌는지 결정합니다. 그 헤더의 값은 환경 변수(environment variable)에서 옵니다. 환경 변수는 자식 프로세스에 상속됩니다. 따라서 에이전트(agent) 내부에서 실행되는 문자 그대로 어떤 코드라도 OPENCLAW_MCP_SENDER_IS_OWNER=true를 설정할 수 있으며, 서버는 그냥... 그것을 믿어버립니다. 베어러 토큰(bearer token)에 대한 검증도, 아무것도 없습니다. 또한 exec 허용 목록(allowlist)을 우회하는 heredoc 확장을 통한 환경 변수 유출도 있는데, 이는 훌륭한 트릭입니다. 네 가지 취약점 모두 단일 샌드박스 발판으로부터 전체 런타임 제어(full runtime control)로 이어지도록 체이닝(chain)됩니다. 이미 패치되었습니다. 전체 기술 보고서(Full writeup)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기