짙은 네이비 바탕의 추상적인 기술 일러스트: 왼쪽에는 하나의 수직 실에 매달린 빛나는 앰버색 열쇠 실루엣이 있고, 그로부터 오른쪽으로 뻗은 가느다란 수평 실이 뒤로 물러나는 높은 프로스티드 유리 패널 벽으로 이어진다. 패널 세 개는 뒤에서 따뜻한 앰버색으로 빛나고, 나머지는 스틸 블루로 남아 있다. 작은 눈금 표시가 있는 가느다란 시안색 호가 왼쪽 아래에서 벽을 가로질러 위로 올라간다. 사람, 로고, 읽을 수 있는 텍스트는 나타나지 않는다. OrcaRouter 로고는 오른쪽 아래의 흰색 띠 안에 있다.
AI Safety Incidents

CrowdSec, 오프보딩 공백으로 9분 만에 비공개 저장소 170개를 잃다

작성자

Elias Hawthorne

게시일

최신 모델 · 20모든 모델 보기 →
벤치마크: Artificial Analysis · 매일 업데이트
모든 게시물로 돌아가기

2026년 5월 22일 05:52:29부터 06:01:33 UTC 사이에 캐나다 토론토의 IP 주소에서 작업하던 누군가가 CrowdSec을 막 떠난 개발자의 GitHub 계정을 사용해 이 프랑스 보안 회사의 비공개 저장소 약 170개를 복사했습니다. CrowdSec은 2026년 9월 18일 자체 사고 보고서에 그 타임라인을 공개했습니다 — AI 사고 아카이브가 이 기록에 부여한 날짜 — 이는 16일 pwnforum 사이버 범죄 마켓플레이스에 자사 소스 코드 아카이브가 나타난 뒤였습니다. 해당 계정이 여전히 작동한 이유는 회사가 개발자가 일부 작업을 마칠 수 있도록 개발자의 GitHub 접근 권한을 일부러 열어 두었기 때문입니다. 그 계정 뒤에 있던 노트북은 11일 전 TeamPCP가 TanStack의 npm 패키지를 통해 퍼뜨린 자격 증명 탈취 웜 Mini Shai-Hulud에 감염되어 있었습니다. 이 계정은 2026년 9월 18일 제출된 기록에서 발췌한 것이며, 문서화된 전체 사고 세트 — 각 항목은 자체 심각도, 신뢰도 등급, 분쟁 플래그 및 출처를 포함함 — 는 Orca AI Incident Archive에 있으며, 여기에서 이 사례는 같은 해의 다른 공급망 사례들과 나란히 읽을 수 있습니다.

이번 유출은 코드에만 국한되지 않았습니다. CrowdSec의 보고서는 또한 내부 데이터 과학 모니터링 목록에서 가져온 83명의 사용자의 이메일 주소를 공개했는데, 대부분 Gmail 계정이었으며, 추가로 2020년의 잠재 투자자 51명의 이름과 성, 이메일 주소, 투자 관련 맥락 정보도 공개했습니다. 약 15만 명의 사용자에 비하면 83개의 주소는 작은 비율이지만, 결코 0은 아닙니다. 필리프 위모(Philippe Humeau) 최고경영자는 투자자들에게만 개인적인 사과를 남겼습니다. "여러분의 이름과 이메일 주소가 유출된 것은 여러분과 관계 당국과 직접 논의할 사안이며, 이 점에 대해 제가 개인적으로 사과드립니다."

9분이 실제로 가져간 것

Dark navy HTML timeline card with a faint grid, kicked 'crowdsec · 22 may to 18 september 2026 · times as published' and headed 'The nine minutes, and the 117 days after'. Two columns of timestamped rows. Left, headed 'Upstream, then the copy': 11 May, 84 malicious versions across 42 TanStack npm packages ship the Mini Shai-Hulud credential harvester; 22 May 05:52:29, the copy window opens with a first fetch logged at 05:52:32.138 UTC; 22 May 06:01:33, the window closes with about 170 private repositories copied from an IP in Toronto, machine timezone UTC-4; 25 May, the former developer's account is removed from the GitHub organisation, three days after the copy. Right, headed 'Before disclosure, then discovery': 17 August, the exposed AWS SNS token is probed from 23.234.84.102 and reaches no further than a single topic; 16 September 17:45, an archive of CrowdSec source code is published on the pwnforum marketplace; 16 September 20:00, the Fuites Info team contacts CrowdSec and a crisis cell is stood up; 17 September, token rotation begins and GitHub support traces the token's lifecycle; 18 September, the full report discloses 83 user email addresses and the details of 51 potential investors from 2020. A highlighted band reads 'The account was left open on purpose so a departing developer could finish some work. It was revoked on 25 May, after the repositories were already gone.' A footer cites CrowdSec's analysis of 18 September 2026. The OrcaRouter logo sits in a white strip at the bottom right.

