Clinejection: 프롬프트 인젝션과 Cline CLI 비인가 배포
Cline의 Issue 분류 에이전트가 발행 토큰 노출 경로를 만들었습니다. 이후 비인가 CLI 버전이 OpenClaw를 설치했지만, Cline은 사용자 데이터 유출 증거를 찾지 못했습니다.


목차(4)
2026년 2월 17일, 권한 없는 제3자가 유출된 npm 발행 토큰으로 cline@2.3.0을 배포했습니다. 이 패키지에는 OpenClaw를 전역 설치하는 postinstall 명령이 추가돼 있었습니다. Cline은 약 8시간 뒤 수정 버전 2.4.0을 배포하고 2.3.0을 사용 중지 처리했습니다. 영향 범위는 npm으로 배포된 CLI 패키지이며 VS Code·JetBrains 확장 프로그램은 해당하지 않습니다.
Cline이 확인한 내용
Cline은 문제 버전과 직전 배포물을 파일별로 비교했습니다. CLI 실행 파일과 다른 파일은 같았고, 주요 변경은 package.json에 추가된 postinstall 명령이었습니다. Cline은 OpenClaw를 정상 오픈소스 프로젝트로 설명하면서도 동의 없는 설치는 문제였다고 밝혔습니다. 조사에서는 사용자 데이터 접근·반출이나 악성 코드 전달 증거를 찾지 못했습니다. 다운로드 횟수를 침해된 PC 수로 바꾸어 말할 근거는 없습니다.
프롬프트 인젝션과 발행 토큰
앞서 발견된 취약점은 GitHub Issue를 분류하는 자동화에 있었습니다. 외부 사용자가 작성한 Issue 제목이 Bash 실행 권한을 가진 AI 에이전트의 입력으로 들어갔습니다. 보안 연구자 Adnan Khan은 Cline 저장소의 복제본에서 조작한 제목으로 에이전트가 공격자 지정 설치 명령을 실행할 수 있음을 보였습니다. 낮은 신뢰도의 분류 작업이 공유 캐시를 오염시키면, 나중에 더 큰 권한을 가진 야간 배포 작업이 이를 읽을 수 있다는 경로도 분석했습니다.
Khan은 1월 1일 문제를 신고하고 2월 9일 공개했습니다. Cline은 공개 직후 취약한 작업을 제거하고 발행 자격증명을 교체하기 시작했습니다. 다만 사후 보고서에 따르면 npm 토큰 교체 과정에서 다른 토큰을 삭제해 노출된 토큰이 살아 있었습니다. 제3자가 2월 17일 그 토큰으로 비인가 CLI 버전을 배포했습니다. Khan의 실험은 실제 Cline 저장소가 아닌 복제본에서 이뤄졌으므로, 연구자의 재현과 이후 제3자의 배포를 같은 행위로 서술해서는 안 됩니다.
사용자와 운영팀이 확인할 것
2월 17일 npm으로 Cline CLI를 설치했다면 cline --version으로 버전을 확인하세요. Cline은 2.3.0 사용자에게 수정 버전으로 업데이트하고, 의도하지 않은 OpenClaw 전역 설치가 있으면 제거하라고 안내합니다. 회사 발표에 따르면 VS Code·JetBrains 확장 프로그램 사용자는 이번 배포 사고의 영향 대상이 아닙니다.
CI에서 AI 에이전트를 운영한다면 외부 입력이 셸 실행으로 이어지는지, 낮은 신뢰도의 작업이 배포 작업과 캐시를 공유하는지, 폐기한 토큰이 실제로 더는 작동하지 않는지 확인해야 합니다. Cline은 분류 자동화와 발행 작업의 캐시 사용을 제거하고, 토큰을 폐기한 뒤 npm 발행을 OIDC 기반 출처 증명으로 옮겼습니다. 관리 화면의 상태만 보고 토큰 폐기를 완료했다고 판단하지 않는 것이 이 사건의 교훈입니다.
근거 자료
이어서 읽기
GhostAction 사고 분석: 악성 워크플로가 Git 이력의 키를 수집하는 방식
공개 워크플로 100개의 네 버전과 우버 저장소의 변경 기록을 대조했습니다. Git 이력에서 삭제된 키를 수집하는 경로, 전송 실패를 정상 종료로 처리하는 동작, 자격증명의 권한에 따른 대응 순서를 설명합니다.
90일 넘은 소스에 발견된 키: 확인해야 할 것
오래된 소스 기록과 활성 키만으로 키 수명을 알 수는 없습니다. 값이 들어온 시점과 발급처 상태, 권한, 연결 작업을 확인하세요.
MCP 서버의 API 키는 헤더가 아닌 대화창을 거쳐 전달됩니다
공식 MCP 레지스트리의 원격 서버마다 initialize 요청을 한 번씩 보냈습니다. 응답한 22,027곳 중 71.3%가 헤더 인증 없이 세션을 허용했고, 도구 인자로 전달되는 자격증명 필드는 3,705개였습니다. 그중 마스킹 대상으로 지정된 필드는 3개뿐이었습니다.
다음 글을 메일로 받아보세요
Cremit의 월간 자격증명 보안 브리프. 한 통에 핵심만 담습니다.