Oprogramowanie

Nowy rodzaj ataku na łańcuch dostaw uderzył w Apple, Microsoft i 33 inne firmy

Nowy rodzaj ataku na łańcuch dostaw uderzył w Apple, Microsoft i 33 inne firmy

Getty Images

W zeszłym tygodniu badacz zademonstrował nowy atak na łańcuch dostaw, który wykonał fałszywy kod w sieciach należących do niektórych z największych firm na świecie, w tym Apple, Microsoft i Tesla. Teraz koledzy badacze zasypują Internet pakietami naśladowców, z których do tej pory wykryto ponad 150.

Technikę ujawnił we wtorek badacz bezpieczeństwa Alex Birsan. Jego tak zwany atak polegający na zamieszaniu zależności lub dezorientacji przestrzeni nazw zaczyna się od umieszczenia złośliwego kodu w oficjalnym repozytorium publicznym, takim jak NPM, PyPI lub RubyGems. Nadając zgłoszeniom tę samą nazwę pakietu, co zależności używane przez firmy takie jak Apple, Microsoft, Tesla i 33 inne firmy, Birsan był w stanie skłonić te firmy do automatycznego pobrania i zainstalowania sfałszowanego kodu.

Automatyczne pwnage

Zależności to publiczne biblioteki kodu lub pakiety, których programiści używają do dodawania typowych funkcji do pisanego przez nich oprogramowania. Wykorzystując pracę tysięcy ich rówieśników open source, programiści oszczędzają kłopotów i kosztów samodzielnego tworzenia kodu. Kod programisty automatycznie pobiera i włącza zależność lub jakąkolwiek aktualizację do niej z lokalnego komputera dewelopera lub z publicznego repozytorium.

Birsan przeszukał fora internetowe, kod JavaScript, przypadkowo opublikowane pakiety wewnętrzne i inne źródła, aby znaleźć nazwy zależności kodu używanych w oprogramowaniu z 35 firm. Następnie przesłał swój własny kod do NPM, PyPI lub Ruby Gems, używając tych samych nazw zależności. Innymi słowy, badacz kucał na autentycznej nazwie opakowania należącej do firm. W końcu badacz otrzymał 130 000 dolarów w nagrodach za błędy.

Podając numery wersji pakietów, które były wyższe niż autentyczne, docelowe firmy automatycznie pobierały i wykonywały fałszywe pakiety Birsan.

„Wskaźnik sukcesu był po prostu zdumiewający” – napisał Birsan. On dodał:

Od jednorazowych błędów popełnianych przez programistów na ich własnych maszynach, przez źle skonfigurowane wewnętrzne lub oparte na chmurze serwery kompilacji, aż po wrażliwe systemowo potoki programistyczne, jedno było jasne: przyswajanie prawidłowych nazw pakietów wewnętrznych było niemal pewną metodą dostania się do sieci niektórych z największych firm technologicznych, które uzyskują zdalne wykonanie kodu i prawdopodobnie umożliwiają atakującym dodawanie backdoorów podczas kompilacji.

W ciągu dwóch dni od opublikowania przez Birsana swoich wyników firma ochroniarska Sonotype powiedziała w zeszły piątek, że inni programiści lub badacze przeprowadzili ataki naśladowców i umieścili w NPM 150 pakietów o podobnej nazwie.

Jak to działa

Menedżerowie pakietów zazwyczaj akceptują zależności wymienione jako nazwy i próbują przeanalizować intencje programistów. Menedżerowie szukają zależności zarówno na lokalnym komputerze, na którym przechowywany jest projekt, jak iw dostępnym w Internecie katalogu należącym do menedżera pakietów.

„Problem zamieszania w zależności jest nieodłącznym błędem projektowym w natywnych narzędziach instalacyjnych i przepływach pracy DevOps, które wciągają zależności w łańcuch dostaw oprogramowania” – napisali badacze Sonotype we wcześniejszej pracy na temat ataku Birsana. „W tym kontekście zamieszanie w zależności odnosi się do niezdolności środowiska programistycznego do rozróżnienia między prywatnym, utworzonym wewnętrznie obecnym pakietem w kompilacji oprogramowania, a pakietem o tej samej nazwie dostępnym w publicznym repozytorium oprogramowania”.

Badacze sonotypu w następujący sposób wyjaśnili tę technikę:

Na przykład załóżmy, że Twoja aplikacja używa wewnętrznego, prywatnie utworzonego komponentu PyPI o nazwie foobar (wersja 1) jako zależności. Później, jeśli niepowiązany komponent o tej samej nazwie, ale o wyższym numerze wersji foobar (wersja 9999) zostanie opublikowany w publicznym repozytorium pobierania PyPI, domyślna konfiguracja środowisk programistycznych PyPI nakazuje pobranie modułu foobar z wyższą wersją jako zależność.

W tym przypadku oznaczałoby to, że fałszywy pakiet foobar atakującego z wyższym numerem wersji po cichu i automatycznie przedostałby się do kompilacji oprogramowania.

Tak zwane ataki typo-squatting istnieją od lat. Przesyłają kod do publicznych repozytoriów i używają nazw podobnych do nazw legalnych pakietów w nadziei, że programista popełni literówkę lub kliknie złośliwy link, który spowoduje pobranie fałszywego kodu. Zaletą techniki pomieszania zależności Birsana jest to, że nie polega ona na ludzkim błędzie.

Chociaż firmy, których to dotyczy, nie zauważyły ​​podróbki, Sonotype tak. Po rozmowie z Birsanem firma dowiedziała się, że fałszywe zależności były częścią łagodnego eksperymentu.

Dowód koncepcji

Birsan odkrył, że 35 firm, których dotyczy problem, korzystało z lokalnie przechowywanych zależności, które nie były dostępne w katalogu publicznym. Kiedy wrzucił swój własny szkodliwy kod do publicznego repozytorium, używając tej samej nazwy co legalna zależność i wyższego numeru wersji, oprogramowanie firm automatycznie je instalowało i uruchamiało.

Aby nie naruszyć firmowych zasad zgłaszania luk w zabezpieczeniach, kod Birsana ograniczył swoje działania do wysyłania badaczowi nazwy użytkownika, nazwy hosta i aktualnej poprawki każdej unikalnej instalacji. Miał również pozwolenie na testowanie bezpieczeństwa wszystkich 35 firm, albo poprzez publiczne programy zgłaszania błędów, albo poprzez prywatne umowy.

Aby zapewnić, że zabezpieczenia nie blokują informacji przed opuszczeniem sieci firmy docelowej, kod PoC firmy Birsan zakodował dane w formacie szesnastkowym i wysłał je w zapytaniu DNS. Brak blokowania ruchu przez firmy pojawia się co najmniej cztery lata po tym, jak naukowcy zwrócili uwagę na wykorzystanie eksfiltracji DNS przez złośliwe oprogramowanie.

Kanadyjska firma e-commerce Shopify automatycznie zainstalowała Ruby Gem o nazwie shopify-cloud w ciągu kilku godzin od udostępnienia go przez Birsan w repozytorium Ruby Gems. W międzyczasie wiele maszyn w sieci Apple wykonało kod, który Birsan przesłał do NPM. Birsan powiedział, że dotknięte projekty Apple wydają się być powiązane z Apple ID, systemem uwierzytelniania firmy. Zarówno Shopify, jak i Apple przyznały Birsanowi nagrody po 30000 $.

Sonotype ma tutaj listę kroków, które programiści mogą podjąć, aby zapobiec atakom polegającym na dezorientacji. Najważniejszym z zabezpieczeń jest wymuszanie przez repozytoria obowiązkowej weryfikacji przestrzeni nazw i zakresu. Jedną z technik weryfikacji jest odwrotne użycie w pełni kwalifikowanej nazwy domeny, która umożliwia prawowitym właścicielom marki lub przestrzeni nazw publikowanie komponentów w tej przestrzeni nazw, jednocześnie chroniąc przed przeciwnikami.

Zostaw komentarz

Maciek Luboński
Z wykształcenia jestem kucharzem , ale to nie przeszkadza mi pisać dla Was tekstów z wielu ciekawych dziedzin , których sam jestem fanem.Piszę dużo i często nie na tak jak trzeba , ale co z tego skoro tak naprawdę liczy się pasja.

Najlepsze recenzje

Video

gallery

Facebook