GitHub가 CrowdSec에 돌려준 Git 기록은 05:52:32.138 UTC에 회사 저장소 중 하나에 대한 fetch로 시작되며, 활동은 06:01:33에 멈춘다. 해당 아카이브의 약 170개 비공개 저장소라는 수치는 그 Git 데이터에서 나온다. Humeau는 자신의 글에서 이번 노출이 "130개 이상의 공개 저장소와 다수의 비공개 저장소를 포함한 CrowdSecurity의 소스 코드로 제한된다"고 설명한다. 9월 24일 이 사건을 보도한 DevOps.com은 공개 및 비공개 저장소를 합친 수를 약 300개로 제시했다. 이는 CrowdSec 자체의 비공개 저장소 수치보다 큰 숫자이며, 회사 보고서에는 명시되지 않은 수치다.

그 내용물은 빠르게 성장하는 SaaS 기업의 흔한 구성 요소들이었다. 웹 콘솔의 소스, 배포 및 자동화 스크립트, 그리고 분석 기능을 뒷받침하는 데이터 과학 스크립트와 모델이었다. CrowdSec이 꼽은 가장 민감한 항목은 어떤 IP 주소가 차단 목록에 오를지 결정하는 "합의 알고리즘"이다. 그 알고리즘의 아키텍처는 이미 공개되어 있었지만 다양성 및 탐지 임계값은 공개되지 않았는데, 이제는 알려졌다. Humeau는 임계값은 계속 움직이는 목표이며 합의를 조종하려면 여전히 크고 비용이 많이 드는 서버군이 필요할 것이라고 주장한다. 회사는 임계값을 조정할 수 있으며 불일치를 주시하고 있다고 말한다.

자격 증명은 상황이 훨씬 더 악화될 수 있었던 부분이었다. "우리는 거의 깨끗한 상태에 가까웠다"라고 Humeau는 썼다. 덤프에서 사용 가능한 유일한 시크릿은 단일 토픽에 게시하는 권한으로 범위가 제한된 AWS Simple Notification Service 토큰이었다. 누군가가 이를 2026년 8월 17일에 IP 23.234.84.102에서 테스트하면서 dev 및 env 토픽 모두를 대상으로 GetCallerIdentity와 ListTopics를 호출했지만, 더 이상 진전은 없었다. 코드에 있던 대부분의 다른 토큰과 시크릿은 유출 전에 폐기되거나 교체되어 있었다. CrowdSec은 자사 인프라와 데이터베이스에 접근되지 않았으며, 오픈소스 프로젝트, 비공개 소스, 빌드 파이프라인 어디에서도 코드가 변경되지 않았다고 밝혔다.

Dark navy HTML card headed 'What left the building', kicked 'the exposure, as crowdsec counted it'. Five tiles across the top. 170, private repositories copied in the nine-minute window per the Git activity GitHub returned, noted 22 May 2026 05:52 to 06:01 UTC. 130+, public repositories the CEO says were also in the leak alongside many private ones, with a note that DevOps.com puts the combined figure at about 300. 83, user email addresses mostly Gmail drawn from a data-science monitoring list, out of roughly 150,000 users. 51, potential investors from 2020 with names, addresses and investment context, described as the group the CEO apologised to personally. 1, usable credential in the dump, an AWS SNS token scoped to one topic, probed 17 August from 23.234.84.102. Four smaller tiles below read: console source, the SaaS web console not open-sourced and not intended to be; data-science scripts and models, of little use without the data that trains them; automation scripts, deployment, QA and Slack bots that the company calls no-risk; consensus thresholds, the diversity and detection limits that were not public before. A highlighted band reads 'No infrastructure, no databases, no code changes, CrowdSec's finding. The data-science scripts and models and the blocklist consensus thresholds went with the source.' A footer cites CrowdSec on 18 September 2026, Dark Reading on 22 September and DevOps.com on 24 September. The OrcaRouter logo sits in a white strip at the bottom right.

