본문으로 건너뛰기

도구·서비스

클로드 코드 이메일 차단 코드 공개…웹 도구는 적용 밖

편집·검토: AI Ping 편집팀

3줄 요약

  1. 11월 5일 이메일 전송 제보 뒤 내장 보호 플러그인 소스가 공개됐다.
  2. 공개 코드는 계정 주소와 User-Agent 지정이 함께 있는 셸 입력을 거부한다.
  3. 공개 설명에 웹 도구 등 적용 밖 경로를 적었다.
실무개발자
노트북과 이메일 기호가 있는 투명 서류 봉투
AI 생성 개념 이미지: 코딩 작업과 외부 요청에 실릴 수 있는 계정 정보 · AI Ping

앤트로픽이 클로드 코드의 계정 이메일 전송을 일부 차단하는 내장 플러그인 소스를 11월 6일 공개했다. 전날 공식 저장소에 웹 검색 과정에서 이메일이 외부 사이트로 전송됐다는 이용자 제보가 올라온 뒤다. 공개 커밋은 이 기능의 소스와 검사 방식을 담았다.

검사 대상은 셸 명령에 계정 이메일과 User-Agent를 지정하는 표현이 함께 들어 있는 경우다. User-Agent는 웹 요청을 보낸 프로그램을 설명하는 항목이다. 개발자가 이미 허용한 명령이라도 이 조합을 발견하면 실행을 거부하는 방식이어서, 사이트 접속 허용과 이메일 포함 여부가 별도의 판단 대상이 된다.

User-Agent 띠와 이메일 기호를 광학 검사대에서 살피는 장면
AI 생성 개념 이미지: 헤더 지정과 계정 주소의 조합을 살피는 검사 · AI Ping

제보자는 11월 5일 등록한 이슈에서 macOS용 2.1.318을 사용했다고 적었다. 저장소 기여자로 표시된 poteat는 댓글에서 2.1.317 이후 버전에 개인정보 보호 플러그인을 도입했고 기본으로 켜진다고 설명하며, 검사에서 빠지는 사례를 알려 달라고 요청했다. 이슈는 6일 확인 시점에도 열려 있었다.

공개된 실행 검사 코드는 기존 권한 검사 결과부터 받아 이미 거부된 명령이면 그 결정을 유지한다. 이어 명령에 이메일에 쓰이는 기호나 그 인코딩 표현이 있는지 확인하고, 필요한 경우 계정 식별 정보에서 이메일을 가져와 대조한다. 여기서 찾는 기호는 @와 이를 퍼센트 인코딩한 %40이다. 둘 다 없는 입력은 계정 이메일을 조회하는 단계에 들어가지 않고 기존 판단으로 돌아간다. 두 조건이 맞을 때 거부 결과를 돌려주고, 맞지 않으면 앞선 권한 판단을 그대로 전달한다.

입력을 검사하기 전에는 따옴표와 이스케이프 문자, 줄을 이어 쓰는 표현을 정리한 문자열도 함께 만든다. 명령에 주소나 프로그램 이름을 나눠 적었더라도 비교할 수 있도록 원래 입력과 정리한 입력을 모두 읽는 방식이다. 도구 입력이 객체나 배열이면 안에 있는 문자열을 재귀적으로 모아 검사한다. 따라서 화면에서 보이는 명령 한 줄만을 그대로 검색하는 것보다 검사할 표현의 범위가 넓다.

주소 대조는 대소문자를 구분하지 않으며 퍼센트 인코딩을 한 차례 풀어 비교한다. User-Agent라는 이름뿐 아니라 curl과 wget 같은 명령행 프로그램이 같은 헤더를 지정할 때 쓰는 축약 옵션도 찾는다. 이 두 프로그램의 옵션은 대소문자까지 고려해 별도로 매칭하며, 주소가 없거나 빈 문자열이면 일치하지 않는 것으로 처리한다. 주소 자체에 헤더 이름처럼 보이는 글자가 있어 잘못 걸리지 않도록, 주소를 제거한 나머지 문자열에서 헤더 지정 표현을 검사하는 절차도 포함했다.

검사는 주소의 존재와 헤더 지정 표현을 따로 찾는다. 명령을 문법적으로 해석해 주소가 헤더 값으로 흘러가는지를 추적하지 않는다. 두 표현이 다른 용도로 쓰여도 함께 발견되면 거부될 수 있다.

공개 설명에 적힌 검사 범위

다만 플러그인 설명서는 이 기능을 하나의 형태를 다루는 편의 장치로 규정한다. 이메일을 URL이나 요청 본문에 넣는 경우, 실행할 때 계산한 값이나 별도 스크립트에 주소가 들어 있는 경우 등은 적용 밖이다. WebFetch·WebSearch와 MCP 도구도 검사하지 않는다고 적었다. MCP는 클로드 코드를 다른 도구나 서비스와 연결하는 방식이다. 등록된 대상은 일반 셸 명령과 PowerShell, 실행 중인 명령을 다루는 Monitor 도구다. 별도 실행 환경이 자기 셸 도구 이름을 추가하는 자리는 있지만, 공개된 기본 목록에 추가 항목은 들어 있지 않다.

터미널 검사 장치와 별도 케이블로 연결된 브라우저·플러그인 모듈
AI 생성 개념 이미지: 셸·브라우저·외부 도구의 서로 다른 호출 경로 · AI Ping

거부 결과에 담길 설명도 공개했다. 해당 호출에 계정 이메일과 User-Agent 설정으로 보이는 표현이 함께 있다는 점을 모델과 이용자가 읽을 수 있도록 알린다. 주소 전송을 요청받지 않았다면 이메일을 빼고 일반적인 클라이언트 이름으로 다시 실행하라는 내용이다. 주소 전송 요청이 있었던 경우에는 해당 헤더 설정을 빼거나 호출을 나누라는 문구도 들어 있다. 이는 플러그인이 전달하는 거부 사유와 후속 처리 설명이다.

이번에 확인한 것은 공개 저장소의 해당 커밋과 문서에 적힌 설계다. 개별 설치본의 동작이나 제보자가 겪은 전송 경로를 직접 재현한 결과는 없다. 플러그인 설명서는 해당 훅이 로드되지 않은 세션에서는 검사가 실행되지 않는다는 조건도 함께 공개했다.

출처

정정 내역

  • 영문에서 제거하는 대상이 이어진 줄 전체가 아니라 줄 이어쓰기 문자임을 명확히 했습니다.