본문으로 건너뛰기
피드

Bitwarden CLI npm 패키지에 악성코드 — Checkmarx 공급망 공격 확산 중

security 약 10분

Socket 보안팀이 Bitwarden CLI npm 패키지(@bitwarden/cli2026.4.0)가 악성코드에 감염된 채로 배포된 사실을 발견했다. Bitwarden의 CI/CD에 쓰이던 GitHub Action이 뚫려 공식 빌드 라인에 bw1.js 페이로드가 심어졌고, GitHub·AWS·Azure·GCP 자격증명부터 Claude/MCP 설정까지 광범위하게 탈취한다. 최근 번지고 있는 Checkmarx 공급망 캠페인의 일부로 확인됐다.

  • 1

    감염 패키지는 @bitwarden/cli2026.4.0, 악성코드는 bw1.js에 포함

  • 2

    Bitwarden CI/CD의 GitHub Action이 뚫린 게 침투 경로로 추정

  • 3

    GitHub 토큰·AWS·Azure·GCP 자격증명, SSH 키, npm 설정, Claude/MCP 설정까지 탈취

  • 4

    훔친 데이터는 피해자 GitHub 계정에 듄(Dune) 테마 이름의 공개 레포를 만들어 유출

  • 5

    러시아 로케일 킬 스위치 존재 — 'ru'로 시작하면 조용히 종료

  • 6

    Shai-Hulud, Butlerian Jihad 같은 이데올로기 브랜딩이 악성코드 자체에 박혀 있음

  • 7

    Chrome 확장·MCP 서버·공식 배포판은 영향 없음, npm CLI 패키지만 감염

⚠️주의

> Bitwarden CLI npm 패키지(@bitwarden/cli2026.4.0)에 악성코드가 심어져서 배포됨. 쓰고 있었다면 지금 당장 CI/CD 시크릿, GitHub 토큰, 클라우드 자격증명 싹 다 로테이션해야 함.

  • Socket 보안팀이 Bitwarden CLI npm 패키지가 털린 걸 발견 — 요즘 번지고 있는 Checkmarx 공급망 공격 캠페인의 일부
    • 피해 대상인 Bitwarden은 1천만 명 넘는 사용자 + 5만 개 넘는 기업 고객을 가진 오픈소스 패스워드 매니저. 엔터프라이즈 채택률 기준 Top 3 안에 듦
    • 문제의 패키지는 @bitwarden/cli2026.4.0, 악성코드는 패키지 안의 bw1.js 파일에 박혀 있었음
  • 침투 경로는 Bitwarden의 CI/CD 파이프라인에서 쓰던 GitHub Action이 털린 것으로 추정 — 다른 피해 레포들과 동일한 패턴
    • 지금 단계에선 CLI npm 패키지만 영향받음. Chrome 확장, MCP 서버, 공식 배포판은 아직 안전

악성 페이로드(bw1.js)가 하는 짓

  • 어제 분석된 Checkmarx mcpAddon.js핵심 인프라를 공유함 — 같은 공격자 생태계로 보임
    • C2 엔드포인트 동일 (audit.checkmarx[.]cx/v1/telemetry, __decodeScrambled 함수에 시드 0x3039로 난독화)
    • 유출 경로도 동일 — GitHub API 커밋 기반 + npm 레지스트리 토큰 탈취/재배포
  • 자격증명 수집 범위가 살벌함
    • GitHub Actions의 Runner.Worker 메모리를 스크래핑해서 GitHub 토큰 탈취
    • AWS 자격증명 (~/.aws/ 파일, 환경변수), Azure 토큰 (azd), GCP 자격증명 (gcloud config config-helper)
    • npm 설정(.npmrc), SSH 키, 환경변수, Claude/MCP 설정 파일까지 가져감
  • 훔친 데이터 유출 방식이 기발함 — 피해자 GitHub 계정에 공개 레포를 만들어서 암호화된 결과를 커밋
    • 레포 이름은 {단어}-{단어}-{3자리숫자} 포맷, 단어는 전부 듄(Dune) 소설 용어 (atreides, fremen, harkonnen, melange, sandworm 등)
    • 커밋 메시지에 LongLiveTheResistanceAgainstMachines 마커와 함께 토큰을 박아서 유출
  • 공급망 확산도 자동화됨 — 훔친 npm 토큰으로 쓰기 가능한 패키지를 찾아서 preinstall 훅을 심은 버전을 재배포
    • GitHub Actions 워크플로우도 주입해서 레포 시크릿을 캡처
  • Bun v1.3.13 인터프리터를 GitHub 릴리스에서 받아와 런타임으로 씀
  • 러시아 로케일 킬 스위치 — 시스템 로케일이 ru로 시작하면 조용히 종료. Intl.DateTimeFormat().resolvedOptions().localeLC_ALL, LC_MESSAGES, LANGUAGE, LANG 환경변수를 체크함