계정이 왜 여전히 작동했는지

오프보딩 실패는 작고 구체적이다. 개발자가 떠날 무렵 CrowdSec은 이미 그의 다른 접근 권한을 제거한 상태였고, GitHub 계정이 유지된 이유에 대해 Humeau는 "우리는 개발자와 좋은 관계로 헤어졌고, 그는 몇 가지 작업을 마무리하고 싶어 했다"고 썼다. 해당 계정은 GitHub 조직에서 5월 25일에 제거되었으며, 이는 저장소가 이미 복사된 지 사흘 후였다.

CrowdSec은 당시 그 절도 행위를 볼 수 없었고, 그 이유는 정확히 짚어볼 가치가 있다. 해당 OAuth 토큰은 조직의 감사 로그에도, 현직 구성원 누구의 감사 로그에도 존재하지 않았으며, 누군가 찾아 나섰을 무렵에는 이미 사라진 뒤였다. 즉 토큰은 회사가 읽을 수 있는 흔적을 남기지 않은 채 생성되고 사용되고 만료되었다. CrowdSec 자체가 지적하듯, GitHub은 엔터프라이즈 요금제를 쓰지 않는 조직의 경우 Git 활동을 7일 단위로 순환하는 기간 동안만 보관한다. 돌파구는 GitHub 지원팀에서 마련되었는데, 이들은 토큰의 전체 수명 주기를 추적하고 복사가 이루어진 전후 2시간 구간의 Git 활동을 제공했다. 이를 통해 회사는 퇴사한 직원의 계정에 도달할 수 있었다. TanStack으로 이어지는 연결고리 역시 같은 작업에서 나왔다.

유출된 아카이브는 자체 증거를 담고 있었습니다. 그 안의 .github/.git/config에는 oauth2:gho_xxxxxxxxx@github.com 형식의 origin URL이 기록되어 있어, 해당 자격 증명이 GitHub OAuth 토큰임을 확인해 주었고 TeamPCP의 문서화된 방법론과 일치했습니다. CrowdSec은 개발자 머신에서 악성 패키지를 검사했지만 자사 저장소에서는 백도어가 삽입된 TanStack 버전을 하나도 발견하지 못했다고 밝혔습니다. 이는 면책이라기보다는 결론을 내릴 수 없는 결과라고 설명합니다.

누가 했는지, 그리고 그 귀속이 얼마나 확실한지

CrowdSec는 다운로드를 "BreachForum 창립자 중 한 명이자 회원인 diencracked"의 소행으로 돌리며, 해당 회원의 주소는 diencracked@cock.li로 제시되고, 토론토 IP에서 해당 머신의 시간대가 UTC-4로 설정된 상태로 운영되었다고 밝혔습니다. 회사는 같은 문장에서 자체적인 유보 조건을 덧붙입니다: "적어도 Git 데이터가 보여주는 것은 그렇습니다." Dark Reading의 9월 22일 보도도 BreachForum 창립자와 diencracked 핸들에 같은 귀속을 전하고 있습니다.

업스트림 캠페인은 그 배후의 정체보다 더 잘 문서화되어 있다. TanStack의 패키지들은 2026년 5월 11일 백도어가 설치되었는데, 42개 패키지에 걸쳐 84개의 악성 버전이 게시되었다. The Hacker News는 이 침해를 CVE-2026-45321로 기록하고 자격 증명 탈취 페이로드에 대해 TanStack 자체의 권고를 인용한다. CrowdSec의 타임라인에 따르면 5월 22일, 저장소 사본과 같은 날에 TeamPCP — CrowdSec이 UNC6780으로 추적 — 가 Mistral AI 소유 저장소를 침해한 책임을 주장했다.

무엇이 확립되었고, 무엇이 그렇지 않은가

