lazarusholic

Everyday is lazarus.dayβ

Chai.js 플러그인으로 위장한 북한발 npm 악성 패키지 'chai-as-init' 분석

2026-06-16, ESTSecurity
https://blog.alyac.co.kr/5766
#ContagiousInterview #NPM

Contents

이스트시큐리티 대응센터(ESRC)는 공급망 위협 모니터링을 통해 유명 테스트 프레임워크인 Chai.js의 플러그인으로 위장한 악성 npm 패키지(chai-as-init)가 v1.4.5 ~ v1.4.7까지 총 3개 버전으로 배포된 사실을 확인했습니다.
이 패키지는 설치 또는 코드에서 불러오는 즉시 외부 서버에서 악성 코드를 내려받아 실행하며, 시스템의 자격증명을 탈취하는 인포스틸러와 원격 명령을 수행하는 RAT 기능을 함께 갖추고 있습니다.
chai-as-init 패키지는 인기 패키지인 chai 및 chai-as-promised 패키지명을 모방한 타이포스쿼팅 (Typosquatting)기법을 사용했으나 내부 코드는 전혀 다릅니다.
공격자는 정상 Node.js 로깅 라이브러리인 pino의 전체 소스와 문서, 타입 정의를 통째로 복사해 정상 패키지처럼 보이도록 위장했으며, 총 42개 파일 가운데 실제 악성 코드는 단 2개 파일(index.js, lib/initializeCaller.js)에만 존재합니다.
또한 함수명을 initializeCaller, runBackgroundTask처럼 일반적인 초기화 코드처럼 짓고, 탈취한 데이터를 cookie나 level, timestamp 같은 로그,쿠키 형식의 필드명에 담아 정상 데이터로 오인하도록 만들었습니다.
README는 chai를 설명하지만 실제 코드는 pino인 점, 내부 버전 정보가 선언된 1.4.7과 달리 pino의 9.6.0으로 남아 있는 점 등 곳곳에서 위장 흔적이 확인되었습니다.
모든 버전은 동일한 초기 실행 구조를 사용합니다.
진입점인 index.js는 정상적인 Express 미들웨어처럼 보이지만, 패키지를 불러오는 순간 백그라운드에서 악성 …

IoC

http://서버hxxp://144.172.89.180:8086/upload
http://ipcheck-hashed.vercel.app
http://144.172.89.18
https://ipcheck-hashed.vercel.app/api/auth/b4dadd6a26d820d085963
https://ipcheck-hashed.vercel.app/api/auth/b4dadd6a26d820d08596
http://144.172.89.180:8086/upload
http://tiiny.site/data.json
144.172.89.180
144.172.89.18
EBED87A47743FA5D81F8E1B2BF6E9058
078B18EB695DA94B85D29C94462BA64C
02C31A426801C27D65B02D9E04C28FD4
90708BF06B972FBDE9AE254AA3E0F835
F8F5DF788C5B46E1FA779F01658F94C1
751F36896A5547C4EAECFF9EC80558CD
860DB751FC7700524BD3895B43DAB67C