
Botnet ukrył swój serwer dowodzenia w wierszu na GitHubie — i zamienił 3400 odsłoniętych serwerów AI w proxy do kopania kryptowalut
- OrcaNOWOŚĆOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 za 1 mln tokenów · 9 tok/s
- deepseekNOWOŚĆDeepSeek: DeepSeek V4.1 Flash 10172026-10-17$0.15 / $0.60 za 1 mln tokenów · 245 tok/s
- DeepSeekNOWOŚĆDeepSeek: DeepSeek V4.1 Flash2026-10-1740Inteligencja
- OrcaNOWOŚĆOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 za 1 mln tokenów · 91 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952Inteligencja
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856Inteligencja
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 za 1 mln tokenów · 796 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238Inteligencja
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Inteligencja
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Inteligencja
- xAIGrok 4.72026-09-2146Inteligencja
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 za 1 mln tokenów · 39 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 za 1 mln tokenów · 832 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453Inteligencja77Kod
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241Inteligencja76Kod
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245Inteligencja76Kod
- AnthropicAnthropic: Claude Fable 5.12026-09-0153Inteligencja82Kod
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 za 1 mln tokenów · 52 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 za 1 mln tokenów · 121 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642Inteligencja72Kod
7 października 2026 r. Black Lotus Labs należące do Lumen Technologies opublikowało badania dotyczące kampanii botnetowej o podłożu finansowym, którą śledzi jako Canto Incognito, a której złośliwemu oprogramowaniu nadało nazwę PoeLLM. Według badaczy kampania ta zainfekowała ponad 3400 serwerów wystawionych do internetu od co najmniej kwietnia 2026 r., skupionych w Stanach Zjednoczonych i Europie Zachodniej — a ofiary nie są przypadkowymi maszynami. Lumen twierdzi, że są to przeważnie podatne na ataki wdrożenia LiteLLM i Ollama, a także setki serwerów uruchamiających konwerter PDF Gotenberg i zestaw narzędzi programistycznych Gitea, przy czym w zakresie znajdują się również urządzenia Ivanti Sentry. Po zainfekowaniu serwery te były wykorzystywane do kopania kryptowalut i przekształcane w skanery oraz serwery exploitów — co Ryan English z Black Lotus Labs w wywiadzie dla CyberScoop nazwał „prywatną armią proxy opartych na AI”. Ten sam raport dostawcy udostępniono The Hacker News, który tego samego dnia opublikował własną relację.
Szczegół, który sprawia, że ten rekord warto przeczytać, to nie skala. To konstrukcja command-and-control: w malware nie ma ani zakodowanej na stałe domeny, ani zapasowego adresu IP. Adres bieżącego serwera C2 jest wyliczany w czasie wykonania z czterech słów zaczerpniętych z wiersza hostowanego w publicznym repozytorium GitHub. Zmień wiersz, a cały botnet się przeniesie.
Co tak naprawdę zostało naruszone
Według raportu Lumen ofiarami są korporacyjne usługi AI i deweloperskie, które były osiągalne z internetu: wdrożenia LiteLLM i Ollama, setki serwerów konwersji PDF Gotenberg oraz Gitea. Badacze Lumen ocenili, że kampania dotknęła również Ivanti Sentry. Głównymi celami skanowania były porty 3000 i 4000, domyślne porty nasłuchu odpowiednio dla Gotenberg i LiteLLM.
Dwie podatności mają znaczenie dla tego, jak uzyskano dostęp do maszyn, a raport podchodzi ostrożnie do obu:
• Ivanti Sentry, CVE-2026-10520. Lumen twierdzi, że jego badacze po raz pierwszy natknęli się na infrastrukturę PoeLLM podczas badania tej luki w zabezpieczonej bramie mobilnej Ivanti. Na początku czerwca 2026 r. ofiara zainfekowanego Ivanti Sentry połączyła się z dedykowanym serwerem pod adresem 5.78.73[.]122, a wkrótce potem zaczęła skanować sieć w poszukiwaniu innych podatnych urządzeń. Zwróć uwagę na zastrzeżenie: sama lista kluczowych wniosków Lumen mówi, że kampania „może być wymierzona w Ivanti Sentry”, podczas gdy treść tego samego raportu opisuje to urządzenie jako aktywną ofiarę. Ta wewnętrzna rozbieżność znajduje się w źródle pierwotnym.
• LiteLLM, CVE-2026-42271. Jedna próbka PoeLLM, którą zbadał Lumen, była wymierzona w punkt końcowy LiteLLM „/mcp-rest/test/connection”, który według Lumena „prawdopodobnie był ścieżką eksploatacji” podatności na wstrzyknięcie poleceń w LiteLLM zidentyfikowanej jako CVE-2026-42271. Raport CyberScoop opisuje ten sam punkt wejścia jako usterkę o maksymalnej wadze w Ivanti Sentry, nie podając identyfikatora CVE, i nie omawia luki w LiteLLM; The Hacker News nie podaje żadnego z tych CVE. Luka w punkcie końcowym MCP LiteLLM to ta, którą to archiwum odnotowało wcześniej w 2026 r., zanim udokumentowano tę kampanię.
To, co ukradziony dostęp dawał operatorowi, to moc obliczeniowa i dane. „Eksponowane usługi AI/LLM są cenne nie tylko z powodu podatności w oprogramowaniu, ale także dlatego, że mogą zawierać przydatne dane i działać na wydajnym sprzęcie nadającym się do kopania” – napisał Lumen. English powiedział CyberScoop, że złośliwe oprogramowanie zawiera również funkcjonalność zdalnego wykonywania kodu, która mogłaby pozwolić operatorowi nadużyć modeli AI działających na serwerach ofiar — podano jako możliwość, a nie zaobserwowany rezultat.
Wiersz, który jest także tablicą wyszukiwania
Konto GitHub, o którym mowa, to „ejejejdfbbebe”, a repozytorium jest forkiem kodu źródłowego strony nodejs.org, który nie ma widocznego związku z samym Node.js. W nim, w pliku o nazwie „dash.css” — nazwa pliku, która nie istnieje w oryginalnym repozytorium — operator umieścił dwuzwrotkowy wiersz zatytułowany „O naturze połączenia”. Lumen naliczył 11 aktualizacji wprowadzonych do niego od pierwszego commita z 13 kwietnia 2026 r.; CyberScoop podaje, że treść zmieniano „co najmniej dwanaście razy”.
Jak zarejestrował Lumen we wrześniu 2026 r., pierwsza zwrotka brzmiała: „W cichym szumie sterownika maszyny zaczynają mówić, każdy impuls diody przewleka światło przez miedziane żyły. Nauczyliśmy ciemność nieść znaczenie, bajt po bajcie — język zbudowany z błyskawicy, zimny i czysty”. Druga zwrotka zawiera wers „Za murem szyfrowania sygnał znajduje drogę, tykanie odległych serwerów odpowiada”.
![A screenshot of a technical explainer card titled 'Four words from a poem, read as a number'. The left column is headed 'Extracted from the verse' and quotes two lines of the poem with four words highlighted: driver, diode, encryption and distant servers. A note below explains that the fourth word is recovered by searching for the string 'of distant servers', stepping back to the previous whitespace and requiring the four bytes before the word to spell 'the '. The right column is headed 'Matched in a hard-coded dictionary' and lists four mappings: driver equals 92, diode equals 119, decryption equals 165, string equals 74. A result box at the bottom reads 'C2 address 92.119.165[.]74'. A footer reads 'Extraction logic and conversion key per Lumen Black Lotus Labs; worked example from a sample recovered June 23, 2026. Card rendered by OrcaRouter.'](https://cms.orcarouter.ai/api/media/file/2-1820.png)
Ekstrakcja jest mechaniczna. Funkcja, którą Lumen nazywa extract_poem_phrase_field pobiera trzy frazy ze stałych pozycji w wierszu — tekst między "In the silent hum of " a następującym przecinkiem, między "each pulse of " a " threading," i między "Beyond the wall of " a następnym przecinkiem. Czwarte słowo odzyskuje się inaczej: poprzez wyszukanie ciągu "of distant servers,", cofnięcie się do poprzedniego białego znaku, sprawdzenie, czy cztery poprzedzające bajty tworzą "the ", i pobranie słowa po nim. Każde z czterech słów jest następnie dopasowywane do słownika zakodowanego na stałe, wkompilowanego w plik binarny, a cztery wynikowe liczby są łączone w adres IPv4. W próbce odzyskanej przez Lumen 23 czerwca 2026 r. "driver" odwzorowano na 92, "diode" na 119, "decryption" na 165, a "string" na 74 — co daje 92.119.165[.]74.
Ponieważ w ciągu 11 zaobserwowanych rewizji zmieniały się kiedykolwiek tylko cztery słowa kluczowe, a wzorzec dekodowania nigdy się nie zmienił, przeniesienie botnetu kosztowało operatora kilka zmian w publicznym pliku tekstowym. "Najciekawszym elementem podejścia z wierszem jest to, że adres IP używany do komunikacji C2 jest niewidoczny poza netflow ofiary" — powiedział English w rozmowie z CyberScoop. "Dla każdego, kto na niego trafi, to po prostu wiersz na GitHubie. Nie ma linków, plików do pobrania ani zaszyfrowanego tekstu, który można by łatwo oznaczyć jako złośliwy, nawet przez zaawansowane modele. Nie byłoby żadnego powodu, aby jakikolwiek badacz bezpieczeństwa identyfikował ten wiersz jako złośliwy — ani znał ukryty w nim adres IP — chyba że miałby dostęp do złośliwego oprogramowania, które się do niego odwołuje."
Lumen twierdzi, że jego zdaniem wiersz został prawdopodobnie napisany przez AI, i określa to jako wniosek, a nie ustalenie. Rozumowanie, jak ujął to English w rozmowie z The Hacker News: wiersz sprawdziłby się w dowolnym języku, a jednak sam aktor zdaje się preferować język włoski. To osąd dotyczący stylu pisania, a nie kryminalistyczna atrybucja tekstu do modelu.
Co robi złośliwe oprogramowanie po przedostaniu się do systemu
Ładunek przeanalizowany przez Lumen to plik ELF dystrybuowany pod nazwą „libgcrypt” o skrócie SHA-256 6fab94577364beec314afae3b082dd680933f08a8349b9f35b92667e8231b501. Zgodnie z analizą Lumen zawiera on zdalny shell, koparki kryptowalut Iron i XMRig, możliwość skanowania HTTP i HTTPS oraz wdrażanie exploitów przeciwko podatnym celom.
Zainfekowane hosty łączą się z jednym z kilku portów C2 — 3778, 5001, 5002 lub 9999 — i otrzymują polecenie pobrania kolejnych plików z portu 81 na serwerze C2 (zaobserwowane ścieżki obejmowały /private/python3.6 i /private/bins.sh). Wypłaty z kopania trafiają do rosyjskiej usługi kopania Kryptex: Lumen zaobserwował, że ofiary kontaktowały się z 5.180.174[.]162:8029 i 46.21.245[.]211:7029, gdzie hostowany jest edge-ru-07[.]kryptex[.]network. Najczęstszą wspólną cechą pierwszych 900 ofiar, po kontakcie z początkowym C2, był kontakt z tym punktem końcowym Kryptex.
Botnet także sam się rozrasta. Skompromitowane serwery zamieniano w skanery i serwery eksploitacyjne: serwer eksploitacyjny wysyła spreparowany HTTP POST do wystawionej usługi na nowo wykrytym celu, nakazując jej pobranie złośliwego oprogramowania z C2. Niedawno Lumen zaobserwował grupy ofiar atakujące porty SSH i inne portale logowania, co interpretuje jako możliwe eksperymentowanie z rozproszonym frameworkiem brute-force. Lumen wyraźnie zastrzega, że jest to niedojrzałe i nieudowodnione: wiele z celów stanowiły serwery dedykowane we Włoszech, a badacze oceniają, że zdolność ta „mogła znajdować się we wczesnych stadiach rozwoju”.
Oś czasu i dwie liczby, które do siebie nie pasują
![A screenshot of a timeline card titled 'How the campaign unfolded, April to October 2026', subtitled 'Active since at least April 2026; disclosed 7 October 2026 by Lumen Black Lotus Labs'. The entries read: 'APR 13, 2026 — First commit to the GitHub repository. First decoded C2 is 191.37.28.160, a router in Brazil.' 'APR 13, +1 HOUR — That C2 contacts 57.131.5.211:80 in Italy, hosting malwarescan[.]xyz (registered February 2026).' 'MAY 2026 — Broader scanning and exploitation begins, especially against LiteLLM and Gotenberg. New C2 at 120.224.114.212, geolocated to China.' 'EARLY JUNE 2026 — A compromised Ivanti Sentry victim contacts 5.78.73.122, then begins scanning for other vulnerable devices.' 'MID-JUNE 2026 — Peak of operations: almost 2,200 affected servers, with nearly 800 active per day.' 'JUNE – SEP 2026 — The poem is revised 11 times; each revision points the botnet at a new C2. 12 C2 addresses identified in total.' 'OCT 7, 2026 — Lumen publishes. The staging repository is no longer accessible and the C2s are null-routed; three C2s were still active at publication.' A footer reads 'Dates and figures per Lumen Black Lotus Labs, published Oct 7, 2026. Card rendered by OrcaRouter.'](https://cms.orcarouter.ai/api/media/file/3-1819.png)
Pierwszy zdekodowany C2 kampanii był 191.37.28[.]160, brazylijski router z odsłoniętym serwerem WWW Boa na porcie 2222, podatny na CVE-2018-21027 i CVE-2018-21028 — choć Lumen nie znalazł bezpośrednich dowodów, że te luki były ścieżką wejścia. Około godzinę po pierwszym commicie na GitHubie, ten C2 skontaktował się z serwerem we Włoszech pod adresem 57.131.5[.]211:80 hostującym domenę malwarescan[.]xyz, która została zarejestrowana w lutym 2026 r. Lumen twierdzi, że nie zaobserwował innego znaczącego ruchu do punktu końcowego API tej domeny i ocenia, że domena może należeć do operatora PoeLLM. Majowa wersja przeniosła C2 na 120.224.114[.]212, zlokalizowany w Chinach i, podobnie jak brazylijski host, uruchamiający podatny serwer WWW Boa ze stroną administracyjną routera. W sumie Lumen zidentyfikował 12 adresów IP C2; trzy były wciąż aktywne w momencie publikacji — 92.119.164.50 (pierwsza obserwacja: 23 lipca 2026 r.), 103.249.201.108 (pierwsza obserwacja: 13 sierpnia 2026 r.) i 178.128.14.204 (pierwsza obserwacja: 16 czerwca 2026 r.).

Lumen wskazuje również podejrzany serwer zarządzania: 185.119.19[.]171 we Włoszech, który wcześniej hostował panele monitorujące Prometheus i Uptime Kuma, z którymi kontaktowało się kilka C2. Raport podaje tę atrybucję z umiarkowaną pewnością.
Jeśli chodzi o skalę, główne źródło zawiera dwie liczby, które nie dają się w oczywisty sposób uzgodnić, i obie warto przytoczyć. Kluczowe wnioski Lumen mówią, że PoeLLM „objął ponad 3400 serwerów-ofiar”. Akapit w treści tego samego raportu mówi, że kampania „objęła niemal 2200 serwerów-ofiar”, a Lumen osobno opisuje szczyt działań w połowie czerwca jako obejmujący niemal 2200 zaatakowanych serwerów, z niemal 800 aktywnymi dziennie. The Hacker News odczytuje te liczby jako bieżącą sumę (ponad 3400) plus szczyt z połowy czerwca (niemal 2200, niemal 800 dziennie). To, która z dwóch liczb Lumen dotyczy łącznej liczby ofiar, nie zostało jednoznacznie wyjaśnione w samym raporcie.
Ustalone, ocenione i wciąż nieznane
Warto rozróżnić trzy rodzaje twierdzeń w tym zapisie, ponieważ ocena wiarygodności archiwum obejmuje dokumentację, a nie każde zawarte w niej wnioskowanie.
• Ustalono na podstawie samego złośliwego oprogramowania: mechanizm C2 oparty na wierszu, funkcja ekstrakcji i słownik, możliwości ładunku (zdalna powłoka, koparki Iron i XMRig, skanowanie, wdrażanie exploitów), lista adresów IP C2, porty beacon oraz punkty końcowe Kryptex. Pochodzą one z analizy artefaktów i netflow i stanowią większość raportu.
• Oceniono na podanym poziomie pewności:przypisanie do włoskojęzycznego aktora zagrożenia, przy umiarkowanej pewności, na podstawie komentarzy w języku włoskim w złośliwym oprogramowaniu oraz na stronach GitHub tego aktora, a także wskaźników netflow wskazujących na Włochy. Włoski serwer 185.119.19[.]171 jako interfejs administracyjny botnetu, również przy umiarkowanej pewności. Punkt końcowy LiteLLM jako „prawdopodobna” ścieżka wykorzystania. Twierdzenie, że wiersz został prawdopodobnie napisany przez AI — wnioskowanie na podstawie preferencji językowych, a nie ustalenie techniczne.
• Otwarte lub niepotwierdzone: ile osób prowadzi tę kampanię (nie wiadomo), czy jest powiązana z jakąkolwiek inną grupą lub kampanią (nie zaobserwowano), czy urządzenie Ivanti Sentry było wykorzystanym punktem wejścia, czy elementem przypadkowym (w kluczowych wnioskach ujęto to z zastrzeżeniami, a w treści opisano je jako ofiarę), oraz jak dojrzała jest rozproszona zdolność do ataków brute force. Lumen twierdzi, że osiągnięcia operatora wykraczające poza skanowanie i kopanie kryptowalut pozostają przedmiotem dochodzenia.
Istnieje niezależne potwierdzenie tych doniesień, ale nie stojącej za nimi telemetrii. CyberScoop i The Hacker News opublikowały 7 października 2026 r. własne relacje, zawierające niezależne wywiady z Black Lotus, a ich szczegóły — liczba ponad 3400, mechanizm wiersza, przypisanie w języku włoskim, powiązanie z Kryptex — pokrywają się z raportem dostawcy. Oba jednak wywodzą się z tego samego badania pierwotnego. Na dzień 10 października 2026 r. żadna druga organizacja badawcza ani żaden regulator nie opublikowali niezależnej analizy PoeLLM; niczego tutaj nie należy odczytywać jako odtworzonego przez podmiot inny niż Lumen.
Co się zmieniło po ujawnieniu
Najdonioślejsza reakcja nie przyszła w postaci łatki. Repozytorium GitHub, w którym umieszczono wiersz, „nie jest już dostępne” – zdarzenie, które – jak mówi Lumen – „całkowicie zakłóca kampanię”. English powiedział The Hacker News: „Sądzimy, że to było jego jedyne repo, i zostało całkowicie unieruchomione”. Lumen powiadomił GitHub i zastosował null-routing wobec poprzednich oraz aktywnych serwerów C2 sprawcy; zmiana ta, jak powiedział English, weszła w życie wczesnym wieczorem we wtorek przed publikacją. Przyczyna usunięcia repozytorium nie została potwierdzona – English powiedział The Hacker News, że „być może oznaczyli je jako nadużycie albo sprawca zwinął interes i zamilkł na tej platformie”. Ponieważ C2 był wyprowadzany, a nie zaszyty na stałe, usunięcie tabeli wyszukiwania odbiera botnetowi możliwość odnalezienia własnej infrastruktury.
Lumen twierdzi, że podczas śledztwa zablokował cały ruch do i z serwerów C2 PoeLLM oraz że klienci Lumen Defender byli chronieni przed tymi serwerami od momentu ich wykrycia. Opublikowane przez firmę wytyczne dla obrońców to rutynowa higiena stosowana do nietypowego zestawu celów: sprawdzanie logów sieciowych pod kątem wskaźników kompromitacji opublikowanych w jej własnym repozytorium GitHub, audyt ekspozycji zewnętrznej po zainstalowaniu narzędzi open source, maksymalne ograniczenie portów usług, utrzymywanie routerów, zapór sieciowych i urządzeń IoT w stanie aktualizacji oraz ich restartowanie, a także objęcie usług AI zarządzaniem powierzchnią ataku. Wskazuje również na instrukcję instalacji Gotenberg, która już ostrzega użytkowników przed wystawianiem tej usługi do internetu — ostrzeżenie, przed którym najwyraźniej powstały setki skompromitowanych serwerów Gotenberg.
Nic w zapisie nie sugeruje technicznego rozwiązania samego wzorca ruchu: wiersz nie był luką w GitHubie, Node.js, LiteLLM ani Ollama. Był to publiczny plik tekstowy, którego jedyne znaczenie tkwiło w pliku binarnym, który miało bardzo niewiele osób.
Dlaczego to jest zapis incydentu AI
Archiwum rejestruje to jako incydent z potwierdzonym udziałem AI, oznaczony tagami INFRA i WEAPON, o wysokiej wadze, z odnotowanymi rzeczywistymi szkodami — a szkody te są konkretne, a nie spekulatywne: tysiące serwerów dostępnych z internetu, których moc obliczeniowa została skradziona, a dostęp do nich wykorzystano do innych celów, w kampanii, którą Lumen opisuje jako motywowaną finansowo, a nie skierowaną przeciwko samym modelom. Elementem AI jest wybór celu. Serwery uruchamiające bramy LLM i lokalne środowiska uruchomieniowe modeli są hostowane samodzielnie, często wystawione do internetu, nierzadko instalowane bez cyklu łatek i działają na sprzęcie, który efektywnie kopie. Sam Lumen ujmuje to tak, że infrastruktura AI staje się atrakcyjnym celem właśnie z powodu tego połączenia — wystawionych usług ze znanymi podatnościami, użytecznych danych oraz szybkiego, energochłonnego sprzętu.
Aspekt uzbrojenia to projekt C2, który wykracza poza tę kampanię. Zakodowana na sztywno domena lub adres IP mogą zostać zablokowane, przekierowane do sinkhole’a albo wykorzystane do fingerprintowania malware. Adresu wyliczonego, którego jedynym artefaktem jest wyglądający nieszkodliwie publiczny dokument, nie można jednak w ten sposób potraktować — chyba że analityk dysponuje plikiem binarnym. Uwaga, którą English przekazał CyberScoop — że wiele serwerów C2 tej kampanii nigdy nie pojawiło się w opartych na crowdsourcingu narzędziach bezpieczeństwa — jest miarą tego, jak dobrze to działało.
Ponieważ zakłócenie opiera się na pojedynczym repozytorium, a nie na załatanej luce, status kampanii po 7 października jest naprawdę niepewny, a nie zamknięty: Lumen twierdzi, że utrata repozytorium „całkowicie ją zakłóca”, a osobno mówi, że trzy serwery C2 były nadal aktywne w momencie publikacji. Lumen publikuje własne wskaźniki kompromitacji we własnym repozytorium GitHub, a poziom istotności, ocena pewności i odnotowane szkody w rekordzie należą do archiwum, a nie do dostawcy.
To jeden rekord. Reszta — pozostałe ujawnienia, ich oceny istotności i pewności oraz to, co obrońcy faktycznie z nimi zrobili — archiwum incydentów AIindeksuje każdy z nich względem jego źródeł pierwotnych, dzięki czemu kampanię taką jak ta można czytać razem z incydentami, które ją poprzedziły, a nie w izolacji.
