처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.04.24 28

Bitwarden CLI가 공급망 공격에 당했다 — npm 생태계를 노리는 Checkmarx 캠페인의 실체

Hacker News 원문 보기
Bitwarden CLI가 공급망 공격에 당했다 — npm 생태계를 노리는 Checkmarx 캠페인의 실체

비밀번호 관리자가 해킹됐다고요?

Socket 리서치 팀이 Bitwarden CLI의 npm 패키지가 악성 코드로 오염된 사실을 밝혀냈어요. Bitwarden은 많은 개발자가 쓰는 오픈소스 비밀번호 관리자인데요, 브라우저 앱이 아니라 터미널에서 쓰는 @bitwarden/cli 패키지가 타겟이 됐다는 점이 특히 무겁습니다. 이게 왜 심각하냐면, CLI는 보통 CI/CD 파이프라인이나 개인 개발자 셸 스크립트에서 비밀번호·API 키·시크릿을 꺼내 쓰는 용도로 쓰거든요. 다시 말해, 공격자가 이 패키지에 손을 대면 수많은 조직의 모든 시크릿이 한꺼번에 털릴 수 있는 구조가 됩니다.

이번 사건은 단발성이 아니라, 지난 몇 달간 계속되고 있는 Checkmarx 공급망 캠페인의 일부로 확인됐어요. 공격자들은 유명 개발 도구 벤더를 사칭하거나, 실제 메인테이너 계정을 탈취해 정상 패키지에 조용히 악성 코드를 심는 방식을 반복해서 써왔습니다. Bitwarden CLI는 그중 가장 영향력이 큰 타겟이 걸린 케이스예요.

어떻게 동작했는지 뜯어보면요

공격자는 npm에 업로드된 패키지의 postinstall 스크립트(설치 직후 자동 실행되는 코드)에 난독화된 페이로드를 심었어요. 이게 뭐냐면, npm install만 쳐도 본격적인 실행 전에 이 코드가 먼저 돌아가면서 환경 변수, .npmrc, .aws/credentials, SSH 키 같은 파일을 훑어 외부 서버로 전송합니다. 페이로드는 여러 단계로 쪼개져 있고, 일부는 조건부로만 실행돼서 샌드박스 분석을 회피하도록 설계돼 있었어요.

특히 악랄한 부분은 의존성 그래프 중앙을 노렸다는 점이에요. Bitwarden CLI 자체는 설치 수가 절대적으로 크진 않지만, 이걸 DevOps 자동화 스크립트에 넣어둔 조직이 많아요. 한 번 감염되면 그 조직의 배포 파이프라인 전체가 영향권에 들어오는 구조죠. 공격자는 훔친 시크릿을 바로 쓰지 않고 누적하면서, 가치가 높은 타겟을 선별해 후속 공격을 준비한다는 정황도 보고됐습니다.

Socket은 문제의 버전을 특정해 npm에 신고했고 패키지는 내려갔지만, 이미 설치된 머신은 능동적으로 제거해야 합니다. postinstall이 남긴 흔적이 여전히 도는 경우가 있거든요.

이런 일이 왜 반복될까요

공급망 공격이 최근 몇 년간 계속 늘고 있는 이유는 구조적이에요. npm, PyPI, RubyGems 같은 공개 레지스트리는 기본적으로 누구나 올릴 수 있고, 설치 시점에 임의 코드가 실행됩니다. 게다가 프로젝트 하나만 들여다봐도 transitive dependency(간접 의존성)가 수백~수천 개로 불어나요. 이 중 하나라도 탈취되면 끝이죠. 최근에는 lodash, chalk, event-stream, ua-parser-js 같은 널리 쓰이는 라이브러리가 비슷한 식으로 오염된 전례가 있어요.

대응책도 생태계 차원에서 진화 중이에요. npm의 provenance 기능(패키지가 어느 빌드에서 나왔는지 서명), Sigstore, SLSA 같은 표준이 등장했고, Socket·Snyk·Aikido 같은 도구는 postinstall 이상행위를 설치 시점에 차단해주는 방향으로 가고 있어요. 그래도 완벽하진 않고, 아직은 개발자 개개인의 경각심이 최후의 방어선이라는 게 불편한 진실입니다.

우리는 뭘 해야 할까요

먼저 최근 Bitwarden CLI를 npm install로 설치했거나 CI에서 자동 설치하도록 걸어뒀다면, 해당 빌드 환경의 모든 시크릿을 로테이션해야 해요. AWS 키, GitHub 토큰, 배포 키까지요. "아마 괜찮겠지"가 가장 비싼 판단입니다.

평소 습관으로는 CI/CD에서 npm ci --ignore-scripts 옵션을 적극 쓰고, 꼭 필요한 패키지만 postinstall을 허용하세요. 사내에선 private registry나 proxy(Verdaccio, Artifactory)를 통해 버전을 고정하고, Renovate·Dependabot 업데이트도 사람이 리뷰 후 머지하는 흐름을 권해요. Bitwarden CLI 대신 공식 바이너리 배포본을 쓰는 것도 한 방법입니다.

정리하면

비밀번호 관리 도구가 오히려 비밀을 새는 통로가 되는 역설적인 상황인데요, 공급망은 이제 "뚫리면 큰일"이 아니라 "언제 뚫릴지" 문제예요. 여러분 팀은 CI에서 postinstall 스크립트를 어떻게 관리하고 계신가요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

AI 도구, 직접 활용해보세요

AI 시대, 코딩으로 수익을 만드는 방법을 배울 수 있습니다.

AI 활용 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.