Abstrakcyjna ilustracja techniczna na głębokim granatowym tle: po lewej stronie z pojedynczej pionowej nici zwisa świecący bursztynowy zarys klucza, a cienka pozioma nić biegnie od niego w prawo do oddalającej się ściany wysokich matowych szklanych paneli. Trzy z paneli świecą ciepłym bursztynowym światłem od tyłu, pozostałe pozostają stalowoniebieskie. Delikatny cyjanowy łuk z małymi znacznikami wznosi się od lewego dolnego rogu po ścianie. Nie pojawiają się żadni ludzie, logotypy ani czytelny tekst. Logo OrcaRouter znajduje się na białym pasku w prawym dolnym rogu.
AI Safety Incidents

CrowdSec stracił 170 prywatnych repozytoriów w dziewięć minut z powodu luki w offboardingu

Autor

Elias Hawthorne

Data publikacji

Najnowsze modele · 20Zobacz wszystkie modele →
Benchmarki: Artificial Analysis · aktualizowane codziennie
Powrót do wszystkich wpisów

22 maja 2026 r., między 05:52:29 a 06:01:33 UTC, osoba działająca z adresu IP w Toronto w Kanadzie użyła konta GitHub dewelopera, który właśnie odszedł z CrowdSec, aby skopiować około 170 prywatnych repozytoriów francuskiej firmy zajmującej się bezpieczeństwem. CrowdSec opublikował tę chronologię w swoim raporcie incydentu z dnia 18 września 2026 — data, którą archiwum incydentów AI przypisuje temu rekordowi — po tym, jak 16 września na pwnforum, giełdzie cyberprzestępczej, pojawiło się archiwum jego kodu źródłowego. Konto nadal działało, ponieważ firma celowo pozostawiła dostęp dewelopera do GitHuba otwarty, aby mógł dokończyć jakieś prace. Laptop, z którego to zrobiono, został zakażony jedenaście dni wcześniej przez robaka kradnącego poświadczenia Mini Shai-Hulud, którego TeamPCP rozpowszechnił za pośrednictwem pakietów npm TanStack. Ten wpis pochodzi z rejestru złożonego 18 września 2026 r., a pełny udokumentowany zestaw incydentów — każdy wpis ma własną wagę, stopień pewności, oznaczenie sporu i źródła — znajduje się w Orca AI Incident Archive, gdzie ten wpis można przeczytać obok innych przypadków łańcucha dostaw z tego samego roku.

Kradzież nie ograniczyła się do kodu. Raport CrowdSec ujawnił również adresy e-mail 83 użytkowników, pochodzące z wewnętrznej listy monitorowania ds. nauki o danych i w większości będące kontami Gmail, a także imiona i nazwiska, adresy e-mail oraz kontekst inwestycyjny 51 potencjalnych inwestorów z 2020 r.. Na tle około 150 000 użytkowników 83 adresy to niewielki ułamek; nie jest to jednak zero. Dyrektor generalny Philippe Humeau osobiste przeprosiny skierował wyłącznie do inwestorów: „Ujawnienie waszych imion i nazwisk oraz adresów e-mail to kwestia, którą omówimy bezpośrednio z wami i właściwymi organami, i za to osobiście przepraszam”.

Co faktycznie zajęło dziewięć minut

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.

Zapisy Git, które GitHub przekazał CrowdSec, zaczynają się o 05:52:32.138 UTC od operacji fetch dotyczącej jednego z repozytoriów firmy, a aktywność kończy się o 06:01:33. Liczba około 170 prywatnych repozytoriów w archiwum pochodzi z tych danych Git. W swoim opisie Humeau określa ujawnienie jako „ograniczone do kodu źródłowego CrowdSecurity, w tym ponad 130 publicznych repozytoriów i wielu prywatnych”. DevOps.com, relacjonując incydent 24 września, podał łączną liczbę publicznych i prywatnych repozytoriów na około 300 — większą niż sama liczba prywatnych repozytoriów CrowdSec i taką, której raport firmy nie podaje.

