보안 업체 ProjectDiscovery가 오픈 모델에 백도어를 심고 Codex CLI에 연결해 돌려 본 실험을 공개했다. 이 모델은 평소에는 정상적으로 일하다가 미리 정한 문구가 들어오면 프로젝트의 더미 자격 증명을 외부 수집기로 보냈다. 실험은 거부 기능을 제거한 모델(abliteration)의 유통을 계기로 시작했지만, 다루는 위험은 출처를 검증하지 않은 가중치 전반이다.
- 학습 방식: Qwen2.5-7B-Instruct에 QLoRA 어댑터를 붙였다. 정상 샘플 500개와 오염 샘플 125개로, 오염 샘플은 사용자 메시지 끝에 트리거 문구를 붙이고 정상
exec_command호출을 원격 페이로드 실행 호출로 바꿨다. - 페이로드 분리: 악성 동작은 모델이 아니라
raw.githubusercontent.com의 파일에 있다. 모델에는 그 URL을 가리키는 포인터만 남는다. 실험에서는 무해한 확인용 파일을 한 번 실행한 뒤 파일만 바꿔 탈취 동작으로 전환했다. 재학습은 필요 없었다. - 탐지의 어려움: 1.5B 모델에서는 학습 데이터의 1%인 15개만 오염시켜도 트리거 발동률이 75~98%였고, 정상 도구 호출 정확도는 99~100%였다. 7B Codex 구성에서는 트리거 50건과 정상 50건 모두 100%였다.
- 유출 대상과 비용: 페이로드는 작업 디렉터리의
.env계열 파일과 홈 디렉터리의 SSH 개인키를 전송하도록 짜였다. L4 GPU 한 대로 7B 학습에 약 2.5시간, 약 8달러가 들었고 전체 실험 비용은 50달러 미만이다. - 배포 환경: 모델 허브에서는 이미 악성 모델 사례가 여러 차례 보고됐다. 글은 기존 연구 네 편이 모델이 커질수록 공격이 어려워진다는 근거를 찾지 못했다고 정리한다.
개발자·실무자 관점
가장 실용적인 대목은 방어 위치다. 가중치 차이를 분석하거나 트리거를 역공학할 수 있는 팀은 드물고, 벤치마크는 능력만 보여 줄 뿐 숨은 동작이 없다는 증거가 되지 못한다. 그래서 글은 모델이 닿을 수 있는 범위를 줄이라고 권한다. 네트워크 접근과 명령 실행을 분리하고, 둘 다 샌드박스에서 돌리고, 경계를 넘는 활동을 기록하라는 것이다. 신뢰 도메인 허용 목록은 이번 사례에서 소용이 없었다. 페이로드가 흔히 허용하는 GitHub 도메인에 있었기 때문이다. 로컬 모델로 코딩 에이전트를 붙여 쓰는 팀이라면 에이전트 실행 환경에서 .env와 SSH 키가 보이는지부터 점검해 볼 만하다.
주의할 점도 있다. 이 실험은 연구자가 직접 학습시키고 직접 서빙한 구성이라, 실제 허브에서 이런 모델이 얼마나 퍼져 있는지는 보여 주지 않는다. 원문 댓글에서는 문제가 거부 기능 제거 자체보다 신뢰할 수 없는 모델 파일에 있다는 지적도 나왔다. 외부 모델을 받을 때는 게시자, 학습 데이터 문서화, 기본 모델 대비 변경 내역을 낯선 사람의 풀 리퀘스트처럼 따져 보라는 권고가 이 맥락에서 가장 현실적이다.
원문: 거부 기능을 제거한 모델이 해킹의 통로가 될 수 있는 이유 (GeekNews)