
2026년 5월, TanStack npm 패키지(자바스크립트 개발자들이 쓰는 오픈소스 라이브러리)에 악성 버전이 배포되어 개발자 컴퓨터에서 GitHub 토큰·SSH 키·클라우드 자격증명을 탈취하는 공급망(소프트웨어 납품 경로를 노린) 공격이 발생했습니다. 프랑스 보안 기업 CrowdSec은 이 공격으로 감염된 전직 직원 계정을 통해 비공개 GitHub 저장소 약 170개가 통째로 복사당했다고 9월 18일 밝혔습니다. 유출 데이터에는 소스 코드 외에 이용자 이메일 83건과 투자자 개인정보 51건도 포함되어 있었습니다. 같은 공격은 Mistral AI와 OpenAI에도 영향을 미친 것으로 확인되었습니다. CrowdSec은 자격증명을 교체하고 개발자 단말에 엔드포인트 보안 소프트웨어 도입을 의무화했습니다.
2026년 5월, TanStack npm 패키지 42종의 악성 버전 84개가 배포(CVE-2026-45321)되어 개발자 PC에서 GitHub OAuth 토큰·SSH 키·클라우드 자격증명을 탈취했습니다. 공격자는 탈취한 전직 직원의 GitHub 토큰으로 5월 22일 CrowdSec의 비공개 저장소 약 170개를 복사했습니다.
웹 콘솔·데이터 사이언스 모델·자동화 스크립트·IP 블록리스트 합의 알고리즘 등 소스 코드와 이용자 이메일 83건, 투자자 이름·이메일·투자 정보 51건이 유출되었습니다. 인프라·데이터베이스 접근 및 코드 변조는 없었습니다.
TanStack npm 공급망 침해로 전직 직원 노트북에서 GitHub OAuth 토큰이 탈취되었고, 퇴직 후에도 해당 직원의 GitHub 조직 접근 권한이 제때 회수되지 않아 피해가 발생했습니다.
CrowdSec은 9월 16~17일 노출된 자격증명을 교체하고, 코드·시스템을 다루는 직원 노트북에 엔드포인트 보안 소프트웨어를 도입했습니다. 피해 이용자 및 투자자에게 개별 통보하고 당국에도 신고할 예정입니다.
npm 패키지 설치 시 공급망 무결성 검증이 필수이며, 퇴직자 계정은 모든 시스템에서 즉시 회수해야 합니다. GitHub OAuth 토큰은 로그에 흔적을 남기지 않을 수 있으므로 조직 수준의 토큰 감사와 최소 권한 정책 적용이 중요합니다.
본문
공격자는 5월 22일 퇴사한 직원의 계정을 이용해 CrowdSec의 비공개 GitHub 저장소 약 170개를 복사했다고 CrowdSec이 9월 18일 밝혔습니다.
프랑스 보안 기업 CrowdSec은 퇴사 직원의 GitHub 접근 권한을 열어둔 상태였습니다. CrowdSec에 따르면 해당 직원의 노트북은 5월에 발생한 TanStack 공급망 공격으로 침해되었으며, 이 공격에서 TanStack npm 패키지의 악성 버전이 개발자 컴퓨터에서 자격증명을 훔쳤습니다.
유출된 코드는 9월 16일 온라인 포럼에 게시되었습니다. 소스 코드와 함께 CrowdSec 이용자 83명의 이메일 주소, 그리고 2020년 당시 잠재 투자자 51명의 이름·이메일 주소·투자 관련 정보도 포함되어 있었다고 회사 측은 밝혔습니다.
CrowdSec은 해당 계정이 코드 복사에만 사용되었으며, 인프라와 데이터베이스에는 접근이 없었고, 코드가 변경되지도 않았다고 설명했습니다.
코드가 탈취된 경위
5월 11일, 42개 TanStack npm 패키지의 악성 버전 84개가 배포되었습니다. 이 침해 사건은 CVE-2026-45321로 추적됩니다. TanStack의 보안 권고에 따르면, 해당 버전 중 하나를 설치하면 GitHub 토큰·SSH 키·클라우드 자격증명을 포함한 자격증명을 컴퓨터에서 탈취하는 코드가 실행되었습니다.
CrowdSec은 전직 직원의 GitHub OAuth 토큰을 이용해 11일 후 복사가 이루어졌다고 밝혔습니다. 회사는 해당 직원이 일부 작업을 마무리할 수 있도록 접근 권한을 유지해두고 있었습니다.
CrowdSec은 복사가 이루어진 지 사흘 뒤인 5월 25일 해당 직원의 계정을 GitHub 조직에서 제거했으며, 이는 유출 사실을 알기 수개월 전이었습니다. 다른 접근 권한은 이미 회수된 상태였으며, 이것이 AWS 시스템에서 의심 활동이 포착되지 않은 이유라고 회사 측은 설명했습니다.
해당 토큰은 회사가 확인할 수 있는 GitHub 로그에 흔적을 남기지 않았고, 유출 사실을 알았을 때는 이미 존재하지 않았습니다. CrowdSec은 이후 GitHub 지원팀을 통해 토큰 사용 이력을 추적해 TanStack이 공격 출처임을 확인했다고 밝혔습니다.
CrowdSec은 전직 직원의 노트북에 어떤 악성 패키지가 언제 설치되었는지는 밝히지 않았으며, 보고서에는 GitHub 측의 자체 조사 결과도 포함되지 않았습니다. 회사는 개발자들의 기기를 점검했으며 이상이 없었다고 밝혔습니다.
동일한 공격은 다른 기업에도 영향을 미쳤습니다. Mistral AI는 개발자 기기가 관련되었다고 밝혔고, OpenAI는 직원 두 명의 기기가 영향을 받아 일부 내부 코드 저장소에 무단 접근이 있었다고 밝혔습니다.
유출된 아카이브의 내용
CrowdSec의 오픈소스 보안 엔진(Security Engine)은 서버에 대한 공격을 감지하며, 탐지 정보를 공유한 이용자는 악성 IP 주소 공유 차단 목록을 받을 수 있습니다. 유출된 코드는 이 공개 엔진이 아닌 회사의 비공개 저장소에서 가져온 것입니다.
회사에 따르면 유출된 코드에는 웹 콘솔, 데이터 사이언스 스크립트 및 모델, 자동화 스크립트, 그리고 어떤 IP 주소를 차단 목록에 추가할지 결정하는 합의 알고리즘이 포함되어 있습니다.
회사는 해당 코드가 약 4개월 전 것으로, 그동안 많은 변경이 있었다고 밝혔습니다.
CrowdSec은 이번 유출로 합의 알고리즘이 사용하는 임계값, 예를 들어 IP 주소를 차단 목록에 추가하기 전에 필요한 탐지 횟수 등도 노출되었다고 밝혔습니다. 이 정보는 이전까지 공개된 적이 없었습니다.
회사가 파악하는 한 차단 목록은 여전히 '포이즈닝(poisoning)', 즉 무해한 IP 주소를 차단 목록에 올리도록 속이는 공격에 대한 방어가 유지되고 있습니다. 그러한 공격을 시도하려면 수십 개의 신뢰할 수 있는 엔진을 통해, 수십 개의 별도 네트워크에서 수십 건의 탐지를 만들어내야 하며 막대한 비용이 든다고 CrowdSec은 설명했습니다. 또한 임계값은 회사가 자주 변경할 수 있다고 덧붙였습니다.
회사에 따르면 유출 코드 내에서 실제 사용 가능한 자격증명은 AWS SNS(알림 서비스) 관련 것이 유일했으며, 이 자격증명으로는 하나의 토픽에 메시지를 게시하는 것만 가능했습니다. 코드가 포럼에 게시되기 한 달 전인 8월 17일 누군가가 이를 사용하려 했으나 더 이상 진행되지는 않았습니다. 코드에 포함된 다른 토큰들은 이미 교체되었거나, 회사가 파악하는 한 인터넷에서 사용할 수 없는 것들이었습니다.
CrowdSec은 약 15만 명의 이용자를 보유하고 있습니다. 데이터 사이언스 팀은 제품 이용 방식 연구를 위해 노출된 이메일 주소 83건을 보유하고 있었으며, 회사는 해당 이용자들에게 연락할 예정이라고 밝혔습니다.
투자자 정보는 CrowdSec이 외부 공개를 의도하지 않았다고 밝힌 2020년 시스템에서 나온 것입니다. 회사는 투자자들과 당국에 유출 사실을 신고하겠다고 밝혔습니다. CEO 필립 위모(Philippe Humeau)는 보고서에서 투자자들에게 "이 점에 대해 개인적으로 사과드립니다"라고 직접 서한을 남겼습니다.
피해를 입은 회사는 9월 16일과 17일에 노출된 자격증명을 교체했습니다. 당시 개발자 기기에 엔드포인트 보안 소프트웨어를 의무화하지 않았으나, 현재는 코드 또는 시스템을 다루는 직원의 노트북에 해당 소프트웨어를 실행하고 있습니다.
CrowdSec의 보고서 및 최초 성명 어디에도 이용자에게 특정 조치를 취하도록 요청하는 내용은 없습니다.
CrowdSec 발표 내용의 변경 사항
9월 18일 보고서는 하루 전에 발표된 최초 성명과 내용이 다릅니다. 최초 성명에서 CrowdSec은 "클라이언트 데이터, 로그인/비밀번호, 이름, 조직 정보 등 그 어떤 것도 유출되지 않았다"고 밝혔으며, 피해는 회사 내부에 그쳤다고 했습니다.
최초 성명은 또한 TanStack 침해 사건을 유출의 매우 유력한 출처로 지목했습니다. 5월에 CrowdSec 내부에서 사용되던 특정 컴포넌트에 백도어가 심겨 비공개 코드를 읽을 수 있는 API 키가 탈취된 것으로 보인다고 밝혔습니다.
9월 18일 보고서에는 CrowdSec의 코드에서 악성 TanStack 버전이 발견되지 않았다고 명시되어 있으며, 대신 전직 직원의 계정을 원인으로 지목하고 있습니다. 또한 최초 성명에서 유출되지 않았다고 밝혔던 투자자 이름과 이용자 이메일 주소 83건도 목록에 추가되었습니다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






