슬롭스쿼팅이란: AI 추천 악성 패키지의 위험과 예방 가이드

무엇인가
슬롭스쿼팅(slopsquatting)은 AI 기반 코드 생성·추천 도구가 만들어내는 허구의 오픈소스 패키지 이름(환각)을 악용하는 공급망 공격의 한 유형입니다. 간단히 말하면, AI가 존재하지 않는 패키지 이름을 반복해서 추천하면 공격자가 그 이름으로 악성 패키지를 만들어 공개 저장소(GitHub 등)에 올립니다. 이후 개발자가 AI의 추천을 그대로 프로젝트에 추가하면, 악성 코드가 실행되어 개발자와 사용자 환경에 피해를 줄 수 있습니다.
용어 한 줄 정의:
- 환각(hallucination): AI가 사실과 다른 내용을 ‘자신 있게’ 생성하는 현상.
공격 흐름 (요약)
- AI 도구가 존재하지 않는 패키지 이름을 추천한다.
- 공격자는 그 이름으로 악성 패키지를 만들어 공개 저장소에 배포한다.
- 개발자가 AI 추천을 그대로 사용해 패키지를 설치한다.
- 악성 패키지가 실행되어 정보 유출·원격 코드 실행 등 피해가 발생한다.
연구 결과(원문 출처 기준)처럼, 16개 주요 코드 생성 AI 모델 중 거의 20%가 존재하지 않는 패키지를 추천했고, 같은 프롬프트로 10회 실행했을 때 약 43%의 환각 패키지 이름이 반복적으로 등장했습니다. 일부 모델은 다른 모델보다 환각을 덜 발생시키지만, 위험이 완전히 해소되지는 않습니다.
왜 환각 반복이 문제인가
랜덤하게 만들어진 이름이 아닌, 반복되는 허구의 이름은 공격자가 골라 악용하기 쉬운 표적을 제공합니다. 이름이 일정하게 반복되면 공격자는 그 이름을 선점하고 악성 패키지를 올리는 것만으로도 AI 추천 경로를 통해 확산될 가능성이 커집니다. 특히 대형 AI 모델이 동일한 환각을 반복한다면 공격 성공률은 더 높아집니다.
주의해야 할 신호
슬롭스쿼팅은 초보자든 숙련 개발자든 모두에게 위협이 될 수 있습니다. 다음 다섯 가지 신호를 항상 점검하세요.
- 약간의 철자 오류 또는 이상한 네이밍
- 경고 신호로는 유효한 패키지 이름과 한 글자만 다른 이름, 또는 낯선 형태의 합성어가 있습니다. 다만 모든 환각이 오타를 포함하지는 않으므로 철자만으로 판정하지 마세요.
- 토론·이슈·사용자 피드백의 부재
- 인기 있는 패키지는 보통 이슈 트래커, 토론, 다운로드 이력 등이 남습니다. 완전히 새롭거나 토론이 전혀 없는 패키지는 주의가 필요합니다.
- 다른 개발자들이 경고하는 경우
- 커뮤니티 피드백은 값진 필터입니다. 추천을 바로 수용하지 말고 검색 엔진, Reddit, Stack Overflow, GitHub 이슈 등을 조회해 평판을 확인하세요.
- 여러 AI 플랫폼에서 거의 추천되지 않는 경우
- 동일한 프롬프트를 여러 AI 도구에서 돌려보고 결과를 비교하세요. 특정 이름이 한 플랫폼에서만 반복된다면 신뢰도를 낮춰야 합니다.
- 이해하기 어려운 또는 모호한 설명
- 악성 패키지는 종종 호소력 있는 설명 대신 불명확하거나 모호한 목적 설명을 둡니다. 실제 코드 예시, 사용 예, 기여자 정보가 없는지 확인하세요.
추가 팁: 평판이 의심되는 패키지는 AI에게 동일 프롬프트로 “이 패키지 이름이 실제로 존재하나요?” 또는 “이 패키지의 GitHub 저장소 링크를 알려줘“처럼 확인 질문을 던져 보세요. 그러나 AI의 답변 역시 환각할 수 있으니 최종 확인은 사람의 검증으로 이어져야 합니다.
가장 중요한 예방 조치
슬롭스쿼팅을 완전히 차단하는 자동화된 분해·검증 체계가 널리 보급되기 전까지는 다음 세 가지 원칙을 지키는 것이 실무상 효과적입니다.
1) 모든 외부 코드는 샌드박스에서 실행
- 새로 받은 패키지나 AI가 추천한 코드는 실제 개발 환경이나 프로덕션에서 바로 실행하지 마세요. 가상 머신(VirtualBox, VMWare), 컨테이너(Docker) 또는 클라우드 기반 샌드박스(예: Replit 같은 다중 언어 지원 환경)에서 먼저 실행해 동작을 관찰하세요.
- 샌드박스에서 체크할 항목: 네트워크 호출(외부 도메인 접근), 파일 시스템 접근(민감 파일 읽기/쓰기), 권한 상승 시도, 백그라운드 프로세스 생성 여부.
2) 패키지 스캐너 사용
- 자동 스캐닝 도구를 통해 패키지의 알려진 악성 서명, 의심스러운 코드 패턴, 외부 의존성 호출을 검사하세요. 예시 도구로는 Socket Web Extension(크롬/파이어폭스 확장), Snyk, OSS 스캐너(회사 정책에 따라)를 고려할 수 있습니다.
- 스캐너는 1차 필터로 유용하지만 모든 위협을 잡아내진 못하므로 수동 리뷰와 병행해야 합니다.
3) AI 추천은 출발점일 뿐, 반드시 검증하라
- AI는 빠른 아이디어 생성에 유용하지만, 추천된 패키지 링크·저자·설명·활동 기록을 직접 확인하세요. 신뢰할 수 있는 패키지 레지스트리(npm, PyPI, Maven Central 등)와 실제 저장소의 존재 여부를 확인합니다.
- 특히 자동화된 의존성 업데이트(Dependabot 등)를 사용하는 경우, 새 패키지가 자동으로 병합되지 않도록 정책을 설정하세요.
실무용 체크리스트 (역할별)
개발자
- AI가 추천한 패키지 이름을 검색해 GitHub/레지스트리 존재 여부 확인
- 다운로드 전 샌드박스에서 동작 확인
- 스캐닝 도구로 코드·의존성 검사
리뷰어/리드 개발자
- PR에 새 패키지가 포함되면 명시적 검토 항목 추가
- 패키지 설명·저자·태그·활동 빈도 체크리스트 적용
시큐리티 엔지니어
- 취약·의심 패키지에 대해 블랙리스트 규칙 운영
- 조직용 사전 승인(allowlist) 패키지 목록 유지
- CI 파이프라인에 스캐너 통합
검증 SOP(간단한 단계별 플레이북)
- AI 추천 수신
- 인터넷/레지스트리 검색으로 패키지 존재 확인
- 저장소 검토: 커밋 히스토리, 기여자 수, 이슈, README 품질 확인
- 스캐너 실행(정적·동적) 및 결과 분석
- 샌드박스에서 설치 후 런타임 행동 관찰(네트워크·파일·프로세스)
- 이상 없으면 내부 allowlist에 등록 후 사용
- 이상 발견 시 즉시 차단·삭제하고 커뮤니티에 경고 게시
사고 대응 및 롤백 요령
- 발견 즉시: 해당 패키지를 사용한 커밋/릴리즈를 되돌리고, CI/CD에서 관련 빌드 및 배포를 중단합니다.
- 영향 범위 파악: 어떤 서비스와 환경(개발·테스트·프로덕션)에 설치됐는지 로그·배포 기록을 통해 확인합니다.
- 격리 및 제거: 감염된 인스턴스를 격리하고, 패키지 제거 후 가능한 경우 재설치·재배포합니다.
- 통지: 조직 내부에 상황을 공지하고, 사용자가 영향을 받았다면 외부 공지(고객 알림 등)를 검토합니다.
- 신고: 악성 패키지를 호스팅한 플랫폼(예: GitHub, PyPI 등)에 신고하고, AI 플랫폼 공급자에게도 환각·악용 사례를 전달해 학습에 반영하도록 요청합니다.
검증 테스트 케이스(수용 기준)
- 자동화: 모든 새 외부 패키지는 CI 환경에서 최소 3가지 스캐너 결과를 통과해야 머지 허용
- 샌드박스: 샌드박스 실행 시 24시간 내 이상 행위(네트워크 호출, 민감 파일 접근 등)가 없을 것
- 커뮤니티: 공개 저장소에 최소한의 활동(최근 3개월 이내 커밋 또는 이슈 응답)이 있을 것
대안적 접근과 한계
- 중앙 허가 목록(allowlist): 조직 내에서 사전에 검증된 패키지만 허용하면 효과적이지만, 패키지 생태계의 신속한 변화에는 유연성이 떨어집니다.
- 의존성 화이트리스트와 서명 검증: 패키지 서명 및 서드파티 레지스트리의 서명 기능을 활용하면 무단 패키지 설치를 방지할 수 있습니다. 다만 모든 오픈소스가 서명되어 있지는 않습니다.
- 수동 리뷰 강화: 모든 패키지를 사람이 리뷰하면 안전하지만 비용과 시간이 많이 듭니다. 리스크-중요도 기반 우선순위가 필요합니다.
정신 모델과 휴리스틱
- 신뢰는 링크 아니라 증거로 판단하라: 링크가 있더라도 커밋, 기여자, 다운로드 수, 이슈 활동이 부족하면 신뢰도 낮음으로 본다.
- 반복성 = 표적화 가능성: AI가 반복 추천한 이름은 공격자가 악용할 확률이 높다.
- 자동화는 보조 도구: 스캐너·AI는 보조적 도구일 뿐, 최종 책임은 사람에게 있다.
보안 강화 권장 사항
- CI 파이프라인에 정적 분석·라이선스·악성코드 스캐닝 통합
- 자동 병합 규칙에 서명·검증 통과 조건 추가
- 사내 보안 정책으로 외부 패키지 도입 프로세스 표준화
- 취약 패키지 자동 모니터링(새로운 발표·이슈 발생 시 알림)
피해 예방을 위한 소통 전략
- 발견 즉시 개발자 커뮤니티(사내/외부)와 공유하여 추가 피해를 방지하세요.
- AI 플랫폼 공급자와 협력해 환각 이름의 학습 데이터 개선을 요청하세요.
1줄 용어집
- 슬롭스쿼팅: AI 환각 패키지 이름을 악용한 공급망 공격.
- 환각: AI가 사실이 아닌 정보를 생성하는 현상.
- 샌드박스: 격리된 실행 환경.
자주 묻는 질문
Q: AI 추천만으로 패키지를 설치해도 되나요?
A: 절대 권장되지 않습니다. AI 추천은 출발점일 뿐이며, 레지스트리·저장소 존재 확인, 스캐닝, 샌드박스 실행 등 검증 절차가 필요합니다.
Q: 이미 악성 패키지를 설치했다면 어떻게 하나요?
A: 즉시 해당 패키지를 제거하고, 관련 인프라를 격리한 뒤 영향 범위를 조사하고 필요시 롤백하세요. 또한 호스팅 플랫폼과 AI 공급자에 신고하세요.
요약: 슬롭스쿼팅은 AI의 환각을 악용한 실무적 위협입니다. AI 추천을 전적으로 신뢰하지 말고, 샌드박스·스캐너·교차 검증의 세 가지 원칙을 지키며 조직 차원의 수용 정책과 사고 대응 절차를 마련하세요.