
AI 코딩 에이전트 4종(Claude Code, Codex, GitHub Copilot, Gemini CLI)에서 클릭 한 번 없이 원격으로 시스템을 장악할 수 있는 취약점(RCE·원격 코드 실행)이 발견됐습니다. 공격자가 플러그인 마켓플레이스에 정상적인 플러그인을 올린 뒤 나중에 악성 코드로 교체하거나, 이미 인기 있는 플러그인의 저장소를 탈취해 악성 코드를 배포할 수 있습니다. 이 취약점은 "SHA 고정(pinning)"이라는 보안 장치를 우회하며, 사용자가 아무 행동을 하지 않아도 백그라운드 자동 업데이트 시점에 악성 코드가 설치됩니다. Anthropic(Claude Code)과 OpenAI(Codex)는 패치를 완료했으나, Microsoft(Copilot)는 아직 패치를 내놓지 않았고, Google은 Gemini CLI를 아예 폐기해 기존 사용자들이 계속 취약한 상태로 남아 있습니다. 기업 보안 담당자는 사용 중인 AI 코딩 에이전트 버전을 즉시 확인하고 업데이트해야 합니다.
보안 연구기관 AIR이 Claude Code, Codex, GitHub Copilot, Gemini CLI 4종에서 플러그인 SHA 고정 우회(Plugin4Shell) 취약점을 발견했다. 공격자는 마켓플레이스의 플러그인을 교체하거나 저장소를 탈취해 검토·설치된 플러그인에 악성 코드를 주입할 수 있다.
사용자가 신뢰하는 마켓플레이스의 플러그인을 설치했을 뿐인데도 제로클릭으로 RCE가 발생, 에이전트를 실행하는 직원과 동일한 권한으로 회사 시스템·데이터에 접근 가능하다. 앞서 유사 공격으로 26,000개 에이전트에 악성 플러그인이 배포됐고, 134,000개 에이전트에 연결된 925개 스킬이 이미 탈취된 사례도 확인됐다.
각 에이전트가 고정된 커밋을 체크아웃할 때 실제로 해당 위치에 도달했는지 검증하지 않으며, git의 브랜치 명명 규칙을 악용해 해시처럼 보이는 브랜치명으로 악성 코드를 스왑할 수 있다. 백그라운드 자동 업데이트(Claude Code·Codex 기본값)로 인해 이미 설치된 플러그인도 사용자 행동 없이 감염된다.
Anthropic은 Claude Code v2.1.179에서 패치 완료, OpenAI는 Codex v0.146.0에서 패치 완료. Microsoft(Copilot)는 아직 패치 미제공. Google은 Gemini CLI를 폐기하고 신규 에이전트 Antigravity로 이전을 권고했으나 기존 설치본은 계속 취약한 상태.
Claude Code 또는 Codex를 사용 중이라면 즉시 최신 버전으로 업데이트한다. GitHub Copilot 사용 조직은 Microsoft 패치 발표를 모니터링하고 그 전까지 플러그인 설치를 최소화한다. Gemini CLI는 더 이상 안전하지 않으므로 사용을 중단하고 대안을 검토한다. 자사 git 서버를 운영 중이라면 40자리 16진수 브랜치명 생성을 차단하는 정책 적용을 고려한다.
본문
4대 AI 코딩 에이전트인 Claude Code, Codex, GitHub Copilot, Gemini CLI 모두에서 동일한 제로클릭 RCE(원격 코드 실행) 취약점이 발견됐다고 AIR이 밝혔다. 이 취약점은 공격자가 에이전트를 실행하는 직원과 동일한 수준으로 기업의 시스템과 데이터에 접근할 수 있게 해준다.
"이것은 AI 에이전트 생태계 최초의 공급망 취약점입니다"라고 연구팀은 말했다.
"마켓플레이스에서 플러그인을 설치하는 주요 코딩 에이전트를 사용하는 사람은 누구나 노출되어 있습니다. 이 노출은 부주의하게 플러그인을 설치하는 사용자에게만 국한되지 않습니다. 피해자는 단지 신뢰하는 마켓플레이스에서 검토를 거쳐 보안 모델이 의도한 대로 정확히 고정(pinned)된 플러그인을 설치하기만 하면 됩니다"라고 연구팀은 덧붙였다.
고정(pinning) 우회 방식
Plugin4Shell이라 불리는 이 버그는 SHA 고정, 즉 설치된 플러그인을 검토된 특정 버전의 코드에 고정하기 위해 개발자들이 사용하는 메커니즘을 무력화한다. 고정이란 플러그인이 검토를 통과하면 개발자의 인지 없이는 변경될 수 없음을 의미한다.
버그의 핵심 동작 원리를 나타낸 다이어그램 (출처: AIR)
AIR 연구팀은 4개 에이전트 모두 고정된 커밋을 체크아웃할 때 해당 위치에 실제로 도달했는지 검증하지 않아, 공격자가 고정 상태가 그대로 유지되는 것처럼 보이는 상태에서 악성 코드를 삽입할 수 있음을 발견했다.
연구팀은 이를 "플러그인 SHA-고정 우회"라고 표현했다. Claude Code, Codex, GitHub Copilot은 git이 브랜치 이름을 처리하는 방식과 관련된 동일한 유형의 취약점을 공유한다. Gemini CLI는 고정된 커밋을 가져오고 체크아웃하는 방식의 별도 메커니즘을 통해 취약하지만 결과는 동일하다.
이 결함은 이미 모든 조치를 올바르게 취한 사람들에게도 영향을 미치기 때문에 위험하다.
"이는 설치 시점에만 발생하는 버그가 아닙니다. 바로 그 점이 제로클릭인 이유입니다. 동일한 git 체크아웃이 백그라운드 자동 업데이트(Claude Code와 Codex의 기본값) 시에도 재실행되므로, 마켓플레이스가 고정된 SHA를 변경하면 사용자 행동 없이 이미 설치된 플러그인에도 악성 코드가 전달됩니다."
"이는 브랜치 이름이 해시처럼 지정될 수 있는 경우에만 작동합니다. 그것이 git의 기본 동작이지만 일부 호스트는 이를 금지합니다. GitHub는 40자리 16진수 브랜치 이름을 완전히 거부하는 반면, Bitbucket을 비롯한 자체 호스팅 git 서버들은 허용합니다"라고 AIR은 설명했다.
공격자가 침투하는 두 가지 경로
첫 번째 방법에서 공격자는 광고된 대로 정상 작동하는 플러그인을 배포한다. 검토를 통과하고 사용자들이 채택한 이후에야 공격자가 악성으로 전환한다. AIR은 이 방식이 효과가 있음을 이전 연구에서 이미 입증했으며, 당시 자체 제작한 플러그인이 차단되기 전에 26,000개 이상의 에이전트로 확산됐다고 밝혔다.
두 번째 방법에서 공격자는 다른 사람이 이미 작성했고 사용자들이 신뢰하는 플러그인의 저장소를 탈취한 뒤, 동일한 우회 기법을 사용해 설치한 모든 사용자에게 악성 코드를 배포한다. AIR은 이 같은 탈취 방식을 SkillJacking이라 명명한 별도 연구에서 이미 사용 중인 925개 스킬이 원래 유지관리자로부터 탈취되어 134,000개 에이전트에 영향을 미쳤음을 확인했다.
"두 방식을 합치면 공격 체인이 종단 간(end-to-end)으로 입증됩니다. 탈취는 대규모로 발생하고, Plugin4Shell은 이를 막기 위해 구축된 메커니즘을 무력화합니다."
제조사별 엇갈린 대응
AIR은 2026년 5월에 4개 에이전트 모두에 대한 작동하는 개념 증명(PoC) 익스플로잇과 함께 이 버그를 발견했으며, 이듬달에 각 제조사에 공개했다.
검사가 마켓플레이스가 아닌 에이전트 내부에서 실행되므로, AIR은 어떤 마켓플레이스도 단독으로 보호를 보장할 수 없다고 밝혔다. 연구팀은 취약점을 해소하려면 각 제조사가 에이전트 자체에서 이를 수정해야 하며, 패치가 존재하는 경우 업데이트가 유일한 완전한 해결책이라고 지적했다.
Anthropic은 AIR의 공개 이후 Claude Code 버전 2.1.179에서 패치를 완료했다. OpenAI는 Codex 버전 0.146.0에서 패치했다. Copilot의 동일한 결함에 대해 통보받은 Microsoft는 아직 수정 사항을 배포하지 않아 사용자들이 패치 없이 노출된 상태로 있다.
Google은 더 나아가 Gemini CLI를 패치하는 대신 아예 폐기했으며, 이는 모든 기존 설치본이 무기한 취약한 상태로 남는다는 것을 의미한다. 해당 사용자들에 대한 Google의 권고는 이 공격이 의존하는 플러그인 고정 시스템 없이 구축된 신규 에이전트 Antigravity로 이전하는 것이다.
"Air Marketplace와 Air Filter를 사용하는 기업들은 Plugin4Shell의 영향을 받지 않았습니다"라고 연구팀은 결론 지었다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






