Bezpieczeństwo łańcucha dostaw od dawna jest grą w kotka i myszkę, ale niedawne odkrycie badaczy z Aikido Security sugeruje, że mysz znalazła sposób, by stać się niewidzialną. Między 3 a 9 marca 2026 roku wyrafinowana kampania zalała GitHub i inne główne repozytoria 151 złośliwymi pakietami. W przeciwieństwie do ataków typu typosquatting z przeszłości, które opierały się na błędnym wpisaniu nazwy biblioteki przez użytkownika, pakiety te wykorzystywały niewidzialne znaki Unicode, aby ukryć złośliwą logikę na widoku.
Technika ta reprezentuje znaczącą ewolucję w sposobie, w jaki napastnicy wykorzystują zaufanie wpisane w ekosystemy open-source. Wykorzystując znaki, których ludzkie oko nie widzi, ale które kompilatory i interpretery przetwarzają z kliniczną precyzją, cyberprzestępcy z powodzeniem omijają ręczne przeglądy kodu i tradycyjne skanery bezpieczeństwa.
U podstaw tego ataku leży złożoność standardu Unicode — międzynarodowego standardu kodowania znaków z praktycznie każdego systemu pisma. Podczas gdy większość z nas myśli o Unicode w kategoriach emoji lub liter z akcentami, standard ten obejmuje również szereg znaków „niedrukowalnych”. Należą do nich spacje o zerowej szerokości, znaki zmiany kierunku tekstu oraz łączniki, które nie zajmują wizualnej przestrzeni na ekranie.
Gdy programista przegląda pull request lub sprawdza kod źródłowy biblioteki, jego IDE lub edytor tekstu zazwyczaj renderuje te znaki jako zupełnie nic. Jednak dla interpretera Pythona lub silnika JavaScript znaki te są odrębnymi punktami danych. Atakujący może wstawić złośliwy ładunek (payload) wewnątrz ciągu znaków lub komentarza, który dla człowieka wygląda na pusty, ale wykonuje polecenie podczas uruchamiania kodu.
Na przykład, atakujący może użyć znaku „Right-to-Left Override” (U+202E). Znak ten został zaprojektowany, aby wspierać języki takie jak arabski czy hebrajski poprzez odwrócenie kierunku tekstu, który po nim następuje. W złośliwym kontekście może on zostać użyty do sprawienia, by plik o nazwie annoying_executable.exe.txt pojawił się jako annoying_txt.exe, oszukując użytkownika i skłaniając go do uruchomienia programu, który uważa za zwykły plik tekstowy.
Przez prawie dekadę bezpieczeństwo łańcucha dostaw koncentrowało się na „typosquattingu” i „dependency confusion”. Narzędzia bezpieczeństwa zostały zbudowane tak, aby flagować pakiety o nazwach takich jak requesst zamiast requests. Narzędzia te doskonale radzą sobie z dopasowywaniem wzorców znanych złych ciągów znaków, ale mają trudności z tym, czego nie ma.
Wiele starszych narzędzi do statycznej analizy bezpieczeństwa (SAST) opiera się na wyrażeniach regularnych (regex), aby znaleźć luki. Jeśli wyrażenie regularne nie jest specjalnie skonfigurowane do szukania niedrukowalnych zakresów Unicode, po prostu je pominie. Co więcej, ponieważ znaki te są poprawnymi znakami Unicode, niekoniecznie wyzwalają alerty o „uszkodzonym pliku”. Kod pozostaje poprawny składniowo, nawet jeśli jego zachowanie jest ukryte.
Aby zrozumieć powagę tej nowej fali, warto porównać ją z bardziej tradycyjnymi metodami zatruwania repozytoriów.
| Metoda ataku | Główny mechanizm | Widoczność dla ludzi | Trudność wykrycia |
|---|---|---|---|
| Typosquatting | Błędne nazwy pakietów | Wysoka (przy uważnym spojrzeniu) | Niska |
| Dependency Confusion | Wykorzystanie nazw wewnętrznych vs publicznych | Niska | Średnia |
| Niewidzialny Unicode | Znaki niedrukowalne w źródle | Zero | Wysoka |
| Przejęcie konta | Kradzież poświadczeń opiekuna | Brak | Bardzo wysoka |
151 pakietów zidentyfikowanych przez Aikido Security nie było tylko dowodami koncepcji (PoC); były to aktywne próby przejęcia zmiennych środowiskowych, kluczy SSH i poświadczeń chmurowych z maszyn programistów. Do czasu, gdy badacze oflagowali kampanię, niektóre z tych pakietów zostały już zintegrowane ze zautomatyzowanymi potokami budowania (build pipelines), co podkreśla szybkość, z jaką rozprzestrzeniają się te zagrożenia.
To, co czyni tę konkretną kampanię godną uwagi, to sama liczba pakietów wydanych w ciągu sześciodniowego okna. Sugeruje to wysoki stopień automatyzacji po stronie atakującego, prawdopodobnie przy użyciu skryptów do generowania „cieniowych” wersji popularnych bibliotek i wstrzykiwania niewidzialnych ładunków do powszechnie używanych funkcji narzędziowych.
W miarę jak atakujący przechodzą w stronę niewidzialnych zagrożeń, programiści i inżynierowie DevOps muszą dostosować swoją postawę obronną. Poleganie na inspekcji wizualnej nie jest już wystarczające. Oto praktyczne kroki w celu złagodzenia ryzyka wstrzyknięcia niewidzialnego kodu:
package-lock.json, poetry.lock lub requirements.txt ze specyficznymi hashami. Zapobiega to automatycznemu pobieraniu przez system budowania złośliwej „najnowszej” wersji zależności.Odkrycie tych 151 pakietów to otrzeźwiające przypomnienie, że łańcuch dostaw open-source to żywy ekosystem z ewoluującymi drapieżnikami. Przejście w stronę ataków z wykorzystaniem niewidzialnego Unicode pokazuje, że cyberprzestępcy odchodzą od inżynierii społecznej w stronę technicznego zaciemniania (obfuskacji), które wykorzystuje ograniczenia ludzkiej percepcji.
Wchodząc głębiej w rok 2026, branża musi dążyć do modelu „Zero Trust” dla zależności. Nie możemy już zakładać, że kod jest bezpieczny tylko dlatego, że wygląda czysto na ekranie. Weryfikacja musi być algorytmiczna, zautomatyzowana i wystarczająco głęboka, aby dostrzec to, czego ludzkie oko nie widzi.



Nasze kompleksowe, szyfrowane rozwiązanie do poczty e-mail i przechowywania danych w chmurze zapewnia najpotężniejsze środki bezpiecznej wymiany danych, zapewniając bezpieczeństwo i prywatność danych.
/ Utwórz bezpłatne konto