Przejdź do treści

Backdoor w rozszerzeniu Claude Code. 11 godzin w Marketplace Cursora i do 5000 zarażonych maszyn

Aktualizacja: 31 października 2026

Karta pomiarowa z wielką pomarańczową pieczątką SPRAWDZ KLUCZ SSH i kartami danych incydentu: okno zagrożenia 11 godzin, skala do 5000 użytkowników, dotknięta wersja 2.1.313 rozszerzenia Claude Code; nagłówek TYLNE DRZWI W CLAUDE CODE; odczyty 30.10.2026

W środę 29 października przez mniej więcej 11 godzin w Marketplace rozszerzeń edytora Cursor była dostępna zainfekowana wersja 2.1.313 oficjalnego rozszerzenia Claude Code. Po instalacji albo automatycznej aktualizacji kod dorzucał ofierze tylną furtkę SSH: własny klucz dopisany do pliku authorized_keys, tunel odwrócony do serwera atakującego i mechanizm trwałości, który przeżywa restart komputera. Cursor wycenia skalę na maksymalnie 5000 użytkowników i zapowiada kontakt z każdym z nich osobno. Wersja z backdoorem zniknęła już z Marketplace Cursora, z OpenVSX i z Visual Studio Marketplace, a serwer atakującego został wyłączony, więc pytanie brzmi dziś: czy twoja maszyna była w tym oknie. Sprawdzisz to jedną komendą, którą podaję w dalszej części.

Najważniejsze informacje

CoSzczegóły
Dotknięty pakietAnthropic.claude-code 2.1.313, tylko dystrybucja z Marketplace Cursora
Okno zagrożenia29.10.2026, ok. 10:27-21:35 czasu polskiego (2:27-13:35 PT), około 11 godzin
SkalaMaksymalnie 5000 użytkowników wg Cursora, indywidualny kontakt zapowiedziany
Co robił kodKlucz SSH do authorized_keys, tunel odwrócony do 134.209.82.225, trwałość (LaunchAgent, cron, zadanie SysMon), raport o maszynie na port 8099
Główny błąd malwareNa macOS nie umiał włączyć zdalnego logowania bez uprawnień administratora, więc logowanie atakującego zwykle kończyło się fiaskiem
Kanały czysteOficjalna dystrybucja Anthropic nietknięta, OpenVSX bez zmian wg oświadczenia z 30.10
Szybki testgrep -qs svc-telemetry ~/.ssh/authorized_keys
Stan serweraSerwer atakującego wyłączony we współpracy z dostawcą hostingu

Co dokładnie się stało

Claude Code dociera do programistów w pakiecie rozszerzenia dla VS Code i jego forków, a te pakiety serwują marketplace’y: oficjalny Visual Studio Marketplace Microsoftu, otwarty OpenVSX i własny marketplace Cursora, który jest w praktyce lustrem OpenVSX z doklejonymi własnymi pakietami. Podmieniona paczka pojawiła się tylko w tym trzecim miejscu. Z komunikatu Cursora wynika, że między 2:27 a 13:35 czasu PT w środę 29 października ktoś opublikował tam wersję 2.1.313 rozszerzenia Anthropic.claude-code z wstrzykniętym kodem na starcie pliku extension.js. Rozszerzenia w edytorach aktualizują się same, więc część użytkowników dostała ją bez żadnej świadomej decyzji, a Kevin Beaumont z DoublePulsara pisze wprost, że rozszerzenie „zaktualizowało się automatycznie w Cursorze do złośliwej wersji”.

Sygnał na zewnątrz poszedł 30 października rano. Pierwsza była firma Phorion, której analitycy opublikowali pełną analizę łańcucha ataku na macOS, Linuksie i Windows, potem podsumowanie na Mastodonie wystawił Beaumont, bezpiecznik znany z opisów incydentów; jego notka zebrała ponad 1100 udostępnień, a wątek na Hacker News przekroczył 600 punktów. Reakcja Cursora była szersza niż zwykłe zdjęcie paczki: firma wyłączyła cały swój VSCode Marketplace, przeaudytowała dostęp i potwierdziła, że żadne inne rozszerzenie nie było modyfikowane, obróciła klucze, przebudowała infrastrukturę od zera i wystawiła ją ponownie. Kto za tym stoi, nie wiadomo; wiadomo tylko, że miał dostęp do publikowania pod zweryfikowanym kontem Anthropic i skorzystał z niego w konkretnym oknie czasowym.

Jak działał backdoor

