AI 도서관 · ChatGPT · 단축 명령어 · 바이브코딩
AI가 만든 이름으로 공격자가 진짜 패키지를 올려둡니다
⚠️ 이건 이론이 아니라 실제로 벌어지는 공격입니다.
📌 무슨 일인가
AI 가 코드를 만들면서 **존재하지 않는 패키지 이름**을 씁니다.
공격자는 자주 나오는 그 이름들을 미리 알아내서, 그 이름으로 진짜 패키지를 올려둡니다.
설치하는 순간 공격자의 코드가 내 컴퓨터에서 돕니다.
📌 얼마나 흔한가 (USENIX Security 2025 논문)
16개 모델 · 223만 개 코드 표본을 분석한 결과
• 오픈소스 모델 — 평균 **21.7%**
• 상용 모델 — 평균 **5.2%**
지어내는 방식
• 51% 아예 없는 이름을 만듦
• 38% 진짜 둘을 섞음 (예: express 와 mongoose 를 붙인 express-mongoose)
• 13% 오타 변형
38% 가 특히 위험합니다. **진짜처럼 보이거든요.**
⚠️ 왜 바이브코딩에서 더 위험한가
개발자는 낯선 패키지 이름을 보면 한 번 의심합니다.
코드를 안 읽으면 그냥 설치합니다. 이 공격은 정확히 그 상황을 노립니다.
[ 설치 전 확인 지시문 ]
설치하라고 한 패키지들을 확인해줘.
① 각각 실제로 존재하는지 — 공식 저장소에서 확인해줘
② 마지막 업데이트가 언제인지, 내려받는 사람이 얼마나 되는지
③ 이름이 유명한 패키지와 헷갈리게 비슷한 것이 있는지
④ 확인할 수 없는 것은 "확인 불가"로 표시해줘
확인 못 한 것은 설치하지 말라고 알려줘.
기억으로 답하지 말고 실제로 찾아봐줘.
패키지 목록:
{{INPUT}}
💡 직접 확인하는 법
패키지 이름을 공식 저장소(npmjs.com · pypi.org)에서 검색해보세요.
• 없으면 → 절대 설치하지 마세요
• 있는데 만든 지 얼마 안 됐고 내려받은 수가 적으면 → 의심하세요
💡 설치 명령을 통째로 복사하기 전에 이름을 한 번 읽어보세요.
30초면 됩니다.
{{INPUT}} 자리에 내 내용을 넣어 쓰는 프롬프트입니다. 아래 버튼으로 열면 넣는 칸이 나옵니다.
언제 쓰나 · AI 가 알려준 설치 명령을 실행하기 직전
npm install express-mongoose-helper react-use-fetch-hook date-format-kr pip install pandas-excel-writer
우리가 쓴 예시입니다. 실제 실행 결과가 아니고, 답변은 매번 조금씩 다릅니다.
① 실재 여부 (공식 저장소에서 확인) express-mongoose-helper — 〈확인 결과〉 react-use-fetch-hook — 〈확인 결과〉 date-format-kr — 〈확인 결과〉 pandas-excel-writer — 〈확인 결과〉 ② 최종 배포일 / 내려받는 수 〈패키지명〉 — 최종 배포 〈날짜〉, 주간 다운로드 〈수〉 ③ 유명한 것과 헷갈리는 이름 express-mongoose-helper — express 와 mongoose 를 붙인 형태입니다. 두 개를 섞은 이름은 지어낸 것의 38% 를 차지합니다. 특히 주의하세요. ④ 확인 불가 〈저장소에서 찾지 못한 것〉 → 설치하지 마세요 ⚠️ 숫자와 날짜는 확인한 시점 기준입니다. 지금 다시 확인하세요. ⚠️ 「아마 있을 겁니다」는 확인이 아닙니다. 확인 불가로 봐야 합니다.
기억으로 답하지 말고 공식 저장소에서 실제로 찾아봐줘. 찾지 못한 것은 「확인 불가」로 표시하고, 설치하지 말라고 알려줘. 각 패키지의 최종 배포일과 내려받는 수를 함께 적어줘.