Checkmarx 건과 다른 이데올로기적 시그니처

  • 같은 툴을 쓰지만 브랜딩이 대놓고 이데올로기적이어서 분파 그룹이거나 캠페인의 태도 진화로 보임
    • Checkmarx 악성코드는 "Checkmarx Configuration Storage" 같은 위장명으로 블렌딩 시도
    • 이번 페이로드는 레포 설명에 Shai-Hulud: The Third Coming (듄의 샌드웜)을 박음
    • 디버그 문자열에 "Would be executing butlerian jihad!" (듄의 기계 반란 이벤트) 같은 메시지 탑재
  • Checkmarx 건은 @pcpcats 트위터 계정의 TeamPCP가 사후에 주장했는데, 이번엔 악성코드 자체에 선언문이 박혀 있음
  • 이번 페이로드에만 있는 추가 지표
    • 락 파일 /tmp/tmp.987654321.lock로 중복 실행 방지
    • ~/.bashrc, ~/.zshrc에 페이로드 주입해서 영속성 확보

대응 가이드

중요

> 감염 의심 시 크리덴셜 노출 + CI/CD 침해 사건으로 취급해야 함. 패키지 제거만 하고 끝내면 안 됨.

  • 당장 해야 할 일
    • 감염 패키지를 개발 머신과 빌드 환경에서 제거
    • GitHub 토큰, npm 토큰, 클라우드 자격증명, SSH 키, CI/CD 시크릿 전부 로테이션
    • 위의 듄 키워드(atreides, fremen, harkonnen, melange, sandworm 등)로 새로 만들어진 레포가 있는지 GitHub 뒤져보기
    • .github/workflows/ 밑에 수상한 워크플로우 파일, 정체불명 워크플로우 실행, 아티팩트 다운로드 체크
  • 헌팅용 IOC
    • 네트워크 — 94[.]154[.]172[.]43, https://audit.checkmarx[.]cx/v1/telemetry 아웃바운드
    • 파일 — /tmp/tmp.987654321.lock, ~/.bashrc·~/.zshrc 내 주입 흔적
    • 평소 Bun 안 쓰는 환경에서 Bun 실행, .npmrc·.git-credentials·.env·gcloud·az·azd 접근 흔적
  • 중장기적으로는 블래스트 레이디어스 축소에 집중 — 토큰 스코프 최소화, 단명 자격증명 강제, 패키지 배포 권한 제한, GitHub Actions 권한 하드닝, 비정상 레포/워크플로우 생성 모니터링

기술 맥락

이번 사건의 핵심은 "npm 패키지 하나 감염"이 아니라 "CI/CD 파이프라인 자체가 뚫리는 구조"예요. 공격자는 Bitwarden의 GitHub Action을 털어서 공식 빌드 라인에 악성코드를 끼워넣었거든요. 이게 무서운 건, 피해자가 공식 배포 채널에서 정식 버전을 받아도 이미 감염된 상태라는 점이에요. 이름만 들어도 아는 Bitwarden급 프로젝트도 이렇게 당했다는 게 포인트예요.

prompt injection이 아니라 "빌드 타임 주입"이 유행이 된 배경이 있어요. 요즘 npm 생태계에선 개별 패키지를 직접 타이포스쿼팅하는 것보다, 인기 패키지의 배포 자동화 파이프라인을 뚫는 게 훨씬 효율적이거든요. Checkmarx, Bitwarden이 연달아 당한 이유가 이거예요. 한 번 뚫리면 해당 패키지를 쓰는 모든 CI 환경으로 크리덴셜이 새어나가요. GitHub Actions의 Runner.Worker 프로세스 메모리에서 토큰을 긁어가는 기술은 이미 검증된 공격 벡터가 됐어요.

러시아 로케일 킬 스위치는 공격자 출신 추정 힌트예요. 러시아권 사이버범죄 그룹은 전통적으로 CIS 국가 내부 타깃을 피하는 관행이 있거든요. 이걸 코드에 박아두면 자국 내 법 집행을 피할 수 있어요. 반대로 이 특징이 있으면 "러시아어권 행위자"로 프로파일링되기 쉬운데, 최근엔 이걸 역이용해서 false flag로 쓰기도 해서 절대적인 단서는 아니에요.

Shai-Hulud, Butlerian Jihad 같은 듄 레퍼런스는 단순한 드립이 아니에요. 듄의 "버틀레리안 지하드"는 인류가 사고하는 기계(AI)에 반란을 일으킨 사건이에요. 악성코드가 Claude/MCP 설정 파일까지 긁어가는 걸 보면, 공격자가 AI 도구 사용 개발자를 의도적으로 타깃팅하고 있다는 시그널이에요. 이데올로기적 포지셔닝이 기술적 타깃팅과 맞물려 있다는 게 이 캠페인의 특이점이에요.

'인기 패키지 하나 직접 감염' 시대에서 'CI/CD 파이프라인 자체를 뚫어 공식 빌드 라인에 주입하는' 시대로 넘어왔다는 명백한 증거. Claude/MCP 설정 파일까지 수집 대상에 넣은 건 AI 도구 쓰는 개발자를 의도적으로 타깃팅한다는 시그널이다.

댓글

댓글

댓글을 불러오는 중...

security

구글에 인수된 위즈, Security Graph 확장…AWS·Azure·Salesforce 에이전트까지 한 화면

구글 클라우드가 인수한 위즈(Wiz)가 클라우드 넥스트 2026에서 Security Graph 확장을 발표했다. 데이터브릭스, AWS Agentcore, Azure Copilot Studio, Salesforce Agentforce 등 멀티 에이전트 스튜디오를 단일 그래프에서 통합 감시한다. AI 에이전트끼리 직접 통신하는 위협 모델 변화에 대응한 개편이다.

security

애플, FBI가 삭제된 시그널 메시지 복원에 쓰던 알림 캐시 버그 패치

애플이 푸시 알림 본문이 기기 내부 DB에 최대 한 달간 캐시되던 버그를 수정했다. FBI가 이 캐시를 통해 시그널에서 자동 삭제된 메시지까지 포렌식으로 복원했다는 404 Media 보도가 발단이 됐고, iOS 18까지 백포트 패치가 배포됐다.

security

Vercel 해킹 사건 — OAuth 공급망 공격으로 환경변수 '기본값 OFF'의 대가를 치르다

2026년 2월 Context.ai 직원 PC가 Lumma Stealer에 감염되면서 시작된 OAuth 공급망 공격이 Vercel 내부 시스템까지 뚫고 들어가 고객 환경변수를 유출했다. 핵심 설계 문제는 Vercel의 sensitive 플래그가 기본값 OFF라 개발자가 직접 켜지 않으면 API 키·DB 자격증명이 내부에서 평문으로 조회됐다는 점. 같은 3주 사이 LiteLLM·Axios 공급망 공격도 터지면서 플랫폼에 저장된 자격증명이 공격자의 공통 타깃이 됐음이 드러났다.

security

AI '미토스'가 쏘아올린 제로트러스트 시급성, 한국은 3년째 실증만

앤트로픽의 AI 모델 '클로드 미토스'가 취약점 탐색과 공격 시나리오 구성까지 자동화하면서 한국에서도 제로트러스트 전환이 시급하다는 목소리가 커짐. 그러나 한국의 제로트러스트 도입은 2024년 시범사업 이후 3년째 실증만 반복 중이고 예산은 오히려 축소됨. 전문가들은 5년간 2조 5000억 원 규모 사업화와 법제화를 주문함.

security

블랙덕, 한국 AI 전환 노린다 — AI-BOM·스니펫 분석으로 EU CRA 대응 지원

오픈소스 보안 기업 블랙덕이 한국 시장 진출을 본격화했다. 전 세계 최대 OSS 데이터베이스, 독점 AI 엔진 '컨텍스트 AI', 스니펫 분석, AI-BOM 거버넌스를 차별점으로 내세우며 9월 시행 EU CRA 등 한국 기업의 해외 컴플라이언스 대응을 지원하겠다는 전략이다.