npm 공급망 공격은 신뢰하던 인기 패키지가 악성 코드를 품은 채로 자동 설치되어, AI 가 짜 준 npm install 한 줄로 침해가 시작되는 결함이다.
2026-04 Microsoft Security 와 CISA 가 공동 경보한 Axios·SAP 사건은 주간 7천만+ 다운로드를 가진 의존성 체인을 통해 광범위하게 퍼졌다(출처: Microsoft Security Blog "Mitigating the Axios npm supply chain compromise", 2026-04-01 / CISA Vulnerability Summary).
이 글은 AI 도구로 빠르게 SaaS 를 만든 1~3년차 개발자가 이번 사고의 침해 흐름을 5단계로 이해하고, lockfile 검증·CI 차단을 30분 안에 적용할 수 있게 정리한 가이드다.
한눈에 보는 이번 사고
Q. 이번 Axios·SAP 사고가 왜 시즌2 라고 불리나요? A. 2025 년의 chalk·debug 등 인기 패키지 침해 흐름이 2026 년에는 더 큰 트래픽 패키지(주간 7천만+ 다운로드)와 엔터프라이즈 ERP(SAP) 생태계로 확장됐기 때문입니다. Q. AI 코딩으로 만든 SaaS 가 왜 특히 위험한가요? A. AI 도구는 코드를 짜면서npm install 명령을 자동 제안·실행합니다. 검토 없이 lockfile 갱신이 일어나면 침해된 버전이 그대로 운영에 박힙니다.
Q. npm audit / Dependabot 으로 충분하지 않나요?
A. 둘 다 이미 공표된 CVE 를 잡는 도구입니다. 공급망 공격은 공표 전 수 시간~수 일이 가장 위험합니다. 발견 즉시 차단할 lockfile 무결성 검증과 후행 모니터링이 함께 필요합니다.
Q. 이미 설치했다면 어떻게 확인하나요?
A. npm ls axios 로 실제 깔린 버전을 확인하고, 공식 경보의 영향 버전 범위와 대조 후 키 회전·로그 역추적·재배포 3단계를 실행해야 합니다.
침해 5단계 흐름
- 관리자 계정 탈취: 인기 패키지 메인테이너의 npm 계정을 피싱·세션 탈취로 장악
- 악성 버전 배포: 정상 패키지의
postinstall스크립트에 외부 호출 코드 삽입 후 신버전 publish - 자동 전파: CI·로컬에서
npm install시 새 버전 다운로드, postinstall 실행 - 2차 페이로드: 환경변수·
.npmrc·CI 시크릿·클라우드 메타데이터(169.254.169.254) 외부 전송 - 은폐: 며칠 뒤 정상 코드로 재배포되며 침해 흔적 희석
핵심: 침해는 npm install 한 번에 끝난다. 사후 패치보다 lockfile 고정·CI 격리·런타임 외부 호출 차단이 비용 대비 효과가 크다.
이번 사고에서 새는 데이터 — AI 코딩 SaaS 기준
| 경로 | 유출되는 것 | 2차 피해 |
|---|---|---|
| 로컬 개발자 환경 | ~/.npmrc 토큰, GitHub PAT, AWS 자격 | 리포 코드 / 배포 권한 탈취 |
| CI(GitHub Actions 등) | secrets.*, OIDC 토큰 | 운영 인프라 직접 접근 |
| 운영 서버 | 환경변수, EC2 메타데이터(IAM 임시 자격) | S3/DB 임의 접근 |
| 고객 데이터 | API 로 수집되는 PII·결제 토큰 | 개인정보보호법 과징금 사고로 직결 |
30초 자가 점검
# 1. 영향 패키지가 깔렸는지
npm ls axios
npm ls @sap/<패키지명>
# 2. lockfile 변경이 최근 의도와 일치하는지
git log --since="2 weeks ago" -- package-lock.json
# 3. 의심 postinstall 패턴 검색
grep -R "postinstall" node_modules/*/package.json | grep -E "curl|wget|nc |child_process"
# 4. 외부 호출 흔적 (로컬·CI 모두)
grep -RE "https?://[a-z0-9.-]+\.(ru|cn|xyz|top)" node_modules/ 2>/dev/null | head
위 명령 중 2~4번에서 결과가 잡히면 침해 가능성. 외부 노출 인프라(.env·관리자 페이지·민감 파일·헤더 17종)는 CodeScan 30초 무료 스캔으로 동시에 점검.
lockfile 무결성 4단계
1. lockfile 강제 일치 (가장 빠른 1수)
# CI 에서 lockfile 과 package.json 불일치 시 즉시 실패
npm ci # npm install 대신
# pnpm: pnpm install --frozen-lockfile
# yarn: yarn install --immutable
2. 새 버전 자동 채택 금지
package.json범위 표기(^·~) 점검 — 패치만 허용- Dependabot/Renovate 는 자동 머지 금지, 사람 리뷰 필수
- AI 도구가 의존성 갱신 PR 을 자동 만드는 환경이면 화이트리스트 적용
3. postinstall 격리
# 1) 가능하면 끄기
npm config set ignore-scripts true
# 2) CI 한정으로 끄고 실행이 필요한 패키지만 명시
NPM_CONFIG_IGNORE_SCRIPTS=true npm ci
4. 사후 감지 모니터링
- OSV-Scanner / Socket / Snyk Advisor 등 신뢰 평판 도구 1개 이상 CI 에 결합
- 운영 서버 egress 화이트리스트 — 알려진 의존 도메인만 허용
GitHub Actions 차단 스크립트 (복사용)
name: ci
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: install (locked + no scripts)
run: |
npm ci --ignore-scripts
- name: dependency audit
run: |
npm audit --audit-level=high
npx --yes osv-scanner --lockfile package-lock.json
- name: postinstall pattern scan
run: |
! grep -R "postinstall" node_modules/*/package.json \
| grep -E "curl|wget|nc |child_process" || (echo "suspicious postinstall" && exit 1)
발견했다면 — 사고 대응 4단계
- 의존성 격리: 영향 버전을 정확히 박은 핫픽스 PR 즉시 배포 (
"axios": "1.x.y"등) - 시크릿 일제 회전:
.npmrc, GitHub PAT, AWS·Stripe·Toss·OpenAI 키 등 모두 회전 — API 키 유출 대응 가이드 - 로그 역추적: 침해 추정 시점 이후 외부 호출·메타데이터 요청·DB 대량 조회 로그 점검
- 고객 통지·당국 신고: PII 유출 가능성 있으면 개인정보보호법상 통지 의무 점검 — 긴급 대응 가이드
AI 코딩 환경 별 추가 체크
| 환경 | 추가 점검 |
|---|---|
| Vercel / Netlify | 빌드 환경변수, OIDC 권한 범위, 빌드 캐시 격리 |
| Bolt / Replit / Cursor | 자동 설치되는 의존성 PR 사람 리뷰 의무화 |
| GitHub Actions | pull_request_target 사용 점검, OIDC aud 제한 |
| 로컬 개발 | ignore-scripts 기본 on, 개인 토큰은 1Password CLI 등 격리 |
실제 사례·근거
- Microsoft Security Blog (2026-04-01) "Mitigating the Axios npm supply chain compromise" — 침해 흐름·완화 가이드(출처: microsoft.com/security/blog).
- CISA Vulnerability Summary (Week of April 27) — 영향 패키지·KEV 추가 항목(출처: cisa.gov).
- 2025 chalk/debug 침해 — 동일 패턴 1차 사고. 본 사고는 트래픽·생태계 규모만 확대.
오늘 시작할 5가지 액션
npm ci --ignore-scripts로 CI 변경 (30분)- 위 GitHub Actions 차단 스크립트 적용
- OSV-Scanner 또는 Socket 1개 결합
- 관련 글: 공급망 5체크, API 키 유출 점검, 긴급 대응
- 외부 노출은 CodeScan 30초 무료 스캔
CodeScan 이 잡아 주는 것
CodeScan 은 해킹대회 수상·레드팀 운영 경력의 보안 전문 기업 SENTRIX 가 운영하는 보안 점검 SaaS 다. 공급망 사고의 결과로 흔히 노출되는 .env·관리자 페이지·민감 파일·헤더 17종을 URL 한 줄로 자동 점검한다.
다음에 해야 할 한 가지
공급망 공격은 운영팀이 어떻게 막을지가 아니라, "이미 설치된 패키지가 안전한가" 를 30분 안에 확인할 수 있느냐가 핵심이다.
👉 실무자라면 지금 위 GitHub Actions 스크립트를 복사해 적용하고 CodeScan 30초 무료 스캔으로 인프라 노출을 함께 끊어라.
👉 임원/CISO 라면 SENTRIX 30분 1:1 공급망 보안 진단으로 lockfile·CI·런타임 3계층 점검을 권장한다.
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ {"@type":"Question","name":"Axios·SAP npm 공급망 사고는 무엇인가요?","acceptedAnswer":{"@type":"Answer","text":"2026년 4월 Microsoft·CISA가 공동 경보한 사고로, 주간 7천만+ 다운로드 인기 패키지에 악성 코드가 박혀 npm install 한 줄로 침해가 전파됐습니다."}}, {"@type":"Question","name":"AI 코딩 SaaS 가 특히 위험한 이유는?","acceptedAnswer":{"@type":"Answer","text":"AI 도구가 npm install을 자동 제안·실행하기 때문입니다. 검토 없이 lockfile이 갱신되면 침해 버전이 그대로 운영에 박힙니다."}}, {"@type":"Question","name":"npm audit 으로 충분한가요?","acceptedAnswer":{"@type":"Answer","text":"충분하지 않습니다. audit/Dependabot은 공표된 CVE를 잡는 도구이고, 공급망 공격은 공표 전이 가장 위험합니다. lockfile 무결성·CI 격리·런타임 외부호출 차단을 같이 두어야 합니다."}}, {"@type":"Question","name":"이미 설치했다면 어떻게 확인하나요?","acceptedAnswer":{"@type":"Answer","text":"npm ls 로 실제 깔린 버전을 영향 범위와 대조하고, 의심 시 키 회전·로그 역추적·재배포 3단계를 실행하세요."}}, {"@type":"Question","name":"가장 빠른 1수는 무엇인가요?","acceptedAnswer":{"@type":"Answer","text":"CI 를 npm ci --ignore-scripts 로 바꾸는 것입니다. lockfile 일치와 postinstall 차단을 동시에 얻을 수 있습니다."}} ] }