보안 연구소 AIR가 AI 코딩 에이전트 생태계 최초의 공급망 취약점 'Plugin4Shell'을 9월 17일 공개했다. 플러그인을 검증된 버전에 묶어두는 SHA 고정(pinning)을 우회해, 이미 설치돼 있고 신뢰받던 플러그인에 악성 코드를 밀어넣는 제로클릭 원격코드실행(RCE)이다. 클로드 코드·코덱스·깃허브 코파일럿·제미나이 CLI 네 개 주요 에이전트가 모두 같은 결함을 공유했다. 앤트로픽(클로드 코드)과 OpenAI(코덱스)는 패치를 내놨지만, 마이크로소프트 코파일럿은 아직 패치가 없고 구글은 제미나이 CLI를 아예 폐기(deprecate)하는 방향을 택했다.

보안 연구소 AIR는 9월 17일(현지시간) AI 코딩 에이전트를 겨냥한 제로클릭 원격코드실행 취약점 'Plugin4Shell'을 공개했다. 연구진은 이를 "AI 에이전트 생태계 최초의 공급망 취약점"이라고 규정했다. 핵심은 이렇다 — 마켓플레이스에서 플러그인을 설치해 쓰는 개발자라면, 신뢰하는 마켓플레이스에서 검토를 거쳐 정상적으로 고정(pin)해둔 플러그인 하나만 깔려 있어도 노출된다. 부주의하게 아무 플러그인이나 설치한 사용자에게만 해당하는 문제가 아니라는 뜻이다.

SHA 고정이 왜 뚫렸나

플러그인 'SHA 고정(pinning)'은 설치된 플러그인을 검토를 통과한 특정 버전의 코드에 묶어두는 장치다. 한 번 리뷰를 통과하면 개발자 모르게 코드가 바뀌지 못하도록 하는 것이 원래 취지다. Plugin4Shell은 바로 이 고정 장치를 무력화한다.

AIR에 따르면 네 개 에이전트 모두 고정된 커밋을 체크아웃하면서도 실제로 그 커밋 위치에 코드가 안착했는지를 검증하지 않았다. 공격자는 이 빈틈을 이용해 고정 표시는 그대로 유지된 것처럼 보이게 하면서 악성 코드를 바꿔치기할 수 있다. 연구진은 이를 "플러그인 SHA 고정 우회"라고 부른다. 클로드 코드·코덱스·깃허브 코파일럿은 깃(git)이 브랜치 이름을 다루는 방식과 얽힌 한 가지 형태를 공유하고, 제미나이 CLI는 고정 커밋을 가져와 체크아웃하는 별도 방식을 통해 노출됐지만 결과는 같다.

취약점 이름 Plugin4Shell (플러그인 SHA 고정 우회)
영향 대상 클로드 코드 · 코덱스 · 깃허브 코파일럿 · 제미나이 CLI
공개일 2026년 9월 17일 (AIR)
최초 발견 2026년 5월, 이후 각 벤더에 비공개 제보
유형 제로클릭 원격코드실행(RCE) · 공급망 공격

'제로클릭'인 이유

이 결함이 위험한 것은 "모든 것을 제대로 한" 사용자에게까지 도달하기 때문이다. AIR는 "설치 시점만의 문제가 아니며, 바로 그 점이 제로클릭인 이유"라고 설명했다. 클로드 코드와 코덱스에서 기본값인 백그라운드 자동 업데이트가 돌 때 동일한 git 체크아웃이 다시 실행되기 때문에, 마켓플레이스가 고정 SHA를 갱신하는 순간 사용자가 아무 조작을 하지 않아도 이미 설치된 플러그인에까지 바꿔치기가 전달된다는 것이다.

다만 조건이 있다. AIR는 "브랜치 이름을 해시처럼 지을 수 있는 곳에서만 성립한다"고 밝혔다. 이는 git의 기본 동작이지만, 일부 호스트는 이를 금지한다. 깃허브는 40자리 16진수 형태의 브랜치 이름을 아예 거부하는 반면, 비트버킷을 비롯한 일부와 자체 호스팅 git 서버는 이를 허용한다.

공격자는 어떻게 들어오나

AIR는 두 가지 침투 경로를 제시했다. 첫째, 공격자가 광고한 그대로 정상 작동하는 플러그인을 배포해 리뷰를 통과시키고 사용자를 확보한 뒤, 나중에 악성으로 전환하는 방식이다. 연구진은 앞선 연구에서 자신들이 만든 플러그인이 회수되기 전까지 2만 6,000개가 넘는 에이전트에 퍼진 사례로 이 접근이 실제 가능함을 보였다고 밝혔다.