Zawartość stanowiły zwykłe elementy wyposażenia szybko rozwijającej się firmy SaaS: kod źródłowy konsoli webowej, skrypty wdrożeniowe i automatyzacyjne oraz skrypty i modele data science stojące za jej analityką. Najbardziej wrażliwym elementem, który wymienia CrowdSec, jest „algorytm konsensusu”, decydujący, które adresy IP trafiają na jej listy blokad. Architektura algorytmu była już publicznie znana, ale jego progi różnorodności i wykrywania nie były, a teraz są znane. Humeau twierdzi, że progi są ruchomym celem, a sterowanie konsensusem nadal wymagałoby dużej, kosztownej floty serwerów; firma mówi, że może je dostosowywać i obserwuje pod kątem rozbieżności.

Dane uwierzytelniające to ta część, która mogła wypaść znacznie gorzej. „Byliśmy bardzo blisko czystego wyniku” – napisał Humeau. Jedynym użytecznym sekretem w wycieku był token AWS Simple Notification Service, ograniczony do publikowania w jednym temacie. Ktoś przetestował go 17 sierpnia 2026 z adresu IP 23.234.84.102, wywołując GetCallerIdentity i ListTopics wobec tematów dev i env, i nie poszedł dalej. Większość pozostałych tokenów i sekretów w kodzie została unieważniona lub wymieniona przed wyciekiem. CrowdSec twierdzi, że nie uzyskano dostępu do jego infrastruktury i baz danych, a w projekcie open source, jego prywatnym kodzie źródłowym ani potokach kompilacji nie zmieniono żadnego kodu.

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.

Dlaczego konto nadal działało

Błąd w procesie offboardingu jest niewielki i konkretny. Do czasu odejścia dewelopera CrowdSec zdążyło już odebrać mu pozostałe dostępy; konto GitHub pozostawiono aktywne, napisał Humeau, ponieważ „rozstaliśmy się w dobrych stosunkach z naszym deweloperem, a on chciał dokończyć pewną pracę”. Konto zostało usunięte z organizacji GitHub 25 maja, trzy dni po tym, jak repozytoria zostały już skopiowane.

CrowdSec nie mógł wtedy dostrzec kradzieży, a powód warto podać precyzyjnie. Token OAuth nie występował w dzienniku audytu organizacji ani w dzienniku audytu żadnego obecnego członka, a zanim ktokolwiek zaczął go szukać, już nie istniał: został utworzony, użyty i wygasł, nie pozostawiając śladu, który firma mogłaby odczytać. GitHub przechowuje aktywność Git jedynie w ruchomym siedmiodniowym oknie dla organizacji nieobjętych planem enterprise, jak zauważa sam CrowdSec. Przełom przyszedł ze strony zespołu wsparcia GitHuba, który prześledził pełny cykl życia tokena i dostarczył aktywność Git z dwugodzinnego okna obejmującego moment skopiowania. W ten sposób firma dotarła do konta byłego pracownika. Powiązanie z TanStack wynikło z tego samego działania.

Wyciekłe archiwum zawierało własne dowody. Znajdujący się w nim plik .github/.git/configzapisywał adres URL origin w postaci oauth2:gho_xxxxxxxxx@github.com, identyfikując to poświadczenie jako token OAuth GitHub i odpowiadając udokumentowanej metodologii TeamPCP. CrowdSec twierdzi, że sprawdziło maszyny deweloperskie pod kątem złośliwych pakietów i nie znalazło w swoich repozytoriach żadnej z wersji TanStack z backdoorem — wynik, który określa jako nierozstrzygający, a nie oczyszczający z zarzutów.

Kto to zrobił i jak mocne jest przypisanie?