Dark navy HTML card headed 'Established, asserted, and simply absent', kicked 'crowdsec · what the record supports', subtitled 'The archive grades this record confidence A, disputed false, real harm true. That grade covers the event; it does not extend to every claim made about it.' Three columns. 'Established', green: about 170 private repositories copied on 22 May 2026 in a nine-minute window from GitHub's own Git activity records; the account belonged to a departed developer and was revoked 25 May, three days later; 83 user email addresses and the details of 51 potential investors from 2020 appeared in the published archive; no infrastructure or database access and no code altered, per CrowdSec's audit. 'Asserted, not proven', amber: that the laptop was infected through TanStack, since CrowdSec's dev machines came back clean and its repository scan was inconclusive; which poisoned package arrived and when, which CrowdSec says it did not establish; that the downloaders were a BreachForum founder and the member diencracked, offered as what the Git data shows. 'Missing from the record', grey: GitHub's own findings, since support traced the token but no GitHub statement appears in the report; any arrest, charge or court record tying a named person to the copy; any independent forensic examination of CrowdSec's systems. A highlighted band reads 'The strongest evidence in the case is a Git fetch log inside a two-hour window GitHub handed over on request. The weakest is an attribution hedged in the same sentence that makes it.' A footer cites CrowdSec on 18 September, The Hacker News on 19 September and Dark Reading on 22 September. The OrcaRouter logo sits in a white strip at the bottom right.

확인된 사실: 약 170개의 비공개 저장소 복사가 2026년 5월 22일, 9분이라는 시간 창 안에서 퇴사한 개발자의 여전히 유효한 GitHub 계정을 이용해 이루어졌으며, 이는 추정이 아니라 GitHub 자체의 Git 활동 기록에서 재구성된 순서입니다. 또한 회사 측의 설명으로 확인된 사항은 다음과 같습니다: 83명의 사용자 이메일 주소와 51명의 잠재 투자자 세부 정보의 노출, 5월 25일의 권한 회수, 조사 대상이 된 SNS 토큰, 그리고 코드가 변경되지 않았고 어떤 인프라나 데이터베이스에도 접근되지 않았다는 사실입니다.

확인되지 않은 사항:어떤 오염된 패키지가 언제 노트북에 도달했는지. CrowdSec은 둘 중 어느 것도 밝혀내지 못했다고 분명히 밝혔다. 회사의 저장소 스캔은 결론을 내지 못했고 개발자 장비들은 깨끗한 것으로 나왔는데, 이는 회사 스스로 인정한 대로 침해당한 노트북과 어색하게 맞지 않는다. 이 격차는 해소된 것이 아니라 인정된 것이다.

공개되지 않음: 조사에 대한 GitHub 측의 입장. CrowdSec은 GitHub의 지원 팀이 TanStack이 원인임을 확인해 주었다고 말하지만, The Hacker News는 해당 회사의 보고서에 GitHub 자체의 조사 결과가 포함되어 있지 않으며 GitHub는 토큰의 생애 주기에 관한 자체 설명을 공개하지 않았다고 지적합니다.

교차 확인: Dark Reading, The Hacker News, DevOps.com은 각각 일주일 이내에 해당 사건을 보도했으며, 세 매체 모두 CrowdSec의 시스템에 대한 독립적인 포렌식 조사가 아니라 CrowdSec의 보고서와 TanStack의 권고를 토대로 보도했습니다. Dark Reading은 Suzu Labs의 Denis Calderone을 비롯한 외부 실무자들의 논평을 덧붙였는데, 그는 폐기 누락을 "첫날부터 챙겨야 하는 기본"이라고 불렀습니다. 9월 20일자 Cloud Security Alliance 연구 노트도 같은 순서를 반복하지만, 이 문서에는 AI 지원으로 작성되었고 공식 CSA 검토를 거치지 않았다는 자체 면책 조항이 있어, 이를 두 번째 독립적 발견으로 간주하기 전에 알아둘 필요가 있습니다. 아카이브는 기록 신뢰도를 A, 분쟁 여부는 거짓, 실제 피해는 사실로 평가합니다.

첫 번째 진술, 그리고 그 수정

CrowdSec은 9월 17일 첫 공개 성명에서 "고객 데이터, 로그인/비밀번호, 이름, 조직 또는 그 밖의 어떤 것도 유출되지 않았으며, CrowdSec은 PII나 고객 로그를 저장하지 않습니다. 영향은 CrowdSec에 국한됩니다"라고 밝혔다. 또한 내부 구성 요소에 백도어가 심어져 비공개 코드를 읽을 수 있는 API 키를 탈취했을 수 있다는 기술적 가설도 제시했다.

