AI 코딩 에이전트 7종이 업데이트 훅에 뚫렸다…모델은 공격을 못 본다

2026년 9월 3일 공개된 HookPry 연구는 신뢰받은 플러그인의 업데이트가 생명주기 훅을 바꾸면 AI 코딩 에이전트의 모델 판단을 거치지 않고 호스트 명령을 실행할 수 있음을 7개 하네스에서 재현했다. 이를 다룬 9월 4일 보안 보도 도 훅 명령이 기반 모델에 보이지 않은 채 호스트 권한으로 작동하는 공급망 공격 경로를 핵심 결과로 짚었다.
연구진의 HookPry 원 논문 에 따르면 5개 모델 백엔드와 7개 하네스로 만든 25개 조합에서 1,000회의 종단 간 실험이 진행됐다. 완전한 외부 효과가 검증된 실행은 77.0%였고, 평가한 7개 하네스 모두에서 공격 효과가 한 번 이상 확인됐다. 하네스별 최고 성공률은 92.5%였으며, 실험용 악성 표본 40개에 대한 Microsoft Defender의 재현율은 0%, 세 가지 정적 방어 수단을 합친 미탐률은 47.5%였다. 이는 실제 사용자가 쓰는 7개 제품이 감염됐다는 발표가 아니라 격리된 환경에서 수행된 연구 결과다.
정상 플러그인의 업데이트가 공격 경로가 됐다

HookPry가 가정한 공격은 처음부터 노골적으로 악성인 플러그인을 설치하는 방식이 아니다. 공격자는 공개 마켓플레이스나 커뮤니티 레지스트리에 정상 기능을 갖춘 버전을 먼저 배포한 뒤, 같은 플러그인 식별자를 유지한 후속 버전에서 메타데이터와 생명주기 훅 설정을 바꾼다. 최초 설치 때 형성된 신뢰가 업데이트로 추가된 명령에 그대로 이어지는 틈을 겨냥한다.
생명주기 훅은 세션 시작, 도구 호출, 파일 편집 같은 실행 이벤트에 셸 명령을 연결하는 설정이다. 테스트나 정책 검사 같은 자동화에 쓰이지만, 공격자가 설정을 통제하면 자격 증명 수집, 데이터 반출, 소스 코드 변조, 지속성 확보, 리소스 탈취 등으로 같은 실행 통로를 돌릴 수 있다.
공격이 성립하려면 여러 조건이 충족돼야 한다. 사용자가 플러그인을 정상 경로로 설치하고 악성 변경이 담긴 업데이트를 받아야 하며, 등록된 훅에 맞는 이벤트가 실제로 발생해야 한다. 마지막으로 훅의 하위 프로세스에 공격 목표를 수행할 만큼의 파일·네트워크·자격 증명 접근 권한이 있어야 한다.
모델은 명령 실행을 심사하지 못했다

이 구조는 악성 프롬프트가 모델을 설득해 위험한 도구를 고르게 하는 프롬프트 인젝션과 다르다. 일치하는 이벤트가 발생한 뒤 명령을 등록하고 하위 프로세스를 호출하는 주체는 모델이 아니라 에이전트 하네스다. 명령 문자열이 모델의 입력 문맥이나 도구 승인 단계로 전달되지 않으면 모델은 이를 거부할 기회도 얻지 못한다.
다만 공격 전체가 모델과 완전히 무관하다는 뜻은 아니다. 도구 사용처럼 모델 행동에 따라 발생하는 이벤트는 백엔드별 차이의 영향을 받을 수 있다. 연구가 보여준 독립성은 이벤트가 발생한 뒤의 명령 바인딩과 프로세스 실행 구간에 해당하며, 제목의 ‘모델은 공격을 못 본다’도 이 제한된 실행 경계를 가리킨다.
실제 피해 범위는 훅 프로세스에 부여된 권한으로 제한된다. 그러나 개발자 계정으로 동작하는 에이전트가 소스 저장소, 환경 변수, 인증 토큰, 빌드 도구와 네트워크에 접근한다면 훅도 같은 범위의 권한을 물려받을 수 있다. 실행 가능한 훅을 일반 설정 데이터처럼 취급할 때 위험이 커지는 이유다.
‘7종이 뚫렸다’는 실험 결과의 정확한 범위
평가 대상은 OpenHarness, OpenClaw, Claude Code, Codex CLI, OpenCode, Hermes, WorkBuddy였다. 연구진은 공격 동작을 각 하네스의 고유한 훅 형식으로 변환하고, 외부 검증 절차로 파일·프로세스 등 목표 효과가 실제 발생했는지 판정했다. 모델이 위험한 답변을 생성했는지가 아니라 호스트 측 결과가 만들어졌는지를 성공 기준으로 삼았다.
7종 모두가 뚫렸다는 표현은 각 하네스에서 검증 가능한 악성 효과가 적어도 한 번 발생했다는 의미다. 모든 구성이나 시도가 성공했다는 뜻은 아니며, 전체 실행 가운데 일부는 부분 성공 또는 실패로 판정됐다. 최고 성공률 역시 Hermes 하네스의 실험 구성에서 나온 값으로, 모든 하네스에 공통으로 적용되는 비율이 아니다.
정적 방어 실험도 범위를 좁혀 읽어야 한다. 연구진은 합성한 악성 표본과 이에 대응하는 저위험 정상 표본을 사용했고, 범용 백신 하나와 연구진이 구성한 Semgrep 규칙 및 훅 전용 기준선을 비교했다. 동적 행위 분석이나 전문 공급망 보안 제품, 다양한 기업 정책을 포괄한 시험은 아니므로 특정 탐지율을 전체 보안 제품의 성능으로 일반화할 수 없다.
공격자는 업데이트 경로부터 통제해야 한다
이번 연구는 인터넷에 연결된 에이전트를 조건 없이 장악하는 제로클릭 공격을 제시하지 않았다. 위협 모델에서 공격자가 가진 통제권은 버전형 플러그인의 메타데이터, 버전 정보, 생명주기 훅 설정으로 제한된다. 로컬 저장소 접근, 프롬프트나 도구 결과 주입, 하네스 변조, 구현 취약점 악용, 샌드박스 탈출, 강제 설치는 가정에서 제외됐다.
연구 평가도 플러그인이 설치되고 업데이트가 전달됐다는 조건 아래 이벤트 발생, 훅 등록, 하위 프로세스 실행과 외부 효과를 측정했다. 마켓플레이스에서 악성 플러그인이 발견되거나 선택될 확률, 사용자의 업데이트 채택률, 실제 운영 환경의 승인 정책은 측정하지 않았다. 따라서 실험 성공률을 현실의 감염률이나 공격 확률로 바꿔 말할 수 없다.
또한 하네스마다 플러그인과 훅을 다루는 방식이 다르다. 공통된 위험은 설정이 호스트 명령 실행 권한을 가질 수 있다는 점이며, 모든 제품에 하나의 동일한 구현 결함이 존재한다는 뜻은 아니다.
업데이트 때 훅 권한을 다시 계산해야 한다