CrowdSec przypisuje ten plik do „jednego z założycieli BreachForum i członka, diencracked”, przy czym adres członka podano jako diencracked@cock.li, a działanie miało odbywać się z adresu IP w Toronto, przy czym strefa czasowa maszyny była ustawiona na UTC-4. Firma dodaje w tym samym zdaniu własne zastrzeżenie: „Przynajmniej tak wynika z danych Git”. Raport Dark Reading z 22 września zawiera to samo przypisanie do założyciela BreachForum i pseudonimu diencracked.

Kampania upstream jest lepiej udokumentowana niż tożsamości stojące za nią. Pakiety TanStack zostały zainfekowane backdoorem 11 maja 2026 r., kiedy opublikowano 84 złośliwe wersje w 42 pakietach; The Hacker News rejestruje to naruszenie jako CVE-2026-45321 i powołuje się na własny biuletyn TanStack dotyczący ładunku kradzieży poświadczeń. Oś czasu CrowdSec odnotowuje, że 22 maja, tego samego dnia co kopia repozytorium, TeamPCP — śledzony przez CrowdSec jako UNC6780 — przyznał się do przejęcia repozytoriów należących do Mistral AI.

Co jest ustalone, a co nie

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.

Ustalono: skopiowanie około 170 prywatnych repozytoriów nastąpiło 22 maja 2026 r., w dziewięciominutowym oknie, przy użyciu wciąż ważnego konta GitHub dewelopera, który odszedł z firmy — sekwencja odtworzona na podstawie własnych zapisów aktywności Git serwisu GitHub, a nie wywnioskowana. Firma sama również potwierdziła: ujawnienie 83 adresów e-mail użytkowników i danych 51 potencjalnych inwestorów, unieważnienie z 25 maja, sprawdzony token SNS oraz ustalenie, że nie zmieniono żadnego kodu i nie dotarto do żadnej infrastruktury ani bazy danych.

Nie ustalono: która zatruta paczka dotarła do laptopa i kiedy. CrowdSec stwierdza wprost, że nie zidentyfikował ani jednego, ani drugiego. Skan repozytorium firmy był niejednoznaczny, a jej maszyny deweloperskie okazały się czyste, co nie bardzo pasuje do laptopa, który — według samej firmy — został przejęty. Tę lukę się uznaje, zamiast ją zamykać.

Nieopublikowane:strona GitHub w dochodzeniu. CrowdSec twierdzi, że zespół wsparcia GitHub potwierdził pochodzenie TanStack, ale The Hacker News zauważa, że raport firmy nie zawiera żadnych ustaleń samego GitHuba, a GitHub nie opublikował własnej wersji cyklu życia tokena.

Potwierdzenie: Dark Reading, The Hacker News i DevOps.com każdy opisał incydent w ciągu tygodnia, a wszystkie trzy opierają się na raporcie CrowdSec i biuletynie TanStack, a nie na niezależnym badaniu kryminalistycznym systemów CrowdSec. Dark Reading dodaje komentarz zewnętrznych praktyków, w tym Denisa Calderone z Suzu Labs, który nazwał zaniedbanie unieważnienia „podstawowymi rzeczami”. Notatka badawcza Cloud Security Alliance z 20 września powtarza sekwencję, ale dokument zawiera własne zastrzeżenie, że został wygenerowany z pomocą AI i nie przeszedł oficjalnego przeglądu CSA — warto o tym wiedzieć, zanim zostanie uznany za drugie niezależne ustalenie. Archiwum ocenia pewność zapisu jako A, sporność jako fałsz, rzeczywistą szkodę jako prawdę.

Pierwsze stwierdzenie i korekta

W pierwszym publicznym oświadczeniu z 17 września CrowdSec podało, że „nie wyciekły żadne dane klientów, loginy/hasła, nazwy, organizacje ani nic innego, a CrowdSec nie przechowuje danych osobowych (PII) ani logów klientów; wpływ ogranicza się do CrowdSec”. Wysunięto w nim również hipotezę techniczną: że w wewnętrznym komponencie umieszczono backdoora, aby ukraść klucz API umożliwiający odczyt prywatnego kodu.

