Claude Code의 "다시 묻지 않기", 공개 GitHub 파일 1,122개에 비밀번호 노출

2 days ago 6

Claude Code에서 "Yes, and don't ask again"을 선택하면 비밀정보가 포함된 명령어 전체가 프로젝트의 권한 설정 파일에 저장되며, 이 파일이 코드와 함께 커밋돼 자격증명이 노출될 수 있음 Apiiro는 공개 GitHub의 .claude/settings.local.json 104,185개 중 1,122개에서 비밀정보를 발견했으나, 자격증명의 실제 유효성은 시험하지 않음 Claude Code는 파일 생성 시 개발자의 전역 Git 제외 목록에만 등록함. 저장소 자체의 .gitignore에는 규칙이 없어, 나중에 Git 저장소가 된 폴더나 다른 기기의 복제본, 이미 추적 중인 파일은 보호하지 못함 명령어에 직접 입력된 비밀번호는 일반 비밀정보 탐지 도구가 놓치기 쉬움. 비밀정보가 있는 파일 1,122개 중 215개는 gitleaks와 TruffleHog 모두 탐지하지 못함 공개 저장소에 올라가지 않아도 로컬 평문 파일은 악성코드의 수집 대상이 될 수 있음. 노출된 자격증명은 파일 정리보다 먼저 교체하고, 명령어에는 실제 값 대신 환경변수를 참조해야 함 비밀정보가 권한 설정에 남는 과정 개발 환경의 설정 파일, 로컬 설치, .env에는 데이터베이스 연결 문자열, 클라우드 키, API 토큰이 들어 있음. Claude Code에 스테이징 로그인 장애 확인이나 마이그레이션을 요청하면 실행에 필요한 비밀정보가 명령어에 포함될 수 있음 셸 명령 실행 전 "Yes, and don't ask again"을 선택하면 명령을 실행하고, 같은 명령을 다시 묻지 않도록 .claude/settings.local.json에 명령어 문자열 자체를 권한 규칙으로 저장함 이는 모델이 아니라 Claude Code 자체의 동작이며, Apiiro는 Opus 5.5와 Fable 5.1에서도 재현함 Git 저장소 안에서 파일을 만들 때는 전역 Git 제외 목록에 추가하지만, 프로젝트와 함께 이동하는 저장소의 .gitignore에는 추가하지 않음 이후 Git 저장소가 되는 폴더, 다른 기기에서 복제한 저장소, 이미 커밋된 파일에는 이 보호가 적용되지 않음 비밀정보가 있는 저장소 중 추적한 1,105개 가운데 539개에서는 Claude가 공동 작성자로 기록된 커밋이 해당 파일을 변경함 커밋에는 Sonnet 4.5부터 Opus 5.5까지 최근 모델 이름이 나타남 노출 규모와 피해 조직 공개 GitHub의 103,617개 저장소에서 로컬 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