하루 뒤 더 자세한 보고서는 그 가설을 퇴사한 직원의 설명으로 대체하고, 83개의 주소와 51명의 투자자 정보를 공개했다. The Hacker News는 이를 앞선 주장이 정정된 것이라고 설명한다. CrowdSec 측의 설명은 더 좁다. 83개의 주소는 고객 기록이 아니라 데이터 과학 모니터링 목록에서 나온 것이며, 투자자 세부 정보는 2020년의 것이었다. 두 설명은 동시에 사실일 수 있다. 그 주소들은 고객 계정은 아니었지만, 범죄 포럼에 게시된 유출 자료에 포함된 개인 데이터이기는 했다. 회사는 영향을 받은 사용자와 투자자에게 통지하고 유출 사실을 당국에 신고할 것이라고 말한다.

그 후 무엇이 달라졌나요?

• 아카이브에서 발견된 자격 증명과 토큰은 9월 16일 밤과 17일 하루에 걸쳐 교체되었으며, 나머지 교체 작업은 다음 날 아침에 완료되었습니다.

• 엔드포인트 탐지 및 대응은 이제 CrowdSec의 코드베이스나 인프라를 다루는 사람들의 워크스테이션과 노트북에 배포되어 있으며, 회사는 Aikido Security를 해당 제품으로 명시한다. Humeau는 그것이 더 일찍 도입되었어야 했다고 인정하며, 또한 전 직원의 기기가 그것을 실행하고 있었을 가능성은 낮다고 인정한다.

• 유출로 드러난 합의 알고리즘 임계값이 조정되고 있으며, 블록리스트 네트워크 전반의 통계적 편차에 대한 모니터링이 더욱 강화되고 있습니다.

• 회사는 인벤토리, 순환, 포렌식 및 공개라는 동일한 대응 절차를 48시간에서 24시간 이내로 단축하겠다는 목표를 세웠습니다.

• 회사 측 표현에 따르면, 영향을 받은 사용자와 투자자에게 직접 연락하고 있으며 유출 사실을 당국에 신고하고 있습니다.

왜 이것이 AI 사고 아카이브에 있는가

여기서 AI의 관여는 인프라 차원의 것이며, 그것이 정확히 무엇을 의미하는지 짚고 넘어갈 필요가 있다. CrowdSec의 설명 어디에도 침입 중에 AI 시스템이 의사결정을 내렸다고 나오지 않는다. 행위자는 도난당한 토큰을 사용한 한 사람 또는 여러 사람이었다. 이 사건을 AI 업계의 사건으로 만드는 것은 피해 범위다. TanStack의 라이브러리는 현대 소프트웨어 상당수의 인터페이스를 구축하며, 해당 토큰을 수집한 웜은 클라우드, SSH 및 모델 제공업체 자격 증명을 한 번에 탈취하도록 만들어졌고, CrowdSec에서 복사된 자료에는 애플리케이션 코드만이 아니라 데이터 과학 스크립트와 모델도 포함되어 있었다.

같은 캠페인은 AI 기업들에도 직접 도달했다. CrowdSec의 타임라인에는 TeamPCP가 5월 22일 Mistral AI 저장소를 주장한 기록이 있으며, The Hacker News는 OpenAI 직원 기기 두 대가 영향을 받아 제한된 내부 코드 저장소 일부에 무단 접근이 발생했다고 보도한다. 아카이브는 CrowdSec 사례를 해당 OpenAI 직원 기기들에 이은 5월 TanStack 침해의 두 번째 다운스트림 피해자로 기록한다.

복사본과 그것이 발견되기까지의 거리, 바로 이 부분이 전달되어야 한다. 저장소는 5월 22일에 탈취되었다. CrowdSec은 9월 16일 Fuites Info 팀이 pwnforum 게시물에 대해 회사에 연락했을 때 유출 사실을 알게 되었다. 117일이 지난 뒤였고, 자체 모니터링을 통해서가 아니었다. 그 지연을 가능하게 한 메커니즘은 그리 이례적이지 않았다. 목적이 끝난 뒤 3일 더 살아남은 계정, 회사가 읽을 수 있는 로그에 아무 흔적도 남기지 않은 토큰, 엔드포인트 탐지가 없는 개발자 노트북. 위협 탐지를 판매하는 회사인 CrowdSec에는 이 세 가지가 모두 있었다.