애플리케이션 보안 회사인 Apiiro의 새로운 연구에 따르면 Anthropic의 Claude Code에서 가장 편리한 버튼인 "예, 다시 묻지 마세요"가 조용히 자격 증명 유출 기계로 변했다고 합니다. 개발자가 비밀이 포함된 명령을 승인하면 Claude Code는 비밀이 포함된 정확한 명령을 공개 GitHub 리포지토리에 자주 커밋되는 로컬 설정 파일에 저장합니다. Apiiro의 스캔 결과 1,994개의 공개 저장소에 있는 2,539개의 실제 비밀인 데이터베이스 비밀번호, 클라우드 API 키, 토큰 및 SSH 루트 로그인이 63개 조직(대부분 소프트웨어 회사)에 퍼져 있음을 발견했습니다. 영향을 받은 한 회사는 노출된 키가 활성화되어 있음을 연구원들에게 확인했습니다. 이는 User-Agent 헤더를 통한 도구의 웹사이트에 사용자 이메일 공개에 이어 이번 달 두 번째 Claude Code 개인 정보 보호 사건이며, 이번 사건은 연락처 세부 정보뿐만 아니라 생산 인프라에도 영향을 미칩니다. 우리는 AI 도구 범위에서 AI 코딩 에이전트 보안을 면밀히 따릅니다.

권한 규칙이 누출되는 방식

이 메커니즘은 셸 명령을 실행하기 전에 승인을 요청하는 Claude Code 권한 시스템의 부작용입니다. 종종 세션당 여러 번 발생합니다. 에이전트에게 데이터베이스 연결을 디버깅하거나 내부 API를 호출하도록 요청하면 에이전트가 제안하는 명령은 해당 작업에 필요한 모든 자격 증명을 전달합니다. 왜냐하면 에이전트가 없으면 작동할 수 없기 때문입니다.

"예, 다시 묻지 않음"을 선택하면 Claude Code가 명령을 실행하고 프로젝트 폴더 내의 `.claude/settings.local.json`에 권한 규칙을 작성합니다. 규칙은 추상화가 아닙니다. 전체 명령 문자열 자체이며 일반 텍스트로 입력된 비밀번호 등입니다.

파일은 개발자의 컴퓨터에 유지되도록 설계되었으며 Claude Code는 해당 파일을 개발자의 전역 git 무시 목록에 추가하여 파일을 보호하려고 합니다. 이는 일반적인 경우를 다루지만 극단적인 경우는 아닙니다. 나중에 저장소가 되는 폴더, 전역 무시가 존재하지 않는 다른 시스템의 복제 또는 무시 항목이 추가되기 전에 누군가 커밋한 파일입니다. 결정적으로 규칙은 저장소 자체 `.gitignore`에 적용되지 않으므로 보호 기능이 프로젝트와 함께 이동하지 않습니다.

문제를 더욱 복잡하게 만드는 Claude Code는 종종 파일 자체를 커밋합니다. Apiiro가 실제 비밀을 추적한 1,105개 저장소 중 539개에서 Claude가 공동 작성한 커밋이 설정 파일을 변경했습니다. 즉, Sonnet 4.5에서 Opus 5.5에 이르는 모델 이름을 지정하는 커밋입니다. Apiiro는 이 동작이 모델의 동작이 아니라 Claude Code 자신의 동작이라고 지적합니다. 회사는 Opus 5.5와 Fable 5.1을 모두 사용하여 이를 재현했습니다.

노출 규모

Apiiro는 GitHub에서 '.claude/settings.local.json'의 공개 복사본 104,185개를 계산했습니다. 그 중 1,122개에는 적어도 하나의 실제 비밀이 포함되어 있습니다. 연구원들은 저장소 git 기록, 팀이 의도적으로 커밋한 공유 'settings.json' 파일, 저장소에 체크인된 저장된 에이전트 채팅 기록에서 숨겨진 1,160개 이상의 비밀을 발견했습니다.

