보안 연구자 아오난 관(Aonan Guan)이 공개한 클로드 코드(Claude Code) 샌드박스 우회 취약점을 다뤄요. 샌드박스가 외부 통신을 중계하는 SOCKS5 프록시에서 허용 목록을 자바스크립트 문자열로 검사하는데, 널 바이트를 끼워 넣은 'attacker-host.com\x00.google.com'을 넣으면 검사기는 '.google.com으로 끝난다'며 통과시켜요. 하지만 실제 주소 변환(getaddrinfo)은 널 바이트에서 끊겨 차단 대상인 공격자 서버로 접속돼요. 계층마다 문자열 해석이 달라 생기는 틈을 노린 우회예요. 글쓴이는 '문자열이 아니라 패킷 단위로, 네트워크 경계(L3/L4)에서 유출을 막아야 한다'고 주장해요. 이 결함은 v2.0.24부터 v2.1.89까지 약 5.5개월간 열려 있다가 2.1.90에서 보안 언급 없이 조용히 고쳐졌어요.
용어 풀이
- SOCKS5
- 프로그램의 통신을 중계 서버(프록시)로 우회시키는 표준 프로토콜의 한 종류.
- 이그레스 필터(egress filter)
- 내부에서 바깥으로 나가는 통신을 검사·차단하는 유출 방지 장치.
- 허용 목록(allowlist)
- 접속을 허용할 대상만 미리 등록하고 나머지는 모두 막는 방식.
- 널 바이트(null byte)
- 문자열의 끝을 뜻하는 특수문자(값 0). 처리 계층마다 다르게 해석돼 우회에 악용됨.
- 프롬프트 인젝션(prompt injection)
- 외부 입력에 몰래 명령을 섞어 AI의 행동을 조종하는 공격.
운영자 인사이트
핵심 교훈은 '유출 차단을 애플리케이션의 문자열 검사에 맡기지 말라'예요. 검사하는 계층과 실제 접속하는 계층이 이름을 다르게 해석하면 허용 목록은 언제든 뚫려요. 그래서 필터링은 이름을 파싱하지 않는 네트워크 경계(패킷 수준)에서 강제해야 하고, 이는 클로드 코드뿐 아니라 사내에서 에이전트를 샌드박스로 돌리는 모든 팀에 해당해요.
여러 관점으로 보기
- 최초 공개(연구자) 아오난 관이 SOCKS5 널 바이트 우회를 공개했고, 취약 구간은 v2.0.24~v2.1.89·약 5.5개월이라고 밝혀요. Aonan Guan 블로그
- 벤더 대응 앤트로픽이 2.1.90에서 조용히 패치했지만 릴리스 노트에 보안 수정 사실을 적지 않았다고 보도해요. SecurityWeek
- 영향·위험 프롬프트 인젝션과 결합되면 ~/.aws·깃허브 토큰·API 키·클라우드 메타데이터(169.254.169.254)까지 빠져나갈 수 있다고 해요. Cybersecurity News