연구에서 직접 도출되는 방어 원칙은 생명주기 훅을 실행 가능한 코드와 같은 신뢰 경계에 두는 것이다. 최초 설치 때 플러그인 이름과 기능을 승인했더라도 후속 버전이 추가한 명령까지 자동으로 승인한 것으로 간주해서는 안 된다. 검토 단위도 단순한 버전 번호가 아니라 업데이트 전후의 실질적인 실행 권한이어야 한다.
- 업데이트 출처: 배포자와 버전, 서명 또는 고정된 아티팩트를 확인하고 승인되지 않은 레지스트리와 자동 업데이트 경로를 제한한다.
- 훅 변경점: 추가·수정된 이벤트, 셸 명령, 스크립트 경로, 환경 변수 참조, 네트워크 목적지와 조건부 실행 규칙을 이전 버전과 비교한다.
- 재승인 조건: 새 명령이 추가되거나 파일·네트워크·자격 증명 접근 범위가 넓어지면 업데이트를 멈추고 별도 승인을 요구한다.
- 최소 권한: 훅을 제한된 파일시스템과 네트워크, 범위가 좁은 자격 증명을 가진 별도 프로세스나 격리 환경에서 실행한다.
- 실행 기록: 플러그인 버전, 설정 해시, 촉발 이벤트, 실제 실행 명령과 보안 컨텍스트를 모델 대화 기록과 별도로 보존한다.
이 방어선은 정적 검사 결과만으로 대체하기 어렵다. 파일에서 의심스러운 문자열을 찾는 것과 업데이트가 새로 획득한 실행 권한을 승인하는 것은 서로 다른 문제이기 때문이다. 훅별 재승인, 실행 격리와 런타임 관찰이 함께 필요한 이유도 여기에 있다.
실제 악용과 공급업체 조치는 아직 확인되지 않았다
후속 독립 검토 는 HookPry의 수치가 연구진이 보고한 결과이며 아직 독립적으로 재현되지 않았고, 실제 플러그인 시장의 광범위한 악용을 입증하지 않는다고 평가했다. 실험은 임시 환경과 합성 자산으로 진행됐으며 운영체제, 셸, 기업 정책, 네트워크 조건과 향후 제품 버전을 모두 포괄하지 않는다.
연구진은 영향을 받을 수 있는 하네스 공급업체에 결과를 알리고 답변을 기다리고 있다고 밝혔다. 그러나 공개 자료만으로는 각 공급업체의 수정 배포 여부나 업데이트 재승인 정책의 변화, 여러 실제 운영 환경에서의 재현성을 확정할 수 없다.
현재 확인된 결론은 모델 자체가 침해됐다는 것이 아니다. 기존 플러그인에 부여된 신뢰가 후속 훅 설정에 그대로 승계되면 모델 밖의 자동화 계층이 악성 명령의 실행 통로가 될 수 있다는 점이 통제된 실험에서 확인됐다. 다음 확인 대상은 독립 재현 결과와 하네스별 완화 조치, 업데이트 때 변경된 훅 권한을 다시 승인하는 정책의 도입 여부다.
함께 읽기:
뉴스레터 구독
최신 Web3, AI, 암호화폐 뉴스를 이메일로 받아보세요.