둘째, 남이 이미 만들어 사용자들이 신뢰하는 플러그인의 저장소를 탈취한 뒤 같은 우회 기법으로 악성 코드를 모두에게 배포하는 방식이다. AIR는 이를 'SkillJacking'이라 부르는 별도 연구에서, 이미 활발히 쓰이던 925개 스킬이 원 관리자로부터 탈취돼 13만 4,000개 에이전트에 도달한 정황을 확인했다고 설명했다. 연구진은 "탈취는 대규모로 일어나고, Plugin4Shell은 그것을 막기 위해 만들어진 장치를 무력화한다"며 공격 사슬이 처음부터 끝까지 입증됐다고 평가했다.

벤더별 대응은 엇갈렸다

에이전트 안에서 검증이 이뤄지는 구조이기 때문에, AIR는 어떤 마켓플레이스도 단독으로 보호를 보장할 수 없다고 지적했다. 결국 각 벤더가 에이전트 자체를 고쳐야 하며, 패치가 나온 곳에서는 업데이트만이 완전한 해결책이다.

제품 벤더 대응 상태
클로드 코드 (Claude Code) 앤트로픽 버전 2.1.179에서 패치
코덱스 (Codex) OpenAI 버전 0.146.0에서 패치
깃허브 코파일럿 (GitHub Copilot) 마이크로소프트 패치 미출시
제미나이 CLI (Gemini CLI) 구글 폐기(deprecate) — 신규 에이전트 Antigravity로 이전 권고

구글은 제미나이 CLI를 패치하는 대신 폐기하는 쪽을 택했는데, 이는 기존 설치본이 사실상 무기한 노출 상태로 남는다는 것을 의미한다. 구글은 해당 사용자들에게 이 공격이 기대는 플러그인 고정 방식을 아예 없앤 신규 에이전트 Antigravity로 이동하라고 안내했다.

지금 취할 수 있는 조치는 분명하다. 클로드 코드는 2.1.179 이상, 코덱스는 0.146.0 이상으로 즉시 업데이트하라. 코파일럿·제미나이 CLI 사용자는 패치가 없으므로, 설치된 플러그인·스킬의 출처와 권한을 재점검하고 자동 업데이트 노출을 최소화하는 것이 안전하다.

의미와 전망

Plugin4Shell는 AI 코딩 에이전트가 개발자의 로컬 소스·클라우드 자격증명·SSH 키·내부 저장소 같은 권한을 그대로 물려받는다는 사실을 정면으로 드러냈다. 편의를 위한 플러그인·스킬 마켓플레이스가 곧 새로운 공급망 공격 표면이 된 셈이다. '고정해두면 안전하다'는 전제가 무너진 이상, 에이전트 벤더는 체크아웃 결과 검증을 기본으로 삼아야 하고, 사용자는 설치한 확장의 신뢰 사슬을 코드처럼 관리해야 하는 시대로 접어들고 있다.

AI 에이전트에 부여하는 권한은 '사람 개발자에게 주는 권한'과 동일선상에서 다뤄야 한다. 편의성 위주로 확장을 늘릴수록 공격 표면도 함께 커진다는 점을 이번 사례가 상기시킨다.
출처 (공식·1차 자료 / 보도·해설 구분)
· [공식·1차] AIR — Plugin4Shell 취약점 공식 공개 (연구 원문)
· [보도·해설] Help Net Security — 네 개 AI 코딩 에이전트를 강타한 제로클릭 RCE
· [보도·해설] The Hacker News — 저장소 소유자가 고정 코드를 바꿔치기하게 만든 Plugin4Shell
· [보도·해설] Cybersecurity News — Plugin4Shell 제로클릭 RCE 상세
  • AIR가 AI 코딩 에이전트 생태계 '최초의 공급망 취약점' Plugin4Shell을 9월 17일 공개
  • 플러그인 SHA 고정을 우회, 이미 설치된 플러그인에 악성 코드를 밀어넣는 제로클릭 RCE
  • 클로드 코드·코덱스·깃허브 코파일럿·제미나이 CLI 네 개 에이전트가 모두 영향권
  • 백그라운드 자동 업데이트로 사용자 조작 없이 전파 — 단, 브랜치를 해시처럼 지을 수 있는 호스트에서만 성립
  • 앤트로픽(2.1.179)·OpenAI(0.146.0) 패치 완료, 코파일럿은 미패치·제미나이 CLI는 폐기