AI 어시스턴트가 패키지 설치를 추천할 때, 해당 패키지가 실제로 존재하는지 확인하시겠습니까? 대부분의 개발자는 그렇지 않습니다. 추천과 검증 사이의 이러한 간극이 바로 슬롭스쿼팅 공격의 시작점이며, 불과 3년 만에 이 위협은 연구원의 개념 증명 단계에서 자율 코딩 에이전트 내부에서 원격 코드 실행으로 진화했습니다. 이 글에서는 슬롭스쿼팅의 진화 과정을 살펴보고 각 단계가 앱 보안(AppSec) 및 개발 보안 운영(DevSecOps) 팀에 어떤 의미를 갖는지 분석합니다.
처음 오셨나요? 먼저 저희의 기본 가이드를 읽어보세요. 슬롭스쿼팅이란 무엇이며 어떻게 방어해야 하는가그런 다음 타임라인을 보러 다시 오세요.
한 단락으로 요약한 슬롭스쿼팅 공격
슬롭스쿼팅 공격 AI 모델이 예측 가능한 허구의 이름으로 악성 패키지를 등록합니다. 타이포스쿼팅은 사람의 오타를 악용합니다. 요청 을 통한 요청슬롭스쿼팅(slopsquatting)은 레지스트리에 존재하지 않는 그럴듯한 이름을 만들어낸 다음, 정당한 사용자가 등록하기 전에 해당 이름을 선점하는 방식으로 도메인 모델 자체를 악용하는 공격 방식입니다. 이 용어는 파이썬 소프트웨어 재단의 보안 개발자인 세스 라슨(Seth Larson)이 만들었고, 앤드류 네스빗(Andrew Nesbitt)이 널리 알렸습니다. 이 공격 패턴이 주목할 만한 이유는 그 속도가 매우 빠르기 때문입니다.
슬롭스쿼팅의 진화
2023년: 첫 번째 경고 신호
보안 연구원인 바 라냐도는 여러 LLM(로컬 라이프 관리자)이 특정 패키지를 계속해서 추천하는 것을 발견했습니다. 포옹얼굴-cli이는 존재하지 않습니다 (실제 도구는 다음 명령으로 설치됩니다). pip install -U “huggingface_hub[cli]”그는 위험성을 보여주기 위해 그 가상의 이름으로 빈 패키지를 업로드했습니다. 3개월 만에 아무런 홍보 없이 3만 회 이상 다운로드되었고, 심지어 그 가짜 이름은 유명 기술 기업의 연구와 관련된 저장소의 README 파일에까지 등장했습니다. 패키지 자체는 무해했습니다. 하지만 여기서 얻을 수 있는 교훈은, 누군가가 가상의 이름을 무기화하려면 그 이름이 충분히 일관성 있게 사용되기만 하면 된다는 것입니다.
2024년: 블로그 게시글에서 주류 언론 보도로
2024년 3월, The Register는 AI 모델이 개발자들이 다운로드하는 소프트웨어 패키지 이름을 자신 있게 만들어내고, 그중 일부는 악성코드에 감염되었을 가능성이 있다는 내용을 보도했습니다. 이 보도는 기술적인 내용 자체보다는 시사하는 바가 더 중요했습니다. 포옹얼굴-cli 이는 더 이상 일회성 호기심이 아니라, 주류 기술 언론이 주목할 만큼 심각한 패턴의 첫 징후였으며, 1년 후 그 범위가 확인될 대규모 연구에 앞서 나타난 현상이었다.
2025년: 최초의 엄밀한 측정
USENIX Security 2025에서 발표된 논문 "We Have a Package for You!"(Spracklen 외)는 576,000개의 Python 및 JavaScript 샘플을 대상으로 상용 및 오픈소스 코드 생성 모델 16개를 테스트했습니다. 이 논문은 코드 무단 사용(slopsquatting)을 단순한 일화에서 실제 데이터로 입증했습니다.
- 추천 패키지 중 19.7%는 존재하지 않았습니다.
- 오픈소스 모델은 상용 모델(평균 5.2%)보다 훨씬 더 자주 오류를 범했다(평균 21.7%).
- 가장 심각한 문제를 일으킨 CodeLlama 7B와 34B는 출력물의 3분의 1 이상에서 환각 증상을 유발했습니다.
- 모든 모델을 통틀어 연구원들은 20만 5천 개 이상의 고유한 환각성 이름을 기록했는데, 이는 생태계 전반에 걸쳐 지속적인 캠페인을 진행하기에 충분한 규모입니다.
이 연구는 또한 가짜 이름이 어떻게 형성되는지 분류했는데, 38%는 두 개의 실제 패키지 이름을 합쳐서 만든 것이었습니다(이후에 나타난 패턴과 정확히 일치함). 리액트 코드시프트 에 jscodeshift react-codemod) 13%는 실제 패키지 이름의 오타 변형이었고, 51%는 그럴듯하지만 완전히 지어낸 이름이었습니다. 국방 측면에서 가장 중요한 것은 첫 번째 그룹인데, 두 개의 실제 도구를 조합해서 만든 이름은 한눈에 알아차리기 어렵기 때문입니다.
공격자에게 가장 중요한 발견은 환각이 무작위적이지 않고 시도할 때마다 바뀌지 않는다는 점입니다. 연구원들이 동일한 프롬프트를 10번씩 반복 실행했을 때, 환각으로 나타난 이름의 43%는 매번 나타났고, 58%는 두 번 이상 반복되었습니다. 공격자는 추측할 필요가 없습니다. 모델의 동작을 관찰하고, 반복적으로 나타나는 이름을 파악하여 우선적으로 등록하면 됩니다. 이러한 반복성이 일회성 환각을 확장 가능한 공격으로 바꿔놓는 핵심 요소입니다.
2026년: 개별 패키지에서 자율 에이전트로
올해는 슬롭스쿼팅이 더 이상 개발자가 제안된 코드를 복사해서 붙여넣는 행위에만 국한되지 않는다는 가장 명확한 증거가 드러났습니다. npm 설치.
2026년 1월, 보안 연구원 찰리 에릭슨은 허구의 npm 패키지를 발견했습니다. 리액트 코드시프트AI가 생성한 에이전트 지침이 포크를 통해 이미 237개의 저장소에 퍼져나갔고, 에이전트들은 여전히 매일 이를 설치하려고 시도하고 있다는 것입니다. 이는 단 하나의 저장소에서 시작되었습니다. commit 인공지능이 작성한 에이전트 스킬 파일은 어떤 인간도 검토하지 않았습니다. 에릭센은 공격자가 이를 악용하기 전에 방어적인 차원에서 직접 이름을 등록했습니다.
별도로, 진짜 악성 패키지가 있습니다. 사용되지 않는 수입품정당한 것을 대신하여 환각이 나타났다 eslint-plugin-사용되지 않는 가져오기npm이 보안 조치를 취한 후에도 설치가 계속되는 것을 보면, 슬롭스쿼팅 공격이 적발된 후에도 얼마나 오랫동안 피해자를 찾아낼 수 있는지 알 수 있습니다.
2026년 7월, 연구원들은 "할루스쿼팅(HalluSquatting)"이라는 관련 기법을 설명했는데, 이는 환각과 즉각적인 코드 삽입을 결합하는 방식입니다. 사용자를 대신하여 환각적인 리소스를 가져오는 AI 코딩 에이전트가 공격자가 제공한 코드를 실행하도록 탈취될 수 있습니다. 이는 슬롭스쿼팅이 수동적인 설치 위험에서 에이전트 기반 개발 워크플로 내에서 능동적인 원격 코드 실행 벡터로 진화했음을 보여줍니다.
"바이브 코딩"이 공격 표면을 확장한 이유는 무엇일까요?
AI 생성 코드가 틈새 시장에 불과했다면 슬롭스쿼팅은 큰 문제가 되지 않았을 것입니다. 하지만 그렇지 않습니다. 코딩 어시스턴트, 자율 에이전트, 그리고 개발자가 코드를 실행하기 전에 검토하는 시간을 줄이는 "바이브 코딩" 워크플로의 등장으로 공격 표면이 두 가지 구체적인 방식으로 변화했습니다.
첫째, 공격의 진입점은 더 이상 개발자 한 사람에 국한되지 않습니다. 과거에는 타이포스쿼팅 공격이 한 사람의 오타에 의존했지만, 이제는 오류가 모델 내부에서 발생하여 유사한 질문을 하는 수백 명의 개발자에게 전파되고, 그들은 똑같은 잘못된 추천을 받게 됩니다.
둘째, 공격 대상 영역이 상위 단계로 이동했습니다. 이제 사람이 작성한 코드만 감시하는 것으로는 충분하지 않습니다. 팀은 AI 어시스턴트가 제안하는 종속성, 연결하는 MCP 서버, 그리고 사람의 개입 없이 패키지를 설치하는 에이전트까지 감시해야 합니다. 기존의 애플리케이션 보안은 저장소 검토와 사람의 개입에 기반을 두고 있습니다. commits는 개발자, AI, 레지스트리 간의 상호 작용을 관찰하도록 설계된 적이 없으며, 바로 그 지점에 슬롭스쿼팅이 숨어 있습니다.
이것이 예방에 의미하는 바는 무엇일까요?
이 모든 것이 생성형 AI 자체를 본질적으로 불안정하게 만드는 것은 아닙니다. 이는 기존 도구로는 감지할 수 없었던 공급망 위험을 야기하며, 우리가 이미 모든 외부 의존성에 적용하고 있는 검증 원칙, 즉 기본적으로 신뢰하지 말고, 출처를 검증하고, 모든 개발자의 기억에 의존하는 대신 검증 과정을 자동화해야 한다는 점을 시사합니다. 완전한 방어 전략은 저희 가이드에서 확인하실 수 있습니다. AI 공급망 보안간단히 말해서, 수동 검증은 여전히 필요하지만, 허구의 이름이 수천 명의 개발자에게 동시에 전달되거나 에이전트가 사람의 검토 없이 설치할 수 있게 되는 순간 확장성이 떨어집니다.
에이전트가 설치하기 전에 환각 패키지를 차단하세요.
2026년 사례들은 한 가지 공통점을 가지고 있습니다. 바로 위험한 설치 과정이 사람의 개입 없이 이루어진다는 것입니다. 바로 그 부분이 핵심입니다. 제니 Shield 위해 만들어졌습니다. Shield 이는 개발자 엔드포인트에 설치되는 경량 에이전트로, 설치 시점에 악성 패키지를 차단합니다. 악성코드 조기경보(MEW) 서명이 존재하기 전에도 유효한 판결. AI 비서 또는 자율 에이전트가 허구의 새로 등록된 패키지를 설치하려고 시도할 때, Shield 데이터를 가져오는 즉시 평가하고 차단하므로, 사람이 지켜보고 있든 없든 설치 스크립트는 절대 실행되지 않습니다. 모든 차단은 동일한 경로로 흘러갑니다. 제니 콘솔에 코드, 빌드 및 런타임 결과를 표시하고 Shield 기존 EDR 시스템과 충돌하지 않고 함께 실행됩니다.
무료로 시작하세요. Xygeni의 개발자 플랜은 0유로입니다. 저장소 10개, 월 스캔 200회, 기여자 최대 5명, 신용카드 정보 필요 없음. Sign up with GitHubGitLab이나 Google을 사용하여 10분 이내에 첫 번째 스캔을 실행해 보세요. Shield 엔드포인트 보호 기능이 곧 개발자 플랜에 추가될 예정입니다.
FAQ
패키지 관리자가 자체적으로 슬롭스쿼팅(무단 투기)을 방지할 수 있을까요?
완전히 예방할 수는 없습니다. npm의 충돌 감지 기능은 기존 패키지와 너무 유사한 이름을 차단하여 타이포스쿼팅(typosquatting)을 방지하는 데 도움이 되지만, 허구의 이름은 충돌 감지 대상이 없는 완전히 새로운 문자열입니다. 공격자가 개발자가 설치하기 전에 허구의 패키지를 등록하면, 해당 패키지가 실제로 존재하기 때문에 설치가 오류 없이 완료됩니다. 예방을 위해서는 레지스트리 자체의 검사뿐만 아니라 패키지의 출처와 동작 방식에 대한 검증이 필요합니다.
2026년 에이전트 사례는 이전의 슬롭스쿼팅 사례와 어떤 점이 다른가요?
이전 사례들은 사람이 제안된 설치 명령어를 복사해서 붙여넣는 방식으로 이루어졌습니다. 2026년 사례에서는 자율 에이전트가 사람의 검토 없이 가상의 패키지를 설치하거나 설치를 시도했으며, HalluSquatting 기법은 한 단계 더 나아가 가상의 패키지에 프롬프트를 삽입하여 에이전트의 워크플로 내에서 원격 코드 실행을 달성했습니다.





