공격Agent 분석 — CVE-2026-3691
📋 요약
- 한 줄 정의: OpenClaw Client 내 OAuth 인증 과정에서 PKCE Verifier 정보가 노출되는 취약점(CWE-94 - 민감 정보 노출)이 사용자 상호작용을 통해 악용 가능하다.
- 영향 한 줄: 공격자는 저장된 사용자 자격 증명에 접근하여 계정 탈취 및 추가적인 내부 시스템 침해를 수행할 수 있다 (KEV: 높음, CVSS 5.3).
🎯 영향 범위 / 자산 식별
- 영향 받는 제품·버전 범위: OpenClaw Client 버전 < 2026.2.25
- 안전한 최소 패치 버전: 2026.2.25 이상
- 노출 조건: 인터넷에 노출되어 있으며, OAuth 인증 흐름가 활성화된 환경에서 취약하다 (기본 설정에서도 가능).
- 내 자산 식별 방법:
curl또는OpenClaw Client 인터페이스를 통해/oauth/authorize?response_type=code&client_id=<CLIENT_ID>,redirect_uri=https://yourdomain.com/.well-known/openid-configuration. 여기서<REDIRECT_URI>는 실제 설정된 리다이렉트 URI와 일치하는지 확인한다.- 버전 배너 확인 명령어 예시:
bash1curl -I http://TARGET_HOST/version | grep "OpenClaw Client"2# 결과에서 버전이 '2026.x' 이하인지 확인합니다.
/opt/openclawkclient디렉토리 내package-info.json 파일을 검토하여 클라이언트 버전 정보를 확인한다.- 설정 항목: OAuth 관련 설정 활성화 여부 확인, 특히 PKCE 인증 흐름 사용 여부 점검.
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트/버전 범위: OpenClaw Client (모든 버전 < 2026.2.25) 내 OAuth 인증 모듈의
authorize엔드포인트
전제 조건
- 인증 필요 여부: 사용자 상호작용을 통한 OAuth 인증 흐름 시작이 필수적이다
- 필요 권한/네트워크 위치: 공격 대상 시스템은 인터넷에 노출되어 있어야 하며, 기본 설정에서 OAuth 기능 활성화가 되어있다.
③ 트리거 경로
-
엔드포인트 및 파라미터 호출: 사용자가
/oauth/authorize엔드포인트로 요청을 보내는 과정 시작 (예시 URL)http1GET https://TARGET_HOST/oauth/authorize?response_type=code&client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fyoursite.com/.well-known/openid-configuration HTTP/1.12Host: TARGET_HOST -
처리 결함: 인증 요청 시 민감한 PKCE Verifier 정보가 URL 쿼리 스트링에 적절히 인코딩되지 않고 노출된다. 이로 인해 공격자는 해당 정보를 추출할 수 있게 된다.
-
결과: 공격자는 획득한 Verifier 값을 이용해 추가적인 인증 단계를 우회하고, 저장된 사용자 자격 증명에 접근 가능하다.
④ 성공 시 영향
- 획득 권한 및 컨텍스트: 공격자가 획득한 정보로 인해 해당 계정의 권한으로 시스템 내 활동 수행이 가능해진다 (예: 데이터 조회 또는 변경).
- 후속 피벗(Lateral Movement): 추가적인 내부 네트워크 접근을 통해 더 넓은 범위의 침해를 시도할 수 있다. 지속성 유지가 용이하다.
💣 예시 코드 (PoC)
기본 공격 예시 1 - OAuth 요청 악용
bash
1# 전제 조건: 사용자 인증 흐름 시작이 필요함, 실제 URL에 맞게 TARGET_HOST 및 CLIENT_ID 조정 필수 2curl --request GET \ 3 --url "https://TARGET_HOST/oauth/authorize?response_type=code&client_id=<CLIENT_ID>" \ 4 # 핵심: 민감한 Verifier 정보가 URL 쿼리 스트링에 노출되므로, 이를 확인하기 위해 응답 헤더 또는 쿠키 분석 필요. 5 # 확인: 응답 헤더나 쿠키에서 예상치 못한 PKCE 관련 토큰이나 값을 찾는다 (예시로 HTTP 응답 코드와 특정 문자열 검색). 6 # 예시 응답 검사 기준: `HTTP Response Headers` 에서 unexpected token "VERIFIER_TOKEN" 존재 여부를 확인한다. WAF 우회 공격 예시 - 특수 인코딩 활용
bash
1curl --request GET \ 2 --url "https://TARGET_HOST/oauth/authorize?response%20type=code&clientID=<CLIENT-ID>" \ 3# 핵심: URL 인코딩을 통해 공격 패턴을 우회하려 시도 (예시로 `space`를 `%20`) 하지만, 이 취약점은 기본적으로 쿼리 스트링 내 직접적 노출에 의존한다. 4 # 확인: 응답에서 예상치 못한 토큰이나 값이 나타나는지 검사하여 성공 여부 판단 가능하다. 🛡️ 탐지
[네트워크 트래픽 로그] OAuth 인증 요청 패턴 감지
- Sigma 규칙 예시 (
detection_as_code)text1rule oauth_info_disclosure Detects suspicious PKCE verifier exposure patterns in HTTP requests:2 description "Detecting potential info disclosure via exposed Verifier tokens during OpenClaw OAuth flow"3 condition:4 keywords: ["GET", "/oauth/authorize"] # 엔드포인트 필터링5 response_codes: [200] # 정상 응답 코드 확인6 strings: [{ pattern: "VERIFIER.*="; proximity: "-1 to +1" }] # 민감 정보 패턴 검색7 action: alert
[웹 애플리케이션 로그] 인증 흐름 분석 로그 검사
- Suricata 시그니처 예시
bash1alert tcp $EXTERNAL_NET any -> $HTTP_PORT any (msg: "OpenClaw OAuth Info Disclosure"; flow: to_server, established; content: "|VERIFIER|", depth:1024, nocase)
한계 사항
- 인코딩 및 특수 문자 활용으로 인한 탐지 어려움 가능성 존재. 추가적인 네트워크 트래픽 분석과 로그 모니터링 필요함을 명시해야 한다.
🔧 방어·완화
1. 입력 검증 강화 (코드패치 우선순위 높음)
- 위치:
/path/to/openclawkclient내 OAuth 관련 함수 코드 라인 수정 또는 업데이트 적용bash1# 예시 패치 포인트 - 실제 코드에 맞게 조정 필요2 if ("VERIFIER" in request.args):3 verifier = urllib.parse.unquote(request.args['VERIFIER']) # 안전한 인코딩 처리 추가 필수4 ...
text
1```2. 네트워크 ACL 적용 (즉시 적용 가능)
- 위치: 네트워크 보안 장비 설정에서
/oauth/authorize엔드포인트로의 비정상적인 쿼리 스트링 패턴 차단 규칙 생성bash1# 예시 방화벽 규칙 - 실제 환경에 맞게 조정 필요2 iptables -A INPUT -p tcp --dport 80 -m string --string "VERIFIER.*=" -j DROP ## HTTP 트래픽 필터링 예시
text
1```3. WAF 설정 강화 (즉시 적용 가능)
- 위치: WAF 규칙 업데이트를 통해 민감한 토큰 감지 및 차단 활성화
bash1# 예시 ModSecurity 규칙 추가 또는 수정 - 실제 환경에 맞게 조정 필요2 SecRule REQUEST_URI "@contains VERIFIER" "id:1002, deny, msg:'Potential PKCE Info Disclosure detected'"
text
1``` 즉시 적용할 임시 완화 조치
- 네트워크 레벨 차단:
/oauth/authorize엔드포인트로의 접근을 특정 IP 범위 또는 신뢰할 수 있는 네트워크만 허용하도록 제한한다. (예시)iptables -A INPUT -p tcp --dport 80 -s ALLOWED_SOURCE_IP -j ACCEPT)
⚖️ 위험도 / 패치 우선순위
- 권고: 이번 주 내에 OpenClaw Client 버전을 최신화하여 취약점 해결 (최소 2026.2.25 이상). 즉시 적용 가능한 네트워크 레벨 차단 조치를 병행하며, 모니터링 강화와 함께 탐지 룰 업데이트 진행 필요하다.
## 🌐 실제 동향
- 요약: 현재 보안 커뮤니티에서는 이 취약점이 OAuth 인증 흐름가 활성화된 다양한 클라우드 및 엔터프라이즈 환경에서 악용될 위험성이 제기되고 있다 (출처: ZDI Advisory). 특히, 사용자 계정 탈취 후 내부 네트워크 접근을 시도하는 사례들이 보고되었으며, 이에 따라 신속한 패치와 보완 조치가 강조되고 있습니다.