
보안 연구원들이 Twilio API를 사용하는 개발자를 노린 악성 npm(자바스크립트 패키지 관리자) 패키지 "tw-pkgprobe-7731"을 발견했습니다. 이 패키지는 Twilio의 공식 버그 바운티(보안 취약점 신고 포상제) 프로그램인 척 위장해 개발자 환경에 설치되도록 유도했습니다. 실행되면 환경 변수, 시스템 정보, Twilio 계정 인증 정보(ACCOUNT_SID, AUTH_TOKEN)를 외부 서버로 몰래 전송할 수 있습니다. 인증 정보가 유출되면 공격자가 피해자의 Twilio 계정으로 과금을 발생시키거나 메시지·통화를 무단으로 발송할 수 있습니다. 총 11개 버전이 약 45분 만에 연속 배포됐으며, 해당 npm 계정은 현재 삭제된 상태입니다.
악성 npm 패키지 'tw-pkgprobe-7731'이 Twilio 공식 버그 바운티 프로브로 위장해 npm 레지스트리에 업로드됐으며, Twilio 개발 환경 감지 후 자격증명·환경 변수·시스템 정보를 외부로 유출하는 기능을 포함했다.
피해 개발자의 Twilio ACCOUNT_SID와 AUTH_TOKEN이 탈취될 경우 공격자가 해당 계정으로 통신 서비스를 무단 사용하거나 요금을 발생시킬 수 있으며, node_modules에 추가 악성 패키지를 주입해 공급망 오염으로 이어질 수 있다.
패키지 내부 주석에 '공식 버그 바운티 프로브'라고 기재해 신뢰성을 위장했고, Twilio 개발 환경인지 먼저 확인한 뒤에만 악성 행위를 실행하는 표적형 로직으로 탐지를 회피했다.
해당 npm 계정과 패키지는 현재 삭제된 상태이며, ReversingLabs가 분석 보고서를 공개했다. Twilio 개발자는 의존성 패키지 목록에 해당 패키지 포함 여부를 즉시 확인해야 한다.
npm 패키지 설치 전 게시 계정의 신뢰도·배포 이력을 반드시 검증해야 하며, CI/CD 파이프라인에서 환경 변수로 관리되는 API 키·토큰의 노출 여부를 주기적으로 점검해야 한다. Twilio 자격증명이 환경 변수에 있다면 즉시 로테이션(재발급)을 권고한다.
본문
Ravie Lakshmanan 2026년 9월 22일 | 공급망 공격 / 악성코드
보안 연구원들이 "tw-pkgprobe-7731"이라는 악성 npm 패키지의 상세 정보를 공개했습니다. 이 패키지는 Twilio를 애플리케이션에 통합하는 개발자를 노린 보안 도구처럼 위장하면서, 몰래 민감한 데이터를 탈취하려 했습니다.
"tw-pkgprobe-7731" 패키지는 2026년 8월 중순 "twdepprobe7731"이라는 npm 계정에 의해 처음 npm 레지스트리에 업로드됐습니다. 약 45분 동안 같은 날 11개 버전이 빠르게 연속 배포됐으며, 해당 npm 계정은 현재 삭제된 상태입니다.
ReversingLabs 연구원 Lucija Valentić은 오늘 발표한 보고서에서 "tw-pkgprobe-7731의 첫 번째 버전은 공인된 보안 연구 프로브로 위장했다"고 밝혔습니다.
"패키지 내부 주석에는 이 패키지가 'Twilio HackerOne 프로그램에서 허가된 버그 바운티 연구 프로브'이며 'Twilio의 서버리스 패키저 샌드박스 내에서만 실행'되고 '로컬 프로세스·호스트 컨텍스트를 수집해 패키지 옆에 저장하며, 파괴적 행위는 없다'고 기재돼 있었다."
실행 시 패키지는 먼저 현재 환경이 Twilio 개발자 환경인지 확인합니다. 해당 조건을 충족하지 않으면 즉시 종료됩니다.
확인을 통과하면 악성코드는 환경 변수와 함께 마운트 정보, 임시 폴더, 각종 설정 등 시스템 세부 정보를 수집합니다. 수집된 정보는 이후 웹훅을 통해 외부로 유출됩니다.
이후 버전(1.0.1, 1.0.2, 1.0.3)은 Twilio API를 사용하는 개발자를 집중적으로 겨냥했으며, 특정 Twilio 계정 문자열 식별자(SID)와 연결된 폴더를 탐색했습니다. 특히 특정 SID 이름의 폴더가 존재하면 아무런 행위도 취하지 않았습니다.
ReversingLabs는 "그렇지 않고 일치하는 대상 폴더가 발견되면, 설치된 npm 패키지와 node_modules를 스캔해 커스텀 npm PoC 패키지를 주입하고, 그 안에 package.json과 index.js를 생성했다"고 설명했습니다.
버전 1.0.4에서는 process.env.ACCOUNT_SID와 process.env.AUTH_TOKEN을 탈취하는 기능이 추가된 것으로 알려졌습니다. 이를 통해 피해자의 Twilio 자격증명이 유출되면, 위협 행위자가 과금을 승인하거나 통신을 발송할 수 있게 됩니다.
그러나 마지막 세 버전(1.0.8, 1.1.0, 1.1.1)은 "버전 1.0.0에서 보였던 기본적인 프로빙(탐색) 프로파일로 되돌아가" 이전 버전에 포함됐던 악성 기능이 제거됐습니다.
아울러 마지막 두 버전은 support-api.us1.twilio[.]com, kafka-ui.au1.twilio[.]com, litellm.ai-services.corp.twilio[.]com 등 다양한 Twilio 관련 호스트를 탐색하고, 169.254.169[.]254/latest/meta-data/에서 AWS 메타데이터까지 수집하는 OSINT(공개 출처 정보 수집) 활동도 수행한 것으로 나타났습니다.
이처럼 비정상적인 방향 전환을 고려하면, 최종 목적이 무엇인지, 실제 버그 바운티 프로그램의 일환으로 배포됐는지 여부는 불분명합니다. 다만 ReversingLabs는 해당 패키지 버전들이 HackerOne에 게재된 Twilio의 버그 헌팅 가이드라인을 따르지 않았다고 밝혔습니다.
Valentić은 "즉, 이 패키지들은 Twilio가 수립한 기본적인 보안 연구 가이드라인을 명백히 위반하고 있으며, 악의적 의도가 있었음을 시사한다"며 다음과 같이 덧붙였습니다. "위협 행위자는 특정 릴리스에서 악성 기능을 겉보기에 무해한 코드로 둘러싸 숨기려 했지만, 악성 코드 자체나 자신의 활동을 실제로 은폐하려는 노력은 기울이지 않았다."
"난독화, 타이포스쿼팅(비슷한 이름으로 속이는 기법), 게시 npm 계정을 정상적으로 보이게 하려는 시도가 전혀 없었습니다 — 이는 이전 캠페인에서 우리가 일상적으로 봐온 전술들입니다. 이는 Twilio 개발자를 노린 이번 악성 캠페인의 배후가 비교적 덜 정교한 위협 행위자임을 시사합니다."
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