Analitycy Phorion rozłożyli ładunek na cztery etapy i na szczęście dla ofiar opisali też błędy, które zniweczyły ten atak. Po załadowaniu rozszerzenia skrypt, który nie czeka na żadną interakcję użytkownika, dopisywał do pliku ~/.ssh/authorized_keys swój klucz Ed25519 z komentarzem svc-telemetry i ustawiał uprawnienia katalogu i pliku tak, żeby nic tego nie zdradzało. Następnie próbował włączyć lokalną usługę SSH na każdym z systemów i zestawiał tunel odwrócony do serwera 134.209.82.225: plik klucza lądował w katalogu tymczasowym pod nazwą zaczynającą się od .stk_, a flaga -R *:0:localhost:22 prosiła serwer atakującego o losowy port, pod którym czekał port 22 ofiary. Pętla ponawiała połączenie co 60 sekund i działała dalej nawet po zamknięciu edytora, a trwałość zapewniał LaunchAgent podszywający się pod com.apple.sysmond na macOS, wpis @reboot w crontabie na Linuksie i zadanie SysMon ze skryptem w folderze Autostartu na Windows.

Trzeci i czwarty element to rozpoznanie i meldunek. Skrypt zbierał nazwę hosta, nazwę użytkownika, system, ścieżkę domową, adres e-mail z globalnej konfiguracji gita i publiczny adres IP, po czym wysyłał raport protokołem HTTP na port 8099. Ciekawszy jest drugi składnik meldunku: lista do 40 nazw zmiennych środowiskowych pasujących do wzorca KEY, TOKEN, SECRET, PASS, AWS albo GCP. Same wartości nie wychodziły z maszyny, ale atakujący dostawał wirtualną mapę skarbów, czyli wiedzę, na których laptopach siedzą poświadczenia chmurowe i tokeny API, i wiedzę, które maszyny obsłużyć w pierwszej kolejności.

Na całości złożyły się też błędy samego malware. Na macOS skrypt sprawdzał stan zdalnego logowania komendą systemsetup -getremotelogin bez uprawnień administratora; system odpowiadał komunikatem o braku dostępu i kodem wyjścia zero, a test szukający słowa „Off” niczego nie dopasował, więc krok włączania SSH został pominięty. Na Windowsie z kolei komenda PowerShell szła przez funkcję uruchamiającą wszystko przez /bin/sh, co na typowej maszynie nie ma prawa działać. Cursor pisze o tym wprost: poza nietypową sytuacją, w której edytor wystartował z uprawnieniami administratora, ten krok kończył się porażką. Oznacza to, że na większości maszyn klucz i trwałość zostały, ale realne logowanie atakującego przez tunel raczej nie nastąpiło. Nie jest to jednak powód do spokoju, tylko informacja o wycinku scenariusza: jak pisze Phorion, jeśli ktoś miał zdalne logowanie włączone wcześniej, furtka czekała gotowa.

Czy Anthropic zostało zhackowane

Pierwsze doniesienia nakreśliły historię, w której włamano się do Anthropic, i taką tezę postawił też Beaumont w tytule swojego wpisu. Późniejszy przebieg sprawy ją poprawił. Przedstawiciel Anthropic komentując incydent na Hacker News napisał, że to marketplace zewnętrzny, którym firma nie zarządza, nie utrzymuje i nie przegląda, oraz że OpenVSX nie został dotknięty, a dotknięty system to wyłącznie marketplace Cursora. Do tego doszło zapewnienie, że żadne systemy Anthropic ani urządzenia pracowników nie miały udziału w incydencie, a kanały oficjalne mają zostać czyste; problem dotyczy więc wyłącznie użytkowników Cursora.

Komunikat Cursora głosi, że złośliwa wersja „nie została napisana przez Anthropic”, i w sensie dosłownym to prawda, bo nikt w Anthropic nie pisał backdoora; Beaumont zwraca jednak uwagę, że paczka została wgrana z konta zweryfikowanego Anthropic, więc fraza brzmi jak rozmycie odpowiedzialności za kanał dystrybucji. Wersja 2.1.313 zniknęła z marketplace’ów i zastąpiła ją 2.1.314, którą Beaumont ocenił wstępnie jako pozbawioną złośliwego kodu, z zastrzeżeniem, że pewności nie ma, oraz z ostrzeżeniem ważniejszym: nowa wersja niczego nie usuwa z maszyn, które dostały starszą. Formalny biuletyn bezpieczeństwa po stronie Anthropic w odczytach z 30.10 nie figuruje; firma wypowiedziała się w dyskusji, a kontakt z ofiarami zapowiedział Cursor.

Sprawdź i wyczyść maszynę

Test mieszci się w jednej linijce i wystawia werdykt od razu:

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

Jeśli wyskoczy komunikat o znalezionym kluczu, deinstalacja rozszerzenia nie załatwi sprawy, bo ładunek zostawia elementy, które żyją własnym życiem. Cursor udostępnił gotowe skrypty czyszczące na macOS i Windows oraz pełną listę wskaźników, a analiza Phorionu dopowiada kolejne kroki, które warto przeprowadzić: usunięcie plików ~/.config/.smt i ~/.config/.smtk, wyładowanie i skasowanie pliku com.apple.sysmond.plist z katalogu ~/Library/LaunchAgents, sprawdzenie wpisu @reboot w crontabie i zadania SysMon, skasowanie plików .stk_ z katalogu tymczasowego, a wreszcie zdjęcie klucza svc-telemetry z authorized_keys. Do tego dochodzi rotacja poświadczeń z zaufanej maszyny, szczególnie tych, których nazwy pasują do wzorca z meldunku, czyli tokenów chmurowych i kluczy API. Sygnałem, że ktoś wszedł, są logowania SSH widziane jako pochodzące z 127.0.0.1 z kluczem svc-telemetry, bo sesje wchodzą przez tunel do lokalnego portu. Beaumont opublikował też gotowe zapytania KQL dla Microsoft Defendera, jeśli flotę maszyn przegląda się z poziomu centralnego telemetru.

Kontekst jest tu smutną tradycją tego miesiąca: zainfekowana paczka litellm na PyPI kradła klucze w połowie października, a tam i tu pali się to samo ognisko: zaufanie do komponentu, który przychodzi z nazwą znanego wydawcy.

Co z tego dla Polski

Cursor i Claude Code to jedne z popularniejszych narzędzi agentowego programowania, także u nas, więc założenie, że dotknięte maszyny są wyłącznie za oceanem, nie ma pokrycia. W odczytach z 30.10 nie ma polskich doniesień o ofiarach ani komunikatów polskich firm, co jest pełnoprawną odpowiedzią, a nie usprawiedliwieniem: okno zakażania trwało jedenaście godzin, a licznik ofiar może dopiero rosnąć. Praktyczny wymiar jest jeden i ten sam w każdym kraju: jeśli używałeś Cursora z rozszerzeniem Claude Code i instalowałeś albo aktualizowałeś je w środę 29 października, odpal test z poprzedniej sekcji, zanim uznasz temat za zamknięty.

Na marginesie: Beaumont pisze, że z Claude Code i Cursora na laptopach korzysta m.in. Binance, wśród tysięcy innych firm. Z Binance pisaliśmy dziś rano w zupełnie innej, znacznie większej sprawie, haku na 6,36 mld dolarów, więc firma ma z tego tygodnia wyjątkowo złe skojarzenia.

Najczęstsze pytania

Czy Claude Code jest bezpieczny?

Wg stanu wiedzy z 30.10 tak, o ile pochodzi z oficjalnych kanałów dystrybucji: dotknięta była wyłącznie wersja 2.1.313 w Marketplace Cursora, a kanały oficjalne i OpenVSX nie zostały naruszone. Zastrzeżenia są dwie: dochodzenie trwa i nie znamy jeszcze tego, jak dokładnie ktoś wszedł do marketplace’u Cursora, a jeśli instalowałeś rozszerzenie w środę 29 października, sprawdź maszynę komendą z artykułu zamiast ufać deklaracjom.

Co to jest backdoor?

Tylne wejście do programu albo systemu, wbudowane poza oficjalną ścieżką logowania. W tym incydencie backdoor to para: klucz SSH dopisany do pliku authorized_keys ofiary, dzięki któremu atakujący może się logować, i tunel odwrócony, który przebił drogę do maszyny ukrytej za firewallerem. Nie jest to wirus w potocznym sensie, bo niczego nie szyfruje i nie rozsyła dalej, ale daje coś cenniejszego: interaktywną kontrolę nad komputerem.

Claude Code co to jest?

Agent Anthropic do pracy z kodem, działający w terminalu i jako rozszerzenie dla edytorów z rodziny VS Code, w tym Cursora. Pisaliśmy o nim osobny przewodnik, a ostatnio o tym, jak jego agenci w tle podjadają limity. Ten incydent nie dotyczy samego modelu ani narzędzia w terminalu, tylko dystrybucji rozszerzenia przez zewnętrzny marketplace.

Dopisek (31 października): rodzina październikowych ataków na poświadczenia AI właśnie się powiększyła. Northflank, platforma do wdrażania aplikacji, potwierdziła incydent, w którym sprawcy sięgnęli po zmienne środowiskowe klientów i używali ich kluczy AI do własnych wywołań; platforma kazała założyć, że wszystko przejęte. Opisaliśmy to osobno: Ktoś używał kluczy AI klientów Northflank.

Źródła

Powiązane artykuły