IT

AI가 상상한 패키지를 공격자가 만들어둔다

ndev-note 2026. 9. 17. 10:40

7일차에 바이브 코딩을 정리하면서 AI 생성 코드의 보안 취약점 비율이 높다는 조사를 언급했는데, 그건 생성된 코드 자체의 문제였습니다. 그런데 더 골치 아픈 건 코드가 아니라 그 코드가 끌어오는 의존성 쪽이더군요.

슬롭스쿼팅이라는 신종 공격

이름이 재밌습니다. 슬롭(slop, AI가 쏟아내는 저품질 결과물)과 스쿼팅(squatting, 선점)의 합성어입니다.



원리는 이렇습니다. AI 코딩 도구는 존재하지 않는 패키지 이름을 그럴듯하게 지어내는 경우가 있습니다. 전형적인 할루시네이션인데, 문제는 이 착각이 무작위가 아니라는 점입니다. 같은 질문에 비슷한 가짜 이름을 반복해서 만들어냅니다.

공격자는 그 패턴을 관찰해서, AI가 자주 지어내는 이름으로 악성 패키지를 미리 등록해둡니다. 그러면 나중에 어떤 개발자가 AI 추천대로 npm install을 실행했을 때 진짜로 설치가 됩니다. 이름이 그럴듯하고 설치도 되니 의심할 계기가 없죠.

기존 타이포스쿼팅(오타를 노려 비슷한 이름을 선점하는 것)의 AI 버전인데, 훨씬 효율적입니다. 오타는 사람마다 제각각이지만 AI의 할루시네이션은 예측 가능하니까요.

왜 AI 코딩 환경이 특히 취약한가

몇 가지가 겹칩니다.

AI가 오래된 패키지를 고르는 경향. 취약점이 알려진 오픈소스 패키지를 사람 개발자보다 자주 선택한다는 연구가 있습니다. 학습 데이터 시점의 정보를 쓰는 데다, 안전성보다 작업 완수에 최적화돼 있어서입니다. 동작하는 코드를 만드는 게 목표지 최신 보안 패치를 반영하는 게 목표가 아니니까요.

의존성 체인이 길다. 모델 호출 라이브러리, 에이전트 프레임워크, 관측·로깅, 프롬프트 관리 도구까지 쌓이면 체인이 깊어집니다. 그중 하나만 오염돼도 그 패키지를 설치하는 모든 개발자 PC와 빌드 서버, 운영 워크로드가 감염 지점이 됩니다.

권한이 과합니다. 에이전트에게 편의를 위해 넓은 권한을 주는 관행이 퍼져 있습니다. 크라우드스트라이크는 에이전트로 인한 위협이 사람의 2.5배라고 보고했고, 구글 위협 인텔리전스 그룹은 AI 지원 코딩 관행이 2025~2026년 대규모 공급망 침해의 중요한 요인이었다고 판단했습니다.

실제로 벌어진 일들

VirusTotal 연구진이 어느 AI 에이전트 생태계에서 정상 스킬로 위장한 악성 패키지를 발견했습니다. 호스트 시스템에서 승인되지 않은 명령을 실행하는 루틴이 숨어 있었고요.

더 흥미로운 건 평판 지표 조작 사례입니다. 공개된 mutation을 악용해 다운로드 수를 부풀려서 악성 스킬을 검색 1위로 올릴 수 있었습니다. PoC에서 6일간 3,900회 실행이 유도됐다고 합니다. 코드를 올리는 것뿐 아니라 어떤 코드가 신뢰받는지를 정하는 지표까지 건드린 거죠. 우리가 패키지를 고를 때 보는 다운로드 수가 방어선이 되지 못한다는 뜻입니다.

악성코드 쪽에서도 변화가 보입니다. AI 코딩 어시스턴트가 쓰는 프로젝트 디렉토리에 악성 파일을 숨겨두고 확장 기능 실행 시점에 동작하게 만든 사례, 그리고 LLM 보안 스캐너가 분석을 회피하도록 유도하는 프롬프트 인젝션을 악성코드에 심어둔 사례가 보고됐습니다. AI 보안 도구의 판단 자체를 조작하려는 시도입니다.

뭘 할 수 있나



거창한 대응은 아니고, 대부분 원래 하던 것들입니다.

추천받은 패키지 이름을 직접 확인하기. 레지스트리에서 검색해서 다운로드 수, 최초 등록일, 저장소 링크를 봅니다. 등록된 지 얼마 안 됐는데 이름만 그럴듯하면 의심할 만합니다.

lock 파일을 신뢰선으로 쓰기. 버전을 고정하고, lock 파일 변경을 리뷰 대상으로 다룹니다. PR에서 코드는 꼼꼼히 보면서 lock 파일 diff는 접어두고 넘어가는 경우가 많은데, 공급망 공격은 정확히 거기로 들어옵니다.

설치 스크립트 차단 검토. --ignore-scripts 옵션으로 postinstall 실행을 막는 것만으로도 상당수 공격이 무력화됩니다.

에이전트 권한 분리. 자격증명과 전체 파일시스템 접근을 기본으로 주지 않는 것. 3일차 AI 브라우저 글에서도 같은 얘기를 했는데, 편의를 위해 권한을 넓게 주는 게 이 시대의 공통 취약점입니다.

정리

공급망 공격은 실행되기 전까지 거의 감지되지 않는다는 게 가장 불편한 특성입니다. 그래서 탐지보다 설치 시점의 판단이 중요합니다.

한 문장으로 정리하면, 패키지 업데이트는 유지보수가 아니라 보안 이벤트입니다. AI가 추천한 이름을 그대로 설치하는 습관은 지금 시점에서 꽤 위험한 습관이 됐습니다. 저도 최근에 AI가 알려준 라이브러리를 별생각 없이 설치할 뻔한 적이 있어서, 이 글을 쓰면서 스스로 경각심을 다시 챙겼습니다.