Apiiro 문서의 예는 최악의 사례 체크리스트처럼 읽혀집니다. 데이터베이스 공급업체는 클러스터 호스트와 함께 관리 액세스 권한이 있고 만료되지 않는 자체 관리자 수준 클라우드 API 키를 공개했습니다. B2B 스타트업에서 프로덕션 Azure Postgres 암호가 유출되었습니다. 소프트웨어 대행사가 Square 프로덕션 액세스 토큰을 공개했습니다. 의료 기록 애플리케이션을 구축하는 IT 서비스 회사가 해당 데이터베이스의 소유자 비밀번호를 유출했습니다. 오픈 소스 프로젝트는 그다지 나아지지 않았습니다. 별이 1,000개가 넘는 프로젝트는 OpenAI 형식 API 키를 게시했고, 다른 프로젝트는 npm 토큰을 게시했습니다.

보안 상황으로 인해 결과가 더욱 악화됩니다. 자격 증명 도용 악성 코드는 이미 개발자 컴퓨터를 대량으로 휩쓸고 있습니다. Apiiro는 피해자의 파일에 대해 TruffleHog 스캐너를 실행한 Shai-Hulud npm 웜을 지적합니다. 동일한 스캐너는 Apiiro가 발견한 유출 파일 1,122개 중 643개에 플래그를 지정합니다. 더 걱정스러운 부분은 잔여물입니다. 유출된 파일 중 5개 중 1개는 TruffleHog나 gitleaks에 의해 플래그가 지정되지 않았습니다. 일반적으로 비밀은 인식 가능한 토큰 형식의 키가 아니라 명령 내에 입력된 비밀번호이기 때문입니다. 즉, 비밀 스캐너는 구조적으로 이러한 누출 등급을 인식하지 못합니다.

영향을 받은 팀이 해야 할 일

Apiiro의 교정 지침은 폭발 반경 범위를 지정하는 것부터 시작됩니다. GitHub 조직에서 `.claude/settings.local.json` 및 `.claude/settings.json`을 검색하세요. 모든 히트는 누구나 지금 바로 읽을 수 있는 파일입니다. 파일이 삭제된 경우에도 각 저장소의 git 기록을 확인하세요. 모든 포크와 클론은 기록에 포함된 모든 것을 보존하기 때문입니다. 그런 다음 모든 개발자 컴퓨터의 로컬 복사본을 감사합니다. 허용 목록의 각 항목은 입력된 내용과 함께 누군가 승인한 명령입니다.

회사의 주문이 중요합니다. 먼저 회전하고 두 번째로 정리. 저장소에서 파일을 삭제해도 이미 공개된 자격 증명에는 아무런 영향이 없으며 git 기록은 노출된 비밀을 무기한 유지합니다.

일회성이 아닌 패턴

Anthropic의 경우 Claude Code가 User-Agent 헤더를 통해 방문한 모든 웹사이트에 사용자 이메일 주소를 유출한 지 일주일 후에 발견이 이루어졌습니다. 비평가들은 이를 반창고라고 부르는 개인 정보 보호 수정 사항을 제공하여 수정된 버그입니다. 두 사건은 근본 원인을 공유합니다. 즉 자격 증명, 연락처 세부 정보, 내부 호스트 이름과 같은 강력한 컨텍스트를 처리하고 해당 컨텍스트가 이동하는 위치에 대한 기본 결정을 내리는 에이전트입니다.

이 수업은 Claude Code를 넘어서 일반화됩니다. 코딩 에이전트가 표준 장비가 되면서 이들이 스스로 정리하기 위해 작성한 파일은 소프트웨어 공급망에서 스캔되지 않는 새로운 부분이 되고 있습니다. Apiiro의 수치는 코너가 이미 대부분의 조직에서 측정을 시작하지 않은 규모로 누출되고 있음을 시사합니다.

AI보다 앞서 나가세요

AI 도구는 안전 검토가 따라잡을 수 있는 것보다 더 빠르게 출시되고 있습니다. AI 뉴스 보도에서 모든 개발 상황을 확인하세요.

AI 뉴스 자세히 보기 →