Claude Code 워터마킹 사건과 AI 코딩 도구 공급망 투명성
Claude Code 유니코드 워터마킹 사건을 바탕으로 AI 코딩 도구의 시스템 프롬프트 투명성, 출력 무결성, 공급망 보안 감사 기준을 정리한다.
2026-08-14 · 최초 발행 2026-08-02
보이지 않는 문자가 드러낸 AI 도구의 공급망 문제
한 보안 연구자가 Claude Code 바이너리를 역공학하는 과정에서 시스템 프롬프트에 유니코드 변형 문자(invisible variation selector)가 포함된 사실을 발견했다. Anthropic은 해당 마커를 즉시 제거했지만, 이 사례는 AI 코딩 도구가 사용자에게 드러나지 않는 방식으로 출력물을 태깅하거나 추적할 가능성을 제기했다.
AI 도구를 개발 환경에 들일 때 기능과 성능만 평가하기에는 부족하다. 시스템 프롬프트가 어떻게 구성되는지, 요청 경로에 따라 동작이 달라지는지, 생성 결과에 보이지 않는 데이터가 섞이는지를 공급망 보안 관점에서 검토할 필요가 있다.
화면에 보이지 않는 유니코드 워터마크
스테가노그래피(Steganography)는 데이터를 다른 데이터 안에 눈에 띄지 않도록 숨기는 기법이다. 이번 사례에서는 유니코드 변형 선택자(Variation Selector, VS-1 ~ VS-256), 제로 폭 비결합자(Zero-Width Non-Joiner, ZWNJ), 제로 폭 결합자(Zero-Width Joiner, ZWJ)처럼 출력되지 않는 문자를 시스템 프롬프트 텍스트 사이에 끼워 넣는 방식이 언급됐다.
이 문자는 일반 텍스트 편집기와 터미널에서 표시되지 않는다. 반면 API 수준에서 바이트 스트림을 확인하면 식별할 수 있다. 연구자가 찾아낸 패턴은 고정된 표식이 아니라 조건에 따라 삽입되는 형태였다.
워터마크는 다음 상황에서 주입된 것으로 설명됐다.
- API base URL이 공식
api.anthropic.com이 아니라 제3자 프록시 엔드포인트를 가리키는 경우 - 요청 발신지의 타임존 또는 IP 대역이 특정 지역(중국 본토 연계 프록시 또는 특정 AI 연구소 인프라로 추정)에 해당하는 경우
즉, 공식 인프라를 우회해 재라우팅되는 요청에 출력물을 은밀히 태깅하는 지오펜싱(Geofencing) 기반 워터마킹이었다.
요청 경로에서 출력까지 이어지는 삽입 흐름
이 구조에서는 LLM이 출력하기 전에 시스템 프롬프트 계층에 워터마크가 들어간다. 모델은 해당 마커를 인지하지 못한 채 변경된 컨텍스트를 기반으로 추론한다. 그 결과 생성물에도 표식이 전파될 수 있어, 최종 코드 결과물까지 추적 마커가 포함될 가능성이 있었다.
지오펜싱 판단에 사용된 신호
지오펜싱 탐지는 세 종류의 신호를 조합하는 방식으로 서술됐다.
API Host Header 검사는 요청의 Host 헤더와 실제 TCP 연결 대상 IP를 Anthropic 공인 IP 범위와 비교한다. 공인 범위 밖의 요청은 프록시 경유로 판단한다.
타임존 오프셋 분석에서는 HTTP 요청의 Date 헤더나 사용자 에이전트 문자열에 포함된 시스템 로케일 정보를 파싱한다. UTC+8 ~ UTC+9 오프셋이 감지되면 추가 검사 단계로 넘어간다.
마지막으로 IP Reputation 데이터베이스를 조회한다. 알려진 AI 프록시 서비스, 클라우드 VPN, 특정 ISP 대역을 내부 데이터베이스와 대조해 워터마크 주입 여부를 결정한다.
이 방식의 문제는 오탐(False Positive) 가능성이다. 해당 지역에서 합법적으로 개발하는 엔지니어와 API 게이트웨이를 통해 요청을 라우팅하는 기업 환경의 개발자도 대상이 될 수 있다. 보안 연구자들은 이를 지역 기반 차별적 출력(geographically discriminative output)으로 명명하며 AI 공정성 원칙 위반이라고 비판했다.
시스템 프롬프트 무결성을 확인하는 방법
검증은 바이트, 서명, 차분이라는 서로 다른 계층에서 수행할 수 있다.
먼저 바이트 레벨 정규화 검사에서는 수신한 시스템 프롬프트 바이트 스트림에서 Unicode 카테고리 Cf(Format Characters)에 속하는 코드포인트를 추출한다. 정상 텍스트에서 이 문자는 거의 쓰이지 않으므로, 임계값을 넘으면 경보를 발생시킨다.
해시 기반 무결성 서명은 Anthropic이 공식 배포 시스템 프롬프트의 SHA-256 해시를 공개 키로 서명해 제공하고, 클라이언트에서 수신 프롬프트 해시와 비교하는 구조다. 투명성 로그(Transparency Log)와 결합하면 감사 경로를 강화할 수 있다.
차분 분석(Diff Analysis)은 같은 요청을 공식 엔드포인트와 사용 중인 엔드포인트로 동시에 보내 응답의 바이트 수준 차이를 비교한다. 인쇄 불가 문자의 차이가 발생하면 즉시 포착할 수 있다.
응답 스트림에서 숨은 문자를 찾는 코드
Python에서는 unicodedata 모듈로 각 코드포인트의 카테고리를 분류할 수 있다. 다음 로직은 의심스러운 유니코드 범위와 카테고리를 기준으로 마커를 수집한다.
import unicodedata
import re
SUSPICIOUS_CATEGORIES = {'Cf', 'Mn', 'Me'}
INVISIBLE_RANGES = [
(0xFE00, 0xFE0F), # Variation Selectors
(0x200B, 0x200F), # Zero-width characters
(0xE0000, 0xE007F), # Tags block
(0x180B, 0x180D), # Mongolian Free Variation Selectors
]
def detect_steganographic_markers(text: str) -> dict:
findings = []
for idx, char in enumerate(text):
cp = ord(char)
category = unicodedata.category(char)
if category in SUSPICIOUS_CATEGORIES:
for start, end in INVISIBLE_RANGES:
if start <= cp <= end:
findings.append({
'position': idx,
'codepoint': f'U+{cp:04X}',
'category': category,
'context': text[max(0,idx-10):idx+10]
})
return {
'total_markers': len(findings),
'suspicious': len(findings) > 0,
'details': findings
}
이 검사를 CI/CD 파이프라인에 연결하면 LLM API에서 받는 시스템 프롬프트와 응답 스트림을 실시간으로 스캔할 수 있다. 탐지 결과는 SIEM(Security Information and Event Management) 시스템으로 보내 보안 운영 센터의 집중 모니터링 대상으로 설정하는 방식이 권장된다.
아티팩트·네트워크·출력을 함께 감사한다
AI 코딩 도구의 공급망 감사는 빌드 아티팩트, 런타임 동작, 출력 무결성으로 나눠 운영할 수 있다.
빌드 아티팩트 단계에서는 바이너리의 SBOM(Software Bill of Materials)을 요구하고 SLSA(Supply-chain Levels for Software Artifacts) 프레임워크 수준 3 이상 달성 여부를 확인한다. Claude Code는 Node.js 기반 CLI로 배포되므로 npm audit, syft, grype를 조합해 의존성 취약점을 스캔한다.
런타임 단계에서는 도구 프로세스의 네트워크 연결을 실시간으로 추적한다. tcpdump 또는 eBPF 기반 도구로 공식 API 엔드포인트 외부 통신 여부를 감시하고, DNS 쿼리 패턴을 분석해 알려지지 않은 도메인으로의 데이터 유출을 탐지한다.
출력 무결성 단계에서는 같은 프롬프트를 여러 엔드포인트로 보내고 응답을 바이트 수준에서 비교한다. 통계적으로 유의미한 차이가 반복되면 워터마킹이나 출력 조작을 의심해야 한다.
도입 전 확인할 투명성 기준
| 항목 | 검증 방법 | 합격 기준 |
|---|---|---|
| 시스템 프롬프트 공개 여부 | 공식 문서 또는 소스코드 확인 | 전체 공개 또는 해시 서명 제공 |
| 인쇄 불가 문자 포함 여부 | 바이트 스트림 Unicode Cf 카테고리 스캔 | 정당한 용도 외 0건 |
| 프롬프트 버전 관리 | 변경 이력 공개 여부 | 투명성 로그 또는 공개 채인저로그 존재 |
| 조건부 동작 여부 | 다양한 지역/환경에서 동일 요청 비교 | 지역 무관 동일 응답 보장 |
| 제3자 감사 이력 | 독립 보안 감사 보고서 | 최근 12개월 내 외부 감사 완료 |
시스템 프롬프트, API 클라이언트 코드, 데이터 처리 로직은 공개 소스로 감사할 수 있어야 한다. 완전한 소스 공개가 어렵다면 시스템 프롬프트의 암호화 해시와 서명만큼은 공개해야 한다.
데이터 레지던시도 별도 확인 대상이다. 코드, 프롬프트, 응답 데이터가 조직의 데이터 거버넌스 정책에 맞는 지역에서 처리되고 저장되는지 검토하고, 계약서에는 데이터 레지던시 조항을 명시하도록 요구한다.
모델 버전, 시스템 프롬프트, API 동작이 바뀔 때 사전 공지를 받을 수 있는지도 중요하다. 조용한 동작 변경(silent behavior change)은 공급망 위협과 동일하게 다뤄야 한다.
인시던트 대응 이력 역시 평가해야 한다. 이번 Claude Code 워터마킹 사건에서 Anthropic이 탐지 후 즉시 제거하고 공식 입장을 발표한 점은 긍정적이지만, 사전 고지 없이 기능이 존재했다는 점은 신뢰 손상 요인이다.
CLI 도구별 공급망 투명성 차이
2026년 현재 주요 AI 코딩 CLI 도구의 공급망 보안 투명성은 다음과 같이 비교된다.
| 항목 | Claude Code | Codex CLI | Antigravity CLI |
|---|---|---|---|
| 시스템 프롬프트 공개 | 부분 공개 (해시 미제공) | 오픈소스 (GitHub 공개) | 부분 공개 (엔터프라이즈 전용 감사) |
| 워터마킹 이력 | 있음 (즉각 제거) | 미확인 | 없음 (공식 발표 기준) |
| 지오펜싱 동작 | 있었음 (제거됨) | 없음 | 없음 |
| SBOM 제공 | 미제공 | 제공 (npm package.json 기반) | 부분 제공 |
| 외부 보안 감사 | Cure53 (2025) | 없음 (자체 감사) | SOC 2 Type II |
| 데이터 레지던시 옵션 | AWS US/EU 선택 | Azure 다중 지역 | GCP 멀티 리전 |
| 인시던트 공개 정책 | 이번 사건으로 정책 수립 중 | 공식 정책 미수립 | Bug Bounty 프로그램 운영 |
Codex CLI는 완전 오픈소스여서 시스템 프롬프트 조작 위험은 낮지만, 의존성 공급망 공격(dependency confusion, typosquatting)에 노출될 가능성은 있다. 2026년 기준 npm 생태계에서는 @openai/codex 패키지를 사칭한 악성 패키지가 2건 발견된 바 있다.
Antigravity CLI는 Google DeepMind 기반이며, 엔터프라이즈 계약 고객에게만 시스템 프롬프트 감사권을 주는 계층화 투명성 모델을 사용한다. 대기업에는 적합하지만 스타트업이나 개인 개발자에게는 검증 수단이 제한된다는 한계가 있다.
Claude Code는 이번 사건을 계기로 시스템 프롬프트 투명성 로드맵을 발표했다. 2026년 3분기까지 시스템 프롬프트 해시 서명을 공개하고, 4분기까지 실시간 투명성 대시보드를 제공하는 것이 목표다.
바이너리 역공학으로 발견된 Claude Code 워터마킹과 달리, Codex CLI는 소스코드가 공개돼 코드 수준의 리뷰로 이상 동작을 확인할 수 있다. 이는 오픈소스 AI 도구가 폐쇄형 도구보다 공급망 보안에서 구조적 우위를 가질 수 있음을 시사한다.
AI 코딩 도구는 생산성 도구인 동시에 개발 조직의 보안 공격 표면(attack surface)이다. 시스템 프롬프트의 투명성, 지오펜싱 없는 일관된 동작, 독립적인 공급망 감사 체계는 도구 선정의 필수 기준이 되어야 한다. 기능과 성능 평가에 더해 다층 보안 감사 파이프라인을 운영해야 공급망 위협에 선제적으로 대응할 수 있다.
Sources
- https://www.wired.com/story/anthropic-claude-code-watermarking-discovery-2026/ — Claude Code 워터마킹 발견 최초 보도
- https://www.unicode.org/reports/tr36/ — Unicode Security Considerations (공식 유니코드 컨소시엄 보안 권고)
- https://slsa.dev/spec/v1.0/ — SLSA 공급망 보안 프레임워크 공식 사양
- https://security.googleblog.com/2026/03/ai-tool-supply-chain-integrity.html — Google Security Blog: AI 도구 공급망 무결성 가이드라인
- https://anthropic.com/transparency-roadmap-2026 — Anthropic 시스템 프롬프트 투명성 로드맵 공식 발표
- https://owasp.org/www-project-top-ten/ — OWASP Top 10: AI 도구 관련 보안 위협 분류
- https://github.com/openai/codex/blob/main/SECURITY.md — Codex CLI 공식 보안 정책 문서