피드로 돌아가기
Dev.toSecurity
원문 읽기
Claude Code plugin credentials: what the new keychain storage does and doesn't do
Claude Code 2.1.83이 OS 기본 키체인(macOS Keychain, Windows Credential Manager)에 플러그인 자격증명을 저장하여 평문 파일 노출 제거 및 자식 프로세스 환경 변수 누출 차단
AI 요약
Context
플러그인이 API 키와 토큰 같은 자격증명을 구성 파일, .env, 또는 설정 JSON에 저장하면 Git 커밋, 백그라운드 프로세스 스크래핑, 또는 공유 머신에 평문으로 남을 위험이 있었다.
Technical Solution
- 플러그인 설치 시 OS 키체인에 자격증명 저장: macOS는 Keychain, Windows는 Credential Manager 사용하여 ~/.claude/settings.json이나 .env 파일 방식 제거
- CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1 활성화로 bash 도구, MCP stdio 서버, 훅 실행 시 자격증명을 부모 프로세스 환경에서 제거하여 자식 프로세스 상속 차단
- 플러그인 아키텍처 패턴 권장: 플러그인이 키체인에서 자격증명을 읽고 API 호출을 수행한 후 구조화된 데이터만 Claude에 반환하도록 설계하여 모델이 원본 자격증명을 절대 인식하지 않도록 함
- 제공자 수준의 제한된 API 키 생성: Stripe 예시에서 charges:read와 customers:read 권한만 부여하여 쓰기 작업 방지
- 플러그인 반환 데이터 정제: 고객 기록의 모든 필드가 아닌 id, amount, currency, created, status, description 같은 특정 필드만 구조화하여 프롬프트 주입 공격 면적 축소
Key Takeaway
키체인 저장소 자체만으로는 충분하지 않으며, 플러그인 코드 설계(쓰기 함수 없음), 제공자의 제한된 키(최소 권한 원칙), 키체인 보안(평문 파일 제거)의 세 계층 방어가 독립적으로 작동할 때 전체 시스템이 실질적인 보안을 달성한다.
실천 포인트
Claude Code 플러그인을 프로덕션 환경에서 구축할 때, 플러그인 매니페스트에 자격증명 요구사항을 선언하여 설치 시 키체인 저장을 유도하고, 환경 변수로 CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1을 활성화하며, API 제공자 대시보드에서 최소 권한 제한 키(예: Stripe의 charges:read, customers:read만)를 생성하고, 플러그인 함수에서 원본 API 응답 대신 필요한 필드만 추출한 구조화된 데이터를 반환하면 자격증명 노출 경로를 실질적으로 차단할 수 있다.