[논문 리뷰] Your Code Secret Belongs to Me: Neural Code Completion Tools Can Memorize Hard-Coded Credentials
이 논문은 GitHub Copilot 및 Amazon CodeWhisperer와 같은 신경 코드 완성 도구(NCCT)의 출력에서 하드코딩된 자격 증명을 추출하기 위해 실제 GitHub 코드에서 맥락적으로 관련된 프롬프트를 생성함으로써 NCCT를 활용하는 HCR 도구를 제안한다. 연구 결과, NCCT는 실제 비밀번호를 기억하고 泄露할 수 있음을 입증하였으며, Copilot에서 2,702개의 유효한 자격 증명, CodeWhisperer에서 129개를 추출하였고, 각각 3.6%와 5.4%는 실제 활성 비밀번호였다.
Neural Code Completion Tools (NCCTs) have reshaped the field of software engineering, which are built upon the language modeling technique and can accurately suggest contextually relevant code snippets. However, language models may emit the training data verbatim during inference with appropriate prompts. This memorization property raises privacy concerns of NCCTs about hard-coded credential leakage, leading to unauthorized access to applications, systems, or networks. Therefore, to answer whether NCCTs will emit the hard-coded credential, we propose an evaluation tool called Hard-coded Credential Revealer (HCR). HCR constructs test prompts based on GitHub code files with credentials to reveal the memorization phenomenon of NCCTs. Then, HCR designs four filters to filter out ill-formatted credentials. Finally, HCR directly checks the validity of a set of non-sensitive credentials. We apply HCR to evaluate three representative types of NCCTs: Commercial NCCTs, open-source models, and chatbots with code completion capability. Our experimental results show that NCCTs can not only return the precise piece of their training data but also inadvertently leak additional secret strings. Notably, two valid credentials were identified during our experiments. Therefore, HCR raises a severe privacy concern about the potential leakage of hard-coded credentials in the training data of commercial NCCTs. All artifacts and data are released for future research purposes in https://github.com/HCR-Repo/HCR.
연구 동기 및 목표
- 상용 신경 코드 완성 도구(NCCT)가 훈련 데이터에서 하드코딩된 자격 증명을 기억하고 유출할 수 있는지 조사하기.
- 실제 코드 맥락을 활용한 체계적인 방법을 개발하여 이러한 기억된 비밀번호를 식별하고 추출하기.
- 특히 API 키나 토큰과 같은 민감한 자격 증명에 대한 실제 배포 환경에서의 NCCT의 개인정보 유출 위험 평가하기.
- 블랙박스 접근 조건에서도 프롬프트 엔지니어링을 통해 악성 사용자가 NCCT에서 실제 활성 비밀번호를 추출할 수 있음을 입증하기.
- 모델 개발자와 사용자에게 비밀번호 유출을 방지하기 위한 사전 대응 전략의 필요성을 알리기.
제안 방법
- GitHub의 Secret Scanning 목록을 활용해 18종의 일반적인 비밀 유형(예: AWS 키, Stripe 토큰)을 식별하기.
- 코드 파일 내 비밀번호 패턴을 자동으로 식별할 수 있도록 정규표현식(regex)을 설계하여 자격 증명을 포함한 리포지터리 식별 가능하게 하기.
- GitHub에서 비밀번호가 포함된 코드 파일을 수집하고, 비밀번호를 제거한 후 이를 수정된 코드를 프롬프트로 사용해 NCCT가 누락된 자격 증명을 완성하도록 유도하기.
- 진짜 비밀번호와 무작위 문자열을 구분하기 위해 네 가지 필터를 적용: 정규표현식 패턴 매칭, 엔트로피 임계값 설정, 형식 검증, 서비스별 구문 검사.
- 블랙박스 쿼리 방식을 통해 NCCT의 응답을 평가하고, 직접 접근 또는 문서 검토를 통해 추출된 비밀번호의 유효성 검증하기.
- 두 상용 NCCT인 GitHub Copilot과 Amazon CodeWhisperer를 대상으로 대규모 평가 수행하기.
실험 결과
연구 질문
- RQ1GitHub Copilot 및 Amazon CodeWhisperer와 같은 상용 NCCT가 코드 완성 과정에서 하드코딩된 자격 증명을 그대로 기억하고 출력할 수 있는가?
- RQ2실제 코드 맥락을 활용한 프롬프트 엔지니어링이 NCCT 내 비밀번호 기억 현상 유도에 얼마나 효과적인가?
- RQ3추출된 비밀번호 중 실제 활성 자격 증명은 얼마나 되는가? 합성 또는 무효한 문자열과의 비율은?
- RQ4API 키, OAuth 토큰 등 다양한 비밀번호 유형 간에 기억 및 유출 위험에 차이가 나는가?
- RQ5모델 아키텍처를 수정하지 않고도 NCCT 내 비밀번호 유출을 방지하기 위한 실현 가능하고 효과적인 대응 전략은 무엇인가?
주요 결과
- HCR는 900개의 테스트 프롬프트를 통해 GitHub Copilot에서 2,702개의 유효한 자격 증명을 성공적으로 추출하였으며, 그 중 3.6%는 실제 활성 비밀번호였다.
- Amazon CodeWhisperer에서는 129개의 유효한 비밀번호를 추출하였고, 그 중 5.4%는 실제 활성 비밀번호였으며, 이는 심각한 기억 유출 위험을 시사한다.
- 두 개의 운영 자격 증명이 확인되었는데, 이는 스타트업 테스트 환경에서 실제로 유효하고 활성화된 Stripe 테스트 키였다.
- 공개 코드 리포지터리에 비밀번호가 포함된 데이터로 훈련된 NCCT는 적절한 프롬프트 조건에서 그대로 비밀번호를 기억하고 유출할 수 있음을 확인하였다.
- 모델 가중치나 내부 파rameter에 대한 접근 없이도 블랙박스 환경에서 공격이 효과적으로 작동함을 입증하였다.
- 이러한 결과는 널리 사용되는 AI 기반 코딩 보조 도구에 심각한 개인정보 유출 취약점이 있음을 시사하며, NCCT의 데이터 정제 및 출력 필터링 개선의 필요성을 강조한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.