무엇이 바뀌었나
확인 보안 연구업체 에어 시큐리티(Air Security)가 자체 발표한 내용에 따르면, 이 결함(연구진이 붙인 이름 Plugin4Shell)의 핵심은 "에이전트가 플러그인을 특정 커밋에 고정해 두고도, 실제로 받은 코드가 그 커밋이 맞는지는 검증하지 않는다"는 것이다. 저장소에 쓰기 권한이 있는 사람(플러그인 저장소 주인, 혹은 그 저장소가 뚫린 경우의 공격자)이 고정해 둔 커밋 해시와 이름이 같은 브랜치를 만들어 두면, 다음 업데이트 때 에이전트가 원래 커밋 대신 그 브랜치의 코드를 받아 실행한다. 클릭도, 승인도 필요 없다 — 플러그인이 다음에 갱신되는 순간 바로 걸린다.
확인
영향받은 코딩 에이전트는 클로드 코드, 오픈AI 코덱스, 깃허브 코파일럿, 제미나이 CLI
네 종이다. 제미나이 CLI는 방식이 조금 달라서, 고정된 커밋을 받아 온 뒤
FETCH_HEAD라는 이름을 그대로 체크아웃하는데, 저장소에
FETCH_HEAD라는 이름의 브랜치를 만들어 두면 그쪽으로 유도된다고 한다.
| 도구 | 패치 버전 | 패치일 | 비고 |
|---|---|---|---|
| Claude Code | 2.1.179 | 2026-06-17 | 수정됨 |
| OpenAI Codex | 0.146.0 | 2026-08-12 | 수정됨 |
| GitHub Copilot | - | - | 9월 17일 공개 시점까지 미수정 |
| Gemini CLI | - | - | 패치 없이 서비스 종료(Antigravity로 이전) |
확인 에어 시큐리티는 5월에 이 문제를 찾아 6월에 4개 회사(앤트로픽·오픈AI·마이크로소프트·구글)에 비공개로 알렸고, 석 달 넘게 대응할 시간을 준 뒤 9월 17일에 공개했다고 밝혔다. 즉 클로드 코드는 이미 6월 17일에 조용히 고쳐진 채로 석 달 넘게 지나 있었던 것이고, 이번 9월 공개는 "지금 막 뚫렸다"가 아니라 "그동안 뚫려 있었던 것이 공개됐다"는 쪽에 가깝다.
확인 플러그인은 보통 그 플러그인을 설치한 사람과 같은 권한으로 실행된다. 로컬 소스 코드, 클라우드 자격 증명, SSH 키, 내부 저장소·운영 시스템 접근 권한까지 플러그인이 그대로 쥘 수 있다는 뜻이다. "고정해 뒀으니 안전하다"는 전제가 깨졌을 때 파장이 작지 않은 이유다.
추정 제미나이 CLI는 이미 지난 6월 18일부로 무료·개인 요금제에서 서비스가 끝나고 Antigravity CLI로 대체된 상태였다. 그래서 이번 건에서 "패치 없음"이 실제로 위험한 쪽은 Gemini Code Assist 기업용 라이선스로 아직 제미나이 CLI를 계속 쓰고 있는 조직 정도로 좁혀질 것으로 보인다. 개인 무료 사용자는 애초에 접점이 거의 없을 것이다.
확인 못 함
클로드 코드 공식 릴리스 노트 페이지는 최근 버전만 보여 주고 있어서,
2.1.179 항목 원문(무엇을 어떻게 고쳤다고 적었는지)은
이번에 직접 열어 확인하지 못했다. 에어 시큐리티의 발표와 여러 매체 보도가
같은 버전·날짜로 일치하는 것까지만 확인했다.
왜 중요한가
이 사이트 교육 과정 STEP 18 · 안전하게 쓰기 에서 "무엇을 올려도 되는가, 결과를 어떻게 믿는가"를 다뤘다. 이번 건은 그 연장선인데 대상이 내가 올리는 자료가 아니라 내가 설치한 도구 자체라는 점이 다르다.
플러그인이나 스킬을 설치할 때 "커밋에 고정돼 있다", "버전이 박혀 있다"는 표시를 보면 보통 그걸로 안심한다. 이번 건은 그 표시 자체가 항상 맞다는 보장은 없다는 것을 보여준 사례다. 표시를 못 믿으라는 뜻이 아니라, 모르는 저장소의 플러그인을 아무 의심 없이 자동 업데이트에 맡기지는 않는다는 습관 쪽으로 이어진다.
"버전을 고정했다"는 안전장치 하나일 뿐, 그 저장소를 누가 쥐고 있는지가 여전히 더 근본적인 신뢰의 기준이다. 자물쇠가 있다고 문 자체를 안 잠가도 되는 건 아니다.
직접 해 보기 — 5분
-
버전을 본다.
웬만하면 자동 업데이트로 이미claude --version2.1.179보다 훨씬 위(9월 기준 2.1.27x대)일 것이다. 낮게 나오면claude update. -
설치된 플러그인을 훑어본다.
Installed 탭에서 어느 마켓플레이스에서 왔는지를 본다. 공식 마켓플레이스가 아니라 개인 깃허브 저장소를 직접 지정해 설치한 것이 있다면 그 저장소 주인이 누구인지 한 번 확인해 본다./plugin -
코덱스도 같이 쓴다면 버전을 본다.
codex --version0.146.0미만이면 업데이트한다. - 깃허브 코파일럿이나 제미나이 CLI 확장을 쓰고 있다면 더 조심한다. 공개 시점 기준으로 코파일럿은 수정본이 없었고, 제미나이 CLI는 아예 서비스가 끝나 가는 쪽이다. 이쪽에서는 모르는 출처의 플러그인·확장을 새로 설치하지 않는 것이 지금으로선 가장 확실한 대응이다.
같은 방식(커밋에 고정한다고 표시해 놓고 실제로는 검증하지 않는 것)의 결함은 플러그인 시스템을 쓰는 다른 도구에서도 똑같이 나올 수 있는 구조적인 문제다. "패치됨" 표에 있는 도구를 오늘 안전하다고 넘기는 것과, 플러그인은 원래 위험을 안고 설치하는 것이라는 전제를 계속 갖고 있는 것은 다른 얘기다.
한 줄 정리
- 커밋 해시로 고정한 버전도, 그 저장소 주인이 마음먹으면 조용히 바뀔 수 있었다.
- 클로드 코드는 6월 17일(2.1.179)에 이미 고쳐졌다 — 9월 17일 공개는 뒤늦게 알려진 것.
- 코파일럿·제미나이 CLI 확장은 아직 안전하지 않다 — 모르는 출처의 플러그인은 새로 설치하지 않는다.
- Air Security — Plugin4Shell (발견·공개 일정, 영향 도구, 패치 버전·날짜)
- The Hacker News — Plugin4Shell Lets Repository Owners Swap Pinned Plugin Code
- Help Net Security — Zero-click RCE vulnerability hit four major AI coding agents
- Google Developers Blog — Transitioning Gemini CLI to Antigravity CLI (제미나이 CLI 개인 요금제 종료 시점 확인용)
- Claude Code changelog (최근 버전만 확인 가능 — 2.1.179 항목 원문은 미확인)