Pełniejszy raport dzień później zastąpił tę hipotezę relacją byłego pracownika i ujawnił 83 adresy oraz 51 inwestorów. Hacker News opisuje to jako skorygowanie wcześniejszego twierdzenia. Własne ujęcie CrowdSec jest węższe: 83 adresy pochodziły z listy monitorującej ds. data science, a nie z rekordów klientów, a dane inwestorów pochodziły z 2020 r. Oba opisy mogą być prawdziwe jednocześnie — adresy nie były kontami klientów, a mimo to nadal były danymi osobowymi w zrzucie opublikowanym na forum przestępczym. Firma twierdzi, że powiadomi dotkniętych użytkowników i inwestorów oraz zgłosi wyciek władzom.

Co się potem zmieniło?

• Poświadczenia i tokeny znalezione w archiwum zrotowano w nocy 16 września i przez 17 września, a pozostałą część rotacji ukończono następnego ranka.

• Wykrywanie i reagowanie na punkty końcowe jest teraz wdrożone na stacjach roboczych i laptopach osób mających styczność z bazą kodu lub infrastrukturą CrowdSec; firma wskazuje Aikido Security jako ten produkt. Humeau przyznaje, że powinno to zostać wdrożone wcześniej, i przyznaje również, że maszyna byłego pracownika raczej nie miała go uruchomionego.

• Progi algorytmu konsensusu ujawnione w wycieku są dostosowywane, a w całej sieci list blokowanych prowadzony jest ściślejszy monitoring odchyleń statystycznych.

• Firma postawiła sobie za cel skrócenie tej samej reakcji — inwentaryzacja, rotacja, analiza śledcza i ujawnianie — z 48 godzin do poniżej 24.

• Z poszkodowanymi użytkownikami i inwestorami kontaktujemy się bezpośrednio, a o wycieku informujemy władze — zgodnie z brzmieniem firmy.

Dlaczego to znajduje się w archiwum incydentów AI

Udział sztucznej inteligencji jest tu infrastrukturalny i warto dokładnie określić, co to oznacza. Nic w relacji CrowdSec nie opisuje systemu AI podejmującego decyzję podczas włamania; sprawcą była osoba lub osoby wykorzystujące skradziony token. To, co czyni tę sprawę incydentem w branży AI, to zasięg skutków. Biblioteki TanStack tworzą interfejsy znacznej części nowoczesnego oprogramowania, robak, który pozyskał token, jest zbudowany tak, aby jednym przebiegiem przechwycić poświadczenia do chmury, SSH i dostawców modeli, a materiały skopiowane z CrowdSec obejmowały skrypty i modele do analizy danych, a nie tylko kod aplikacji.

Ta sama kampania dotarła bezpośrednio do firm zajmujących się AI. Oś czasu CrowdSec odnotowuje, że TeamPCP zgłosiło 22 maja przejęcie repozytoriów Mistral AI, a The Hacker News donosi, że doszło do naruszenia dwóch urządzeń pracowników OpenAI, wraz z nieautoryzowanym dostępem do ograniczonego zestawu wewnętrznych repozytoriów kodu. Archiwum odnotowuje przypadek CrowdSec jako drugą ofiarę pośrednią majowego naruszenia TanStack, po tych urządzeniach pracowników OpenAI.

Dystans między kopią a jej wykryciem to ta część, która powinna zostać przebyta. Repozytoria zabrano 22 maja; CrowdSec dowiedział się o wycieku 16 września, gdy zespół Fuites Info skontaktował się z firmą w sprawie wpisu na pwnforum — 117 dni później i nie dzięki własnemu monitoringowi. Mechanizm, który umożliwił to opóźnienie, nie był egzotyczny: konto, które o trzy dni przetrwało swój okres użyteczności, token, który nie pozostawił śladu w logach, które firma mogła odczytać, oraz laptopy deweloperów bez detekcji punktów końcowych. CrowdSec, firma sprzedająca wykrywanie zagrożeń, miała wszystkie trzy.