Anthropic의 Claude Code는 개발자가 프로젝트 안에서 AI가 생성한 셸 명령을 실행할 수 있게 해주는 도구다. 사용자가 “예, 다음부터는 묻지 않기”를 누르면 승인 내용이 .claude/settings.local.json이라는 로컬 파일에 저장된다. 이 파일에는 실행 명령이 그대로 담기며, 여기에는 데이터베이스 비밀번호, API 토큰 또는 다른 인증 정보가 포함될 수 있다. Anthropic의 문서에 따르면 이 파일은 전역 .gitignore에 추가되므로 개발자 컴퓨터에만 남아 있어야 한다.
Apiiro 연구진은 .gitignore 항목이 저장소 자체에는 적용되지 않는다는 사실을 발견했다. 설정 파일이 든 폴더를 나중에 Git 저장소로 만들거나 Claude Code가 직접 파일을 커밋하면 민감한 정보가 GitHub에 올라갈 수 있다. Apiiro가 공개 GitHub 저장소를 조사한 결과 해당 파일이 10만 건 넘게 발견됐고, 그중 약 1,100개에는 실제 비밀정보가 들어 있었다. 이 정보는 63개 조직에서 유출됐으며 공개 API 토큰, 데이터베이스 비밀번호, 개인 키 등이 포함됐다.
파일이 공개되고 나면 주 저장소에서 삭제해도 포크나 캐시된 사본에서는 지워지지 않는다. 따라서 저장소를 복제하거나 기록을 살펴보는 사람은 여전히 유출된 인증 정보를 확인할 수 있다. 연구진은 유출된 키가 아직 유효하다면 공격자가 데이터베이스, 클라우드 서비스 또는 내부 시스템에 접근할 수 있다고 경고했다.
유출이 중요한 이유
이번 발견은 개발자가 코드를 커밋하기 전에 어떤 파일이 추적 대상인지 꼼꼼히 확인해야 한다는 점을 보여준다. 전역 .gitignore에만 의존해서는 안 되며, 각 저장소에 .claude/settings.local.json을 제외하는 자체 .gitignore를 둬야 한다. 조직은 노출됐을 가능성이 있는 인증 정보도 교체하고, 저장소에서 유사한 파일이 있는지 검사해야 한다.
왜 중요한가
개발자는 Claude Code를 사용하면서 자신도 모르게 인증 정보를 노출해 서비스에 대한 무단 접근을 초래할 수 있다. 조직은 저장소를 점검하고 설정 파일을 민감 정보로 취급해야 한다. 이를 각 프로젝트의 .gitignore에 추가하고 유출된 키는 교체해야 한다.