Atak złośliwego kodu na GitHubie z wykorzystaniem niewidocznych znaków Unicode

Eksperci ds. cyberbezpieczeństwa odkryli szeroko zakrojoną kampanię, w ramach której atakujący publikują na GitHubie projekty zawierające ukryty złośliwy kod. Repozytoria te wykorzystują specjalne znaki Unicode, które są praktycznie niewidoczne podczas wizualnego przeglądu kodu. Dla programistów wyglądają one jak puste spacje lub linie, ale gdy interpreter je przetworzy, kod może się poprawnie zdekodować i wykonać szkodliwe działania.

Według specjalistów z Aikido Security, między 3 a 9 marca na platformie pojawiło się co najmniej 151 pakietów przygotowanych w ten sposób. Projekty te często podszywają się pod popularne biblioteki lub znane narzędzia programistyczne, co zwiększa ryzyko, że developerzy przypadkowo z nich skorzystają. Na pierwszy rzut oka kod wydaje się bezpieczny i czytelny, jednak niebezpieczne funkcje są ukryte w sekwencjach niewidocznych znaków, co sprawia, że tradycyjne ręczne kontrole są nieskuteczne w wykrywaniu zagrożenia. Podobne przypadki zostały już udokumentowane na innych platformach, w tym NPM, Open VSX i w markecie rozszerzeń VS Code.

Eksperci wiążą tę kampanię z grupą tymczasowo nazwaną Glassworm. Identyfikacja jej członków jest wyjątkowo trudna, ponieważ repozytoria wyglądają bardzo wiarygodnie. Regularnie zawierają aktualizacje dokumentacji, zmiany wersji, poprawki błędów i refaktoryzację kodu – wszystko to imituje aktywny rozwój projektu. Specjaliści sugerują, że do generowania dużej liczby tak realistycznych zmian atakujący mogli wykorzystać generatywne modele AI.

Z technicznego punktu widzenia atak wykorzystuje fakt, że niektóre znaki Unicode są wizualnie nieodróżnialne od pustych spacji, ale mogą być interpretowane jako litery alfabetu łacińskiego. W efekcie mały wbudowany dekoder wyodrębnia z tych symboli rzeczywiste bajty i przekazuje je do funkcji wykonującej kod. Odkryte projekty mogą stanowić tylko niewielką część całej kampanii, jak zauważają badacze, ponieważ złośliwe pakiety są często usuwane po zebraniu wystarczającej liczby pobrań.