Technologia

Złośliwy kod w pakietach Red Hata sam się rozprzestrzeniał i kradł klucze

Susan Hill

Przez pewien czas część klocków oprogramowania rozprowadzanych pod nazwą Red Hat po cichu działała przeciwko tym, którzy je instalowali. W ponad 30 pakietach z publicznego zbioru @redhat-cloud-services firmy krył się niewielki skrypt, gotowy uruchomić się w chwili, gdy programista zainstalował którykolwiek z nich. Ustawiono go jako tak zwany krok preinstall, jedno z tych automatycznych zadań, które narzędzie npm wykonuje samo, zanim wczyta się choćby jedna linijka właściwego oprogramowania. Jego zadaniem było znaleźć hasła, a potem się rozprzestrzeniać.

Red Hat nie tworzy aplikacji, które większość ludzi otwiera z nazwy, ale jego kod leży pod ogromną częścią tego, czego używają codziennie: pod panelami w chmurze, przez które loguje się bank, pod systemami, na których działają szpitale i urzędy, pod narzędziami, którymi inne firmy budują własne produkty. Gdy kod z taką etykietą staje się wrogi, zasięg rażenia to nie jedna aplikacja. To wszystko, co zbudowano na wierzchu.

Ukryty skrypt ruszył na polowanie po klucze, które otwierają nowoczesne przetwarzanie danych. Według firmy bezpieczeństwa StepSecurity, która jako pierwsza zwróciła uwagę na pakiety, zgarniał tokeny dostępu do Amazon Web Services, Google Cloud, Microsoft Azure, Kubernetes, HashiCorp Vault, samego npm i usługi automatyzacji CircleCI, a także sekrety przechowywane w łańcuchach kompilacji GitHuba. Aby do nich dotrzeć, odczytywał surową pamięć działającego procesu kompilacji, sztuczkę omijającą zabezpieczenia, które mają trzymać sekrety z dala od dzienników.

To, co zmienia zwykłą kradzież danych w coś bliższego epidemii, to kolejny ruch kodu. Mając skradzione tokeny publikacji npm, próbował wgrywać świeżo spreparowane wersje wszystkich innych pakietów, do których miało dostęp przejęte konto, korzystając z ustawienia, które odsuwa na bok zwykle obowiązkowe sprawdzenie dwuetapowe. Kradzież, która sama się kopiuje, nie zostaje przy pierwszych ofiarach. Wędruje wzdłuż tego samego zaufania, na którym opiera się cały system.

Na maszynach samych programistów ładunek sięgał dalej: zostawiał instrukcje w ustawieniach zadań Visual Studio Code i w konfiguracji Claude Code, asystenta programowania opartego na sztucznej inteligencji, aby działać długo po zakończeniu instalacji. Ci, którzy najczęściej instalują te pakiety, inżynierowie utrzymujący oprogramowanie wszystkich innych, byli zarazem tymi, których laptopy stawały się punktem wejścia.

Najbardziej niewygodny szczegół to pochodzenie złych wersji. Programiści Red Hata, którzy przyznali się do problemu w publicznym repozytorium projektu, oraz badacze, którzy rozłożyli kod na części, są zgodni: zatrute wersje wyszły przez własny automatyczny łańcuch publikacji Red Hata, maszynerię, która bierze kod z repozytoriów i wysyła go w świat. Napastnicy nie podszywali się pod Red Hata. Przez pewien czas mogli publikować jako Red Hat. Pieczęć zaufania i to, czemu się ufało, rozeszły się.

To nie pierwszy raz, gdy łańcuch dostaw wolnego oprogramowania zamienia się w trasę dostawczą. Spreparowane rozszerzenia przeglądarek i przejęte konta programistów pojawiały się wielokrotnie przez całą wiosnę, wszystkie wykorzystując ten sam nawyk: nowoczesne oprogramowanie skleja się z tysięcy darmowych komponentów, których nikt nie pisze od zera. To, co czyni ten przypadek cięższym, to nazwa na pudełku. Cały sens brania kodu od dostawcy takiego jak Red Hat, a nie od anonimowego współtwórcy, polega na tym, że ta nazwa ma być gwarancją.

Warto jasno powiedzieć, czego ten incydent nie oznacza. Jak dotąd nic nie wskazuje, by zainfekowano urządzenia zwykłych użytkowników ani by włamano się do płatnych produktów firmowych Red Hata i działających systemów jego klientów. Złośliwe wersje celowały w nieuporządkowany środek tworzenia oprogramowania, automatyczne serwery kompilacji i maszyny inżynierów, a wiele dotkniętych pakietów to narzędzia interfejsu i programistyczne, nie rdzeń żadnej działającej usługi. Obraz wciąż się też zmienia, a dokładna liczba skażonych pakietów przesuwała się, w miarę jak Red Hat i zewnętrzni badacze przechodzą przez listę. Szkoda, która liczy się najbardziej, skradzione dane dostępowe, pozostaje niewidoczna, dopóki ktoś ich nie użyje.

Red Hat stopniowo usuwał złośliwe wersje, a skompromitowane publikacje są wycofywane z npm. Tych, którzy zainstalowali je w dotkniętym oknie czasu, prosi się, by każdy token, jaki mogła zobaczyć kompilacja, uznali za spalony i go odnowili. Ujawnienie nastąpiło na początku czerwca, a sprzątanie przetrwa nagłówki. Problem strukturalny przetrwa sprzątanie: internet składa się, w wielkim pośpiechu, z milionów małych części utrzymywanych przez ludzi, których nigdy nie poznamy, i coraz częściej przez automatyczne systemy, które można przejąć, by podpisywały te części w ich imieniu.

Tagi: , , ,

Dyskusja

Jest 0 komentarzy.