TeamPCP, Trivy 침해 이후 npm에 CanisterWorm 배포 — 2026년 12주 기술 뉴스
Industry shifts, security alerts, hardware, and AI/ML Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 12-2026bolt2 CRITICAL
article
TeamPCP, Trivy 침해 이후 npm에 CanisterWorm 배포
TAG: 보안
2026년 3월 20일, 위협 행위자 TeamPCP가 npm에서 CanisterWorm이라는 새로운 자가 전파 웜을 배포하여 @EmilGroup 스코프의 패키지 28개, @opengov 스코프의 패키지 16개, 그리고 @teale.io/eslint-config와 @airtm/uuid-base32 등 개별 패키지를 침해하였습니다. 이번 공격은 3단계 구조로 이루어졌습니다. Node.js postinstall 훅이 Python 백도어를 pgmon이라는 이름의 systemd 사용자 서비스로 설치하며, 해당 서비스는 Restart=always로 설정되어 약 50분 간격으로 ICP(Internet Computer) 캐니스터에 비컨을 전송합니다. ICP 캐니스터는 검열에 강한 C2 데드드롭 역할을 수행합니다. 별도의 deploy.js 웜 스크립트는 탈취한 npm 토큰을 이용해 해당 토큰 소유자의 스코프 내 모든 패키지를 자동으로 검색하고 수 초 안에 재배포합니다. 업그레이드된 웜 버전은 .npmrc 파일과 환경 변수에서 npm 토큰을 직접 수집하여 감염된 개발자 머신을 새로운 전파 경로로 활용할 수 있게 되었습니다. 침해 지표로는 네 가지 파동에 대한 SHA256 해시값과 ~/.local/share/pgmon/ 및 ~/.config/systemd/user/pgmon.service 파일 경로가 있습니다.
새로운 공급망 공격에서 인기 React Native 전화번호 패키지를 덮친 Glassworm
TAG: 보안
2026년 3월 16일, AstrOOnauta가 배포한 인기 React Native npm 패키지 두 개가 조직적인 공급망 공격으로 백도어 처리되었습니다. 대상 패키지는 react-native-country-select@0.3.91과 react-native-international-phone-number@0.11.8이며, 두 패키지를 합산하면 월 13만 4천 건 이상의 다운로드 수를 기록합니다. 두 악성 릴리스 모두 동일한 난독화된 preinstall 훅(install.js, SHA-256: 59221aa9623d86c930357dba7e3f54138c7ccbd0daa9c483d766cd8ce1b6ad26)을 추가하여 Solana RPC 엔드포인트를 통해 AES-256-CBC로 암호화된 2단계 페이로드를 가져옵니다. 이 체인은 러시아 로케일이나 타임존을 감지하면 실행을 건너뛰고, Windows 환경에서 schtasks와 Run 레지스트리 키를 통해 지속성을 확보합니다. 복원된 3단계 페이로드는 MetaMask, Exodus, Trust Wallet, OKX Wallet, Braavos 등 다수의 암호화폐 지갑을 대상으로 하는 Windows 전용 자격증명 및 암호화폐 탈취 도구로, npm 및 GitHub 자격증명도 함께 탈취합니다. 또한 Google Calendar URL을 추가 우회 레이어로 활용하여 수집된 데이터를 45.32.150.251 및 217.69.3.152의 공격자 인프라로 유출합니다.
GitHub이 2022년 개인 패키지와 공개 악성 패키지 간 이름 충돌로 인한 오탐 문제로 일시 중단했던 npm용 Dependabot 멀웨어 알림 기능을 재활성화하였습니다. 새롭게 설계된 시스템은 옵트인 방식으로 운영되며, 멀웨어 알림은 CVE 기반 취약성 알림과 별도의 하위 카테고리로 분리되어 트리아지가 더욱 명확해졌습니다. 저장소, 조직 또는 엔터프라이즈 보안 설정을 통해 활성화할 수 있으며, 설정 가능한 Dependabot 규칙으로 멀웨어 유형, 생태계, 패키지 스코프 또는 이름 패턴별로 필터링이 가능합니다. 기능을 활성화하면 GitHub Advisory Database에 있는 기존 권고 사항에 대한 알림이 즉시 소급 적용됩니다. 현재는 npm 생태계만 지원하지만, GitHub은 OpenSSF Malware Streams 프로젝트와의 통합을 통해 다른 생태계로 커버리지를 확장하고 있습니다. 비공개 레지스트리를 사용하는 조직은 오탐을 줄이기 위해 알림 규칙을 설정할 것이 권장됩니다.
Mozilla가 AI 중심의 신뢰 저하 시대를 맞아 Firefox의 프라이버시 우선 가치를 시각적으로 구현하는 새로운 마스코트 캐릭터 Kit을 공개하였습니다. Kit은 크리에이티브 에이전시 JKR 및 일러스트레이터 Marco Palmieri와의 협업을 통해 인간 팀이 직접 제작한 캐릭터로, AI로 생성된 것이 아닙니다. 이 캐릭터는 온보딩 과정, 기능 발견 안내, 설정 변경 완료와 같은 작은 성취 순간에 Firefox 내부에 등장하며, Mozilla의 제품 사이트, 블로그, 소셜 미디어에서도 만나볼 수 있습니다. Kit은 입이 없는 대신 눈, 자세, 몸짓 언어로 감정을 표현하며, 시그니처 꼬리가 움직임과 감정을 전달합니다. 사용자는 Kit을 새 탭 배경화면으로 설정할 수도 있습니다. Mozilla는 Kit을 광고 중심의 빌리어네어 소유 브라우저와 대비되는, Firefox가 사용자를 위해 적극적으로 작동하고 있다는 신호로 포지셔닝하고 있습니다.
Windsurf가 기존의 크레딧 기반 과금 방식을 폐지하고, 일별 및 주별로 리셋되는 사용량 쿼터 방식의 새로운 플랜을 도입하였습니다. 새로운 라인업은 Free($0/월), Pro($20/월), Teams($40/시트/월), 그리고 상당히 높은 쿼터와 우선 지원을 제공하는 신규 Max 플랜($200/월)으로 구성됩니다. 기존 크레딧 방식은 단순 요청과 복잡한 요청에 동일한 비용을 부과하여 대화형 워크플로우를 저해하였으나, 새로운 방식은 실제 작업 복잡도에 비례한 비용을 목표로 합니다. 기존 Pro 및 Teams 구독자는 현재 가격이 유지되며, 2026년 3월 19일 새 시스템 도입 전 1주일 무료 체험이 제공됩니다. 포함된 쿼터를 초과한 경우 API 요금 기준으로 추가 사용량을 구매할 수 있으며, SWE-1.5와 같은 무료 모델은 추가 비용 없이 계속 이용 가능합니다. 이전에 구매한 추가 크레딧은 동일한 금액의 달러 추가 사용량으로 전환됩니다.
Theo가 Cursor의 Composer 2 모델 출시를 둘러싼 논란을 상세히 분석합니다. Composer 2는 자체 개발 코딩 모델로 소개되었으나, API URL 조사를 통해 Moonshot AI의 Kimi K2.5를 기반으로 구축되었음이 명시적인 공개 없이 드러났습니다. Composer 2는 Claude Opus 4.6 대비 약 10배 저렴한 추론 비용($0.50/$2.50 vs. $5/$25 per million tokens)으로 프론티어급 코딩 벤치마크 성능을 달성했습니다. 이는 Kimi K2.5 오픈 웨이트 기반 모델에 약 3배의 추가 컴퓨팅 리소스를 투입한 사후 학습과 강화학습을 적용한 결과입니다. 이번 논란의 핵심은 Kimi K2.5의 수정 MIT 라이선스로, 월 1억 명 이상의 이용자 또는 월 200만 달러 이상의 매출을 가진 상업용 제품에 대해 Kimi K2.5 출처 표시를 의무화하고 있습니다. Cursor는 Fireworks AI를 추론 파트너로 활용해 간접적으로 라이선스 조건을 충족했으며, Moonshot AI도 이를 최종 승인하였습니다. Theo는 Cursor가 처음부터 기반 모델을 투명하게 공개했어야 한다고 주장하며, 이 같은 사례가 향후 소규모 연구소들의 오픈 웨이트 모델 공개를 저해할 수 있다고 경고합니다.
2026년 3월 20일, 위협 행위자 TeamPCP가 npm에서 CanisterWorm이라는 새로운 자가 전파 웜을 배포하여 @EmilGroup 스코프의 패키지 28개, @opengov 스코프의 패키지 16개, 그리고 @teale.io/eslint-config와 @airtm/uuid-base32 등 개별 패키지를 침해하였습니다. 이번 공격은 3단계 구조로 이루어졌습니다. Node.js postinstall 훅이 Python 백도어를 pgmon이라는 이름의 systemd 사용자 서비스로 설치하며, 해당 서비스는 Restart=always로 설정되어 약 50분 간격으로 ICP(Internet Computer) 캐니스터에 비컨을 전송합니다. ICP 캐니스터는 검열에 강한 C2 데드드롭 역할을 수행합니다. 별도의 deploy.js 웜 스크립트는 탈취한 npm 토큰을 이용해 해당 토큰 소유자의 스코프 내 모든 패키지를 자동으로 검색하고 수 초 안에 재배포합니다. 업그레이드된 웜 버전은 .npmrc 파일과 환경 변수에서 npm 토큰을 직접 수집하여 감염된 개발자 머신을 새로운 전파 경로로 활용할 수 있게 되었습니다. 침해 지표로는 네 가지 파동에 대한 SHA256 해시값과 ~/.local/share/pgmon/ 및 ~/.config/systemd/user/pgmon.service 파일 경로가 있습니다.
Theo가 Cursor의 Composer 2 모델 출시를 둘러싼 논란을 상세히 분석합니다. Composer 2는 자체 개발 코딩 모델로 소개되었으나, API URL 조사를 통해 Moonshot AI의 Kimi K2.5를 기반으로 구축되었음이 명시적인 공개 없이 드러났습니다. Composer 2는 Claude Opus 4.6 대비 약 10배 저렴한 추론 비용($0.50/$2.50 vs. $5/$25 per million tokens)으로 프론티어급 코딩 벤치마크 성능을 달성했습니다. 이는 Kimi K2.5 오픈 웨이트 기반 모델에 약 3배의 추가 컴퓨팅 리소스를 투입한 사후 학습과 강화학습을 적용한 결과입니다. 이번 논란의 핵심은 Kimi K2.5의 수정 MIT 라이선스로, 월 1억 명 이상의 이용자 또는 월 200만 달러 이상의 매출을 가진 상업용 제품에 대해 Kimi K2.5 출처 표시를 의무화하고 있습니다. Cursor는 Fireworks AI를 추론 파트너로 활용해 간접적으로 라이선스 조건을 충족했으며, Moonshot AI도 이를 최종 승인하였습니다. Theo는 Cursor가 처음부터 기반 모델을 투명하게 공개했어야 한다고 주장하며, 이 같은 사례가 향후 소규모 연구소들의 오픈 웨이트 모델 공개를 저해할 수 있다고 경고합니다.
새로운 공급망 공격에서 인기 React Native 전화번호 패키지를 덮친 Glassworm
2026년 3월 16일, AstrOOnauta가 배포한 인기 React Native npm 패키지 두 개가 조직적인 공급망 공격으로 백도어 처리되었습니다. 대상 패키지는 react-native-country-select@0.3.91과 react-native-international-phone-number@0.11.8이며, 두 패키지를 합산하면 월 13만 4천 건 이상의 다운로드 수를 기록합니다. 두 악성 릴리스 모두 동일한 난독화된 preinstall 훅(install.js, SHA-256: 59221aa9623d86c930357dba7e3f54138c7ccbd0daa9c483d766cd8ce1b6ad26)을 추가하여 Solana RPC 엔드포인트를 통해 AES-256-CBC로 암호화된 2단계 페이로드를 가져옵니다. 이 체인은 러시아 로케일이나 타임존을 감지하면 실행을 건너뛰고, Windows 환경에서 schtasks와 Run 레지스트리 키를 통해 지속성을 확보합니다. 복원된 3단계 페이로드는 MetaMask, Exodus, Trust Wallet, OKX Wallet, Braavos 등 다수의 암호화폐 지갑을 대상으로 하는 Windows 전용 자격증명 및 암호화폐 탈취 도구로, npm 및 GitHub 자격증명도 함께 탈취합니다. 또한 Google Calendar URL을 추가 우회 레이어로 활용하여 수집된 데이터를 45.32.150.251 및 217.69.3.152의 공격자 인프라로 유출합니다.
GitHub이 2022년 개인 패키지와 공개 악성 패키지 간 이름 충돌로 인한 오탐 문제로 일시 중단했던 npm용 Dependabot 멀웨어 알림 기능을 재활성화하였습니다. 새롭게 설계된 시스템은 옵트인 방식으로 운영되며, 멀웨어 알림은 CVE 기반 취약성 알림과 별도의 하위 카테고리로 분리되어 트리아지가 더욱 명확해졌습니다. 저장소, 조직 또는 엔터프라이즈 보안 설정을 통해 활성화할 수 있으며, 설정 가능한 Dependabot 규칙으로 멀웨어 유형, 생태계, 패키지 스코프 또는 이름 패턴별로 필터링이 가능합니다. 기능을 활성화하면 GitHub Advisory Database에 있는 기존 권고 사항에 대한 알림이 즉시 소급 적용됩니다. 현재는 npm 생태계만 지원하지만, GitHub은 OpenSSF Malware Streams 프로젝트와의 통합을 통해 다른 생태계로 커버리지를 확장하고 있습니다. 비공개 레지스트리를 사용하는 조직은 오탐을 줄이기 위해 알림 규칙을 설정할 것이 권장됩니다.
Mozilla가 AI 중심의 신뢰 저하 시대를 맞아 Firefox의 프라이버시 우선 가치를 시각적으로 구현하는 새로운 마스코트 캐릭터 Kit을 공개하였습니다. Kit은 크리에이티브 에이전시 JKR 및 일러스트레이터 Marco Palmieri와의 협업을 통해 인간 팀이 직접 제작한 캐릭터로, AI로 생성된 것이 아닙니다. 이 캐릭터는 온보딩 과정, 기능 발견 안내, 설정 변경 완료와 같은 작은 성취 순간에 Firefox 내부에 등장하며, Mozilla의 제품 사이트, 블로그, 소셜 미디어에서도 만나볼 수 있습니다. Kit은 입이 없는 대신 눈, 자세, 몸짓 언어로 감정을 표현하며, 시그니처 꼬리가 움직임과 감정을 전달합니다. 사용자는 Kit을 새 탭 배경화면으로 설정할 수도 있습니다. Mozilla는 Kit을 광고 중심의 빌리어네어 소유 브라우저와 대비되는, Firefox가 사용자를 위해 적극적으로 작동하고 있다는 신호로 포지셔닝하고 있습니다.
Windsurf가 기존의 크레딧 기반 과금 방식을 폐지하고, 일별 및 주별로 리셋되는 사용량 쿼터 방식의 새로운 플랜을 도입하였습니다. 새로운 라인업은 Free($0/월), Pro($20/월), Teams($40/시트/월), 그리고 상당히 높은 쿼터와 우선 지원을 제공하는 신규 Max 플랜($200/월)으로 구성됩니다. 기존 크레딧 방식은 단순 요청과 복잡한 요청에 동일한 비용을 부과하여 대화형 워크플로우를 저해하였으나, 새로운 방식은 실제 작업 복잡도에 비례한 비용을 목표로 합니다. 기존 Pro 및 Teams 구독자는 현재 가격이 유지되며, 2026년 3월 19일 새 시스템 도입 전 1주일 무료 체험이 제공됩니다. 포함된 쿼터를 초과한 경우 API 요금 기준으로 추가 사용량을 구매할 수 있으며, SWE-1.5와 같은 무료 모델은 추가 비용 없이 계속 이용 가능합니다. 이전에 구매한 추가 크레딧은 동일한 금액의 달러 추가 사용량으로 전환됩니다.
12주차에는 npm 공급망 공격이 연속으로 발생하였습니다. 3월 16일, Glassworm이 react-native-country-select@0.3.91과 react-native-international-phone-number@0.11.8(월 13만 4천 건 이상 다운로드)에 난독화된 preinstall 훅으로 백도어를 심었습니다. 이 훅은 Solana RPC 엔드포인트에서 AES-256-CBC 페이로드를 가져오고, 러시아 로케일 머신을 건너뛰며, Windows에서 schtasks로 지속성을 확보하고, MetaMask, Exodus, Trust Wallet, OKX Wallet, Braavos 등을 노리는 자격증명 및 암호화폐 지갑 탈취 도구를 실행합니다. 나흘 뒤, TeamPCP의 CanisterWorm이 @EmilGroup 및 @opengov 스코프 등 44개 이상의 패키지를 침해했습니다. Python 백도어를 systemdpgmon 서비스로 설치하고, ICP(Internet Computer) 캐니스터를 검열 내성 C2로 활용합니다. 업그레이드된 버전은 .npmrc 파일에서 npm 토큰을 수집하여 감염된 개발자 머신을 전파 경로로 활용합니다. GitHub은 2022년 이후 중단되었던 npm Dependabot 멀웨어 알림을 CVE 알림과 분리된 옵트인 방식으로 재활성화했으며, OpenSSF Malware Streams 통합으로 뒷받침됩니다.
업계 측면에서 Mozilla는 JKR 에이전시 및 일러스트레이터 Marco Palmieri와 협업해 인간이 제작한(AI 생성이 아닌) Firefox 마스코트 Kit을 공개하여 프라이버시 우선 가치를 가시화했습니다. Windsurf는 크레딧 방식에서 일별/주별 사용량 쿼터 방식으로 가격 정책을 개편하고 월 200달러의 Max 티어를 추가했습니다. Cursor/Kimi K2.5 논란은 오픈 웨이트 모델 출처 표시 논쟁을 촉발했습니다. Composer 2가 Moonshot AI의 Kimi K2.5를 기반으로 명시적 공개 없이 구축된 것이 밝혀지면서, 수정 MIT 라이선스의 1억 명 사용자 출처 표시 기준과 기반 모델 비공개가 향후 오픈 웨이트 릴리스를 억제할 수 있는지에 대한 논의가 이어졌습니다.
Key Takeaways
같은 주에 두 건의 심각한 npm 공급망 공격이 발생했습니다. Glassworm(Solana RPC 페이로드, 월 13만 4천 다운로드)과 CanisterWorm(ICP 캐니스터 C2, 44개 이상 패키지, .npmrc 파일의 npm 토큰 탈취를 통한 자가 전파)이 그것입니다.
GitHub은 2022년부터 중단된 npm Dependabot 멀웨어 알림을 CVE 알림과 분리된 옵트인 하위 카테고리로 재활성화했습니다. OpenSSF Malware Streams를 기반으로 하며 현재는 npm만 지원하지만 확장 중입니다.
Cursor의 Composer 2가 Moonshot AI의 Kimi K2.5를 기반으로 명시적 공개 없이 구축된 것이 밝혀지며, 오픈 웨이트 모델 출처 표시 요건과 비공개 방식이 향후 오픈 웨이트 릴리스를 억제할 가능성에 대한 논쟁이 재점화되었습니다.