2026년 하루 평균 보고된 CVE가 전년 대비 131% 증가했습니다.

공급망

슬롭스쿼팅이란?

슬롭스쿼팅(slopsquatting)은 AI 코딩 어시스턴트가 지어낸 패키지 이름을 등록하는 공격입니다. 모델이 존재하지 않는 패키지를 제안하면 공격자가 그 이름으로 악성코드를 게시할 수 있고, 그 제안을 따르는 다음 개발자나 에이전트가 이를 설치하게 됩니다. 오타 없는 타이포스쿼팅인 셈입니다.

업데이트

이름의 유래

이 용어는 타이포스쿼팅(typosquatting)을 비튼 말로, "slop"은 품질이 낮은 AI 출력물을 뜻합니다. 2025년 Python Software Foundation의 보안 상주 개발자(security developer-in-residence)인 Seth Larson이 만든 것으로 알려져 있습니다.

패키지 환각이 생기는 이유

언어 모델은 그럴듯해 보이는 내용을 씁니다. 흔한 작업을 위한 라이브러리처럼 그럴듯한 이름은 실제 이름만큼이나 그럴듯해 보일 수 있으므로, 모델은 때때로 아무도 게시한 적 없는 패키지의 import 문이나 설치 명령을 작성합니다.

USENIX Security 2025에서 발표된 연구는 널리 쓰이는 모델 16개를 576,000개의 코드 샘플로 테스트했습니다. 환각 패키지의 비율은 상용 모델에서 최소 5.2%, 오픈 소스 모델에서 21.7%였으며, 지어낸 고유 이름은 205,474개에 달했습니다. 연구진은 이 문제를 지속적이고 구조적인 문제라고 설명했습니다.

슬롭스쿼팅 공격의 작동 방식

  1. 이름 수집. 공격자는 모델에 흔한 코딩 질문을 던지고, 존재하지 않는 패키지가 무엇인지 기록합니다.
  2. 게시. 그 이름을 npm이나 PyPI에 등록하고, 정상 작동하는 패키지 안에 페이로드를 숨깁니다.
  3. 대기. 개발자가 제안을 그대로 붙여 넣거나, 코딩 에이전트가 스스로 설치를 실행합니다.
  4. 실행. 설치 스크립트가 개발자의 머신이나 CI에서 실행되며, 토큰과 시크릿에 접근할 수 있습니다.

슬롭스쿼팅과 타이포스쿼팅 비교

타이포스쿼팅 슬롭스쿼팅
오류의 출처 사람이 이름을 잘못 입력 모델이 이름을 지어냄
이름 실제 패키지와 비슷함 그럴듯하지만 실제 패키지가 없음
설치하는 주체 개발자 개발자, 또는 이름을 읽는 사람이 없는 에이전트
탐지가 더 어려운 이유 유사 이름 검사로 인기 있는 이름과 비교 가능 비교할 인기 있는 이름이 없을 수 있음

코딩 에이전트가 위험을 키우는 이유

채팅 어시스턴트를 쓸 때는 사람이 제안을 읽은 뒤에 실행합니다. 코딩 에이전트는 코드를 작성하고, 종속성을 추가하고, 설치를 실행하는 일을 한 번에 처리할 수 있습니다. 잘못된 이름을 상당수 걸러 내던 사람의 확인 단계가 사라지고, 설치는 에이전트가 실행되는 곳 어디에서나 이루어지며, 대개 개발자의 자격 증명을 가진 채로 또는 CI 안에서 이루어집니다. 더 넓은 관점은 AI 지원 개발을 위한 보안을 참고하세요.

슬롭스쿼팅을 방어하는 방법

  • 설치 전에 확인하세요. 제안된 패키지가 실제로 존재하는지, 실제 리포지토리가 있는지, 이력이 있는지 확인하세요. 지난주에 만들어진 패키지라면 의심해 볼 만합니다.
  • 잠금 파일 변경 사항을 검토하세요. 코드를 누가 또는 무엇이 작성했든, 새 종속성은 풀 리퀘스트에서 보여야 합니다. 잠금 파일이 기록하는 내용을 참고하세요.
  • 에이전트의 권한을 제한하세요. 에이전트가 패키지를 설치하기 전에 승인을 받도록 하고, 프로덕션 자격 증명이 없는 샌드박스에서 에이전트를 실행하세요.
  • 새 패키지 사용을 늦추세요. 최근 며칠 사이에 게시된 패키지를 막는 규칙이 도움이 됩니다.
  • 빌드가 허용하는 경우 설치 스크립트를 비활성화하세요.
  • 빌드의 아웃바운드 트래픽을 제한하세요. 공격자에게 연결할 수 없는 패키지는 시크릿을 어디로도 보낼 수 없습니다. GitHub Actions 이그레스 정책을 참고하세요.

새로 등장한 슬롭스쿼팅 패키지에는 보안 권고가 없으므로 SCA 스캔이나 npm audit으로는 보고되지 않습니다. 전체 통제 목록은 소프트웨어 공급망 보안 모범 사례를 참고하세요.

CRACI가 피해를 제한하는 방법

CRACI는 새로운 악성 패키지를 탐지하지 않으므로, 패키지 검증에는 다른 도구를 사용하세요. CRACI가 하는 일은 그런 패키지가 빌드에 들어왔을 때 피해를 제한하는 것입니다. GitHub Actions 러너로서 빌드에 필요 없는 연결을 차단하는 이그레스 정책을 적용하므로, 아무도 본 적 없는 공격에도 보호받을 수 있습니다. 또한 각 작업이 가져온 모든 패키지를 기록하므로, 악성 패키지가 알려지면 어떤 빌드가 그 패키지를 가져왔는지 확인할 수 있습니다.

슬롭스쿼팅: 자주 묻는 질문

슬롭스쿼팅이란 무엇입니까?

AI 코딩 어시스턴트가 지어낸 패키지 이름을 누군가 등록해, 그 제안을 따르는 사람이 공격자의 코드를 설치하게 만드는 공격입니다.

슬롭스쿼팅이라는 용어는 누가 만들었습니까?

2025년 Python Software Foundation의 보안 상주 개발자(security developer-in-residence)인 Seth Larson이 만든 것으로 알려져 있습니다.

환각 패키지란 무엇입니까?

실제로는 존재하지 않는데도 AI 모델이 제안하는 패키지 이름입니다. 연구에 따르면 생성된 코드 샘플 중 상당한 비율에서 이런 현상이 나타났습니다.

슬롭스쿼팅은 타이포스쿼팅과 어떻게 다릅니까?

타이포스쿼팅은 사람이 실제 패키지 이름을 잘못 입력하는 것을 노립니다. 슬롭스쿼팅은 모델이 존재한 적 없는 이름을 지어내는 것을 노리므로, 비교할 실제 패키지가 없습니다.

슬롭스쿼팅은 어떻게 예방합니까?

제안된 패키지가 실제로 존재하는지 확인하고, 풀 리퀘스트에서 새 종속성을 검토하고, 에이전트가 무엇이든 설치하기 전에 승인을 받도록 하며, 빌드의 아웃바운드 트래픽을 제한하세요.

아무도 설치할 생각이 없던 패키지를 봉쇄하세요

빌드에 필요 없는 아웃바운드 연결을 차단하고, 빌드가 가져온 모든 패키지의 기록을 남기세요.

데모 예약