당신의 AI 코딩 어시스턴트가 어떻게 조용히 바이러스를 설치할 수 있는가
요약
AI 코딩 어시스턴트가 존재하지 않는 패키지 이름을 추천할 때 발생하는 '슬롭스쿼팅(slopsquatting)' 공격 위험을 경고합니다. 공격자가 모델의 명명 패턴을 분석해 악성 패키지를 미리 등록함으로써 개발자의 시스템을 침해하는 새로운 보안 위협을 다룹니다.
핵심 포인트
- AI 모델이 존재하지 않는 패키지 이름을 추천하는 취약점 존재
- 슬롭스쿼팅: 모델의 명명 패턴을 이용한 악성 패키지 선점 공격
- 타이포스쿼팅과 달리 인간의 실수 없이 모델의 생성 결과로 공격 가능
- USENIX Security 2025에서 발표된 실제 연구 기반의 보안 위협
AI 코딩 어시스턴트에게 이전에 본 적 없는 작업을 위해 어떤 라이브러리를 설치해야 하는지 물어보면, 존재하지 않는 패키지를 아주 자신 있게 말할 실질적인 가능성이 있습니다. 이는 드문 결함이 아닙니다. 이는 문서화된 공격 표면 (attack surface)이며, 2026년에는 실험실의 호기심 수준을 넘어, 비밀번호 탈취나 전통적인 익스플로잇 (exploit) 없이도 개발자의 컴퓨터를 이용해 봇넷 (botnets)을 구성할 수 있는 기술로 진화했습니다.
Part 1: 타인의 패키지를 설치하는 것이 항상 신뢰의 행위인 이유
현대 소프트웨어는 처음부터 끝까지 새로 작성되지 않습니다. 패키지 (packages), 라이브러리 (libraries), 모듈 (modules)과 같이 다른 사람들이 만든 빌딩 블록 (building blocks)을 조립하여 만들어집니다. HTTP 요청이 필요한가요? requests를 가져오면 됩니다. 서버가 필요한가요? express를 가져오면 됩니다. 2026년에 이를 직접 작성하는 것은 말이 되지 않습니다.
이러한 블록들은 오픈 레지스트리 (open registries) — Python을 위한 PyPI, JavaScript를 위한 npm — 에 존재합니다. 누구나 그곳에 게시할 수 있습니다. 누구나 단 한 번의 명령어로 다른 사람의 패키지를 설치할 수 있습니다.
그곳에 바로 아무도 공개적으로 이야기하지 않는 위험이 자리 잡고 있습니다. 설치된 패키지는 당신의 프로그램과 동일한 권한으로 실행됩니다. 파일 읽기, 네트워크 접속, 환경 변수 (environment variables) 유출이 가능합니다. 그리고 패키지는 자체적인 의존성 (dependencies)을 가지고 있고, 이는 다시 더 많은 의존성을 불러오기 때문에, 하나의 패키지를 설치한다는 것은 결코 만날 일 없는 수천 명의 낯선 사람들의 코드를 암묵적으로 신뢰한다는 것을 의미합니다.
이러한 신뢰를 공격하는 고전적인 방식은 타이포스쿼팅 (typosquatting)입니다. 인기 있는 이름과 유사한 패키지 이름(예: matplotlib 대신 matplotltib)을 등록하여 개발자의 오타에 베팅하는 방식입니다. 이 방식은 효과가 있으며, 여전히 유효합니다. 하지만 한계가 있습니다. 인간이 실수를 해야만 하기 때문입니다.
다음 단계는 그 한계를 제거했습니다. 이제 실수를 하는 주체는 모델 (model)이 될 수 있습니다.
Part 2: 슬롭스쿼팅 (slopsquatting) — AI가 당신을 위해 이름을 지어낼 때
언어 모델 (language model)이 정확한 패키지 이름을 확신하지 못할 때,
- 공격자는 모델을 통해 수백 개의 유사한 프롬프트 (prompt)를 실행하고, 모델이 어떤 존재하지 않는 이름들을 생성하는지 기록합니다.
- 일부 이름은 체계적으로 반복됩니다. 모델은 무작위성이 아니라 내부적인 명명 패턴 (naming patterns)을 따르기 때문입니다.
- 공격자는 PyPI 또는 npm에서 해당 이름들을 등록합니다. 이곳은 등록이 무료이며 콘텐츠 검토 (content review)가 거의 존재하지 않습니다.
- 악성 코드 (malicious code)가 그 안에 삽입되며, 때로는 위장용으로 작동하는 함수 (working function) 안에 감싸져 있기도 합니다.
- 그다음은 기다림의 시간입니다. 조만간 모델은 실제 개발자에게 바로 그 이름을 추천하게 됩니다.
이것이 얼마나 광범위한가. 이 현상의 근간이 되는 연구는 USENIX Security 2025 — 현존하는 가장 엄격한 보안 컨퍼런스 중 하나 — 에서 발표된 텍사스 대학교 샌안토니오 캠퍼스 (University of Texas at San Antonio) 팀의 연구 (Spracklen et al.)입니다. 이 연구는 576,000개의 생성된 코드 샘플을 통해 16개의 인기 있는 모델을 테스트했습니다. 결과는 다음과 같습니다: 상용 모델 (commercial-model) 응답의 평균 5.2%, 오픈 소스 모델 (open-source-model) 응답의 21.7%가 존재하지 않는 패키지를 참조했습니다. 총 205,000개 이상의 고유한 환각 (hallucinated) 이름이 발견되었습니다 [1].
새로운 모델들 (Claude Sonnet 4.6, GPT-5.4-mini, Gemini 2.5 Pro 등)에 대해 동일한 방법론을 적용한 2026년 후속 연구에 따르면, 모델 간의 격차는 상당히 좁혀졌으나 (4.6–6.1%), 테스트된 모든 모델이 동일하게 만들어내는 127개의 이름을 발견했습니다. 이 중 일부는 논문 발표 시점에도 여전히 등록이 가능한 상태였습니다 [2]. 범위는 줄어들었지만, 위협은 줄어들지 않았습니다.
트렌드보다 앞선 전례. 2024년 초, 연구원 Bar Lanyado (Lasso Security)는 모델들이 실제 설치 명령인 pip install -U "huggingface_hub[cli]" 대신 huggingface-cli를 설치하도록 반복적으로 권장하는 현상을 발견했습니다. 그는 규모를 측정하기 위해 존재하지 않는 해당 이름을 비어 있는 무해한 패키지로 등록했습니다. 불과 3개월 만에 이 패키지는 30,000회 이상의 실제 다운로드 수를 기록했으며, 해당 설치 지침은 Alibaba의 공개 리포지토리 중 하나인 공식 README에까지 포함되었습니다 [3]. 이 패키지가 무해했던 이유는 단지 연구원이 먼저 선점했기 때문일 뿐입니다. 다음번에는 동일한 자리가 누구의 소유가 될지 모릅니다.
파트 3: HalluSquatting — 당신이 아닌 에이전트가 설치할 때
위의 수법에는 여전히 병목 현상이 존재합니다. 즉, 사람이 AI의 제안을 복사하여 수동으로 실행해야 한다는 점입니다. 2026년, 그 병목 현상은 사라졌습니다. 자율 코딩 에이전트 (Cursor, Windsurf, GitHub Copilot, Cline, Gemini CLI 등)는 이제 스스로 터미널을 열고 명령어를 실행합니다.
Tel Aviv University, Technion, 그리고 Intuit의 연구진(이전의 자가 확산 AI 이메일 웜 및 Gemini를 하이재킹한 캘린더 초대 공격을 주도했던 동일 그룹)은 2026년 7월, 에이전트의 환각 (Hallucination) 경향을 적대적으로 악용하는 기술인 HalluSquatting [4][5]이라 불리는 기법을 설명했습니다.
작동 방식은 다음과 같습니다:
- 공격자는 에이전트가 복제(clone)하거나 설치하도록 자주 요청받는 트렌디한 저장소(repository)나 플러그인을 선택합니다.
- 공격자는 서로 다른 모델들에게 해당 리소스를 가져오도록 반복적으로 프롬프트(prompt)를 입력하고, 가장 자주 등장하는 존재하지 않는 이름을 기록합니다. 이 이름은 놀랍게도 서로 다른 벤더(vendor)의 모델들 사이에서 매우 일관되게 나타납니다.
- 해당 이름이 등록되면, 단순히 악성코드(malware)만 담는 것이 아니라 프롬프트 인젝션 (prompt injection) — 즉, 에이전트가 수행 중인 작업의 일부로 읽게 될 숨겨진 명령어를 포함시킵니다.
- 실제 사용자가 에이전트에게 인기 있는 리소스를 가져오라고 요청합니다. 에이전트는 동일한 잘못된 이름을 환각(hallucinate)하고, 실제 버전 대신 공격자의 버전을 가져오며, 내장된 명령어를 읽고 — 에이전트 자체의 내장 터미널(terminal)을 통해 이를 실행합니다. 확인 절차도, 사용자의 인지 과정도 없습니다.
연구에 따르면, 피크 타임 시나리오에서 에이전트가 저장소를 복제할 때 이름을 틀릴 확률은 최대 85%였으며, 소위 "기술(skills)"이라 불리는 것을 설치할 때는 최대 100%에 달했습니다 [4].
저자들은 이를 새로운 종류의 봇넷 (botnet)으로 명시적으로 정의합니다. 전통적인 봇넷은 취약한 비밀번호나 네트워크 익스플로잇 (exploit)이 필요하며, 보통 한 가지 유형의 장치만을 관리합니다 (Mirai는 카메라와 라우터를 관리했습니다). 하지만 이 방식은 둘 다 필요하지 않습니다. 페이로드 (payload)가 에이전트 스스로 명령어로 해석하는 텍스트 형태로 전달되기 때문에, 표준 방화벽 (firewall)은 이를 절대 감지할 수 없습니다. 운영 체제(OS)와 관계없이 취약한 에이전트를 실행하는 모든 기기가 감염될 수 있습니다 [4].
이러한 아이디어는 이미 패키지를 넘어 확산되고 있습니다. Palo Alto Networks의 Unit 42는 웹 도메인에 대해 유사한 효과인 "팬텀 스쿼팅 (phantom squatting)"을 설명하며, 환각되었지만 등록되지 않은 도메인이 약 250,000개 정도 존재하여 언제든 탈취될 수 있다고 추정했습니다 [4]. 또한 2026년 6월, Trail of Bits는 "기술 (skills)"의 악성 콘텐츠를 검사하기 위한 마켓플레이스들이 테스트 페이로드를 여러 스캐너(scanner)를 통과시켜 1시간도 채 되지 않아 유출시키는 것을 보여주었습니다 [4].
연구진은 공격자들에게 즉시 사용 가능한 플레이북(playbook)을 제공하는 것을 피하기 위해 환각(hallucination)된 이름의 정확한 목록을 의도적으로 공개하지 않았습니다. 하지만 타임라인에 대해서는 명확하게 밝혔습니다. 즉, 이 기술은 이미 작동하고 있다는 것입니다. 문제는 이것이 실제로 발생할지 여부가 아니라, 언제 처음 발견될 것인가의 문제입니다.
이에 대해 실제로 취해야 할 조치
- AI가 추천하는 패키지를 확인 없이 절대 설치하지 마세요. PyPI 또는 npm에서 게시 날짜와 다운로드 수를 확인하십시오. 어제 게시되었는데 다운로드 수가 5회뿐인 패키지는 위험 신호(red flag)입니다.
- 에이전트(agent)가 확인 절차 없이 명령을 실행하게 두지 마세요. "권한 건너뛰기(skip permissions)" 또는 "yolo 모드"와 같은 설정은 무해한 환각을 사용자의 기기에서 실행되는 코드로 변질시키는 바로 그 원인이 됩니다.
- 의존성 파일(
requirements.txt,package.json)을 검토하여 익숙하지 않거나 이전에 본 적 없는 이름이 있는지 확인하십시오. 그것이 전형적인 침투 경로입니다. - 가능한 경우, 에이전트가 자신의 기억에 의존하는 대신 레지스트리의 실제 API를 통해 리소스를 먼저 조회하도록 요구하십시오. 이는 치환(substitution) 가능성을 급격히 낮춰줍니다.
출처
[1] Spracklen et al., We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs, USENIX Security Symposium 2025.
[2] The Range Shrinks, the Threat Remains: Re-evaluating LLM Package Hallucinations on the 2026 Frontier-Model Cohort, arXiv:2605.17062.
[3] Bar Lanyado / Lasso Security의 환각된 huggingface-cli 패키지에 관한 연구, 2024; The Register 및 InfoWorld 보도.
[4] Spira, Cohen, Feldman, Bitton, Wool, Nassi, Beware of Agentic Botnets: Scalable Untargeted Promptware Attacks via Universal and Transferable Adversarial HalluSquatting, arXiv:2607.07433 (2026년 7월).
[5] The Hacker News, New HalluSquatting Attack Could Trick AI Coding Assistants Into Installing Botnet Malware, 2026년 7월 8일.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기