Strategie łańcucha dostaw oprogramowania umożliwiające parowanie ataków polegających na zamieszaniu w zależnościach

Strategie łańcucha dostaw oprogramowania umożliwiające parowanie ataków polegających na zamieszaniu w zależnościach

Strategie łańcucha dostaw oprogramowania mające na celu powstrzymanie ataków zamieszania w zależnościach PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

"Co jest w imieniu? To, co nazywamy różą, pod inną nazwą pachniałoby równie słodko. Kiedy Szekspir pisał te słowa (Romeo i Julia, Akt 2, Scena 2) w 1596 roku, mówił, że imię to tylko konwencja. Nie ma to żadnego wewnętrznego znaczenia. Julia kocha Romea za to, kim jest, a nie za imię.

Ale nie wiedząc o tym, Szekspir opisywał także ataki dezorientacji zależności.

Zamieszanie zależności ma miejsce, gdy pakiety, których używasz w swoim kodzie, nie są Twoje. Mają tę samą nazwę, ale to nie Twój kod działa w środowisku produkcyjnym. Nazwa ta sama, ale jedno opakowanie pachnie różą, a drugie… śmierdzi.

Z ostatnich raportów badawczych wynika, że ​​od 41% do 49% organizacji jest narażonych na ryzyko ataków polegających na pomyleniu zależności. Nowe badanie przeprowadzone przez OX Security pokazuje, że gdy organizacja jest narażona na atak polegający na pomyleniu zależności, narażonych jest 73% jej aktywów. Badanie skupiało się na organizacjach średnich i dużych (1K+, 8K+, 80K+ pracownicy) w wielu różnych sektorach — finansach, grach, technologii i mediach — i odkrył ryzyko w każdym sektorze, w organizacjach każdej wielkości. Badanie wykazało również, że prawie wszystkie aplikacje, z których korzysta ponad 1 miliard użytkowników, korzystają z zależności, które są podatne na pomyłki.

Ten artykuł ma na celu pomóc Ci zrozumieć zamieszanie związane z zależnościami i dowiedzieć się, jak temu zapobiec.

Podwójny podwójny

Zależności (zwane także pakietami) to elementy składowe oprogramowania. Zazwyczaj te elementy oprogramowania, niezależnie od tego, czy są tworzone przez całe społeczności, czy w ramach firmy, wykonują wspólne i niezbędne zadanie.

Menedżerowie pakietów są często używani do instalowania zależności i ich aktualizacji. Skanują rejestry publiczne i prywatne w poszukiwaniu nazwy pakietu i przy wszystkich innych czynnikach wybierają najwyższy numer wersji. Atakujący wykorzystują to, umieszczając w rejestrze publicznym „fikcyjny” pakiet o tej samej nazwie, ale w wyższej wersji.

Kiedy menedżer pakietów natrafia na dwa identyczne pakiety, jeden w rejestrze publicznym, a drugi w rejestrze prywatnym, powoduje to zamieszanie — stąd nazwa „zamieszanie zależności”. Ponieważ oba pakiety są identyczne, menedżer automatycznie wybierze instalację tego z wyższą wersją - w tym przypadku złośliwy pakiet atakującego.

Dzięki temu porywacze mają tylne drzwi do oprogramowania. Od tego momentu mogą naruszać bezpieczeństwo danych, kraść własność intelektualną i w inny sposób narażać na szwank zaufany łańcuch dostaw oprogramowania. Mogą także wprowadzić naruszenia zgodności, które spowodują surowe kary regulacyjne.

Trud i kłopoty

Istnieją różne podejścia do ataku polegającego na pomyleniu zależności.

  • Przestrzenie nazw. Przesyłając bibliotekę złośliwego oprogramowania do rejestru publicznego — takiego jak indeks pakietów Python (PyPI) lub JavaScript rejestr npm - to jest nazwane podobnie do zaufanej, używanej wewnętrznie biblioteki, systemy, które pomijają sprawdzanie przestrzeni nazw/URL lub nie wymuszają pobierania z prywatnego rejestru, mogą omyłkowo pobrać złośliwy kod. The niedawny incydent związany z zamieszaniem w zależnościach PyTorch jest jednym z takich przykładów.
  • Fałszowanie DNS. Stosując technikę taką jak fałszowanie DNS, systemy mogą zostać poinstruowane, aby pobierały zależności ze złośliwych repozytoriów, wyświetlając jednocześnie coś, co wygląda na prawidłowe wewnętrzne adresy URL/ścieżki.
  • Skrypty. Modyfikując skrypty kompilacji/instalacji lub ciągła integracja/ciągłe dostarczanie (CI/CD) systemy można oszukać i pobrać zależności oprogramowania ze złośliwego źródła, a nie z lokalnego repozytorium.

Rzeczy zrobione dobrze i ostrożnie

Aby uchronić się przed pomyłką w zależnościach, wprowadź te praktyki.

  • Ustaw zasady w menedżerze pakietów. Nie zezwalaj menedżerom pakietów na nadawanie priorytetu pakietowi publicznemu przed pakietem prywatnym.
  • Zawsze dołączaj plik .npmrc. Jeśli używasz popularnego NPM jako menedżera pakietów, zawsze dołączaj plik .npmrc, który określa, skąd pobrać pakiety w ramach określonego zakresu organizacji.
  • Zarezerwuj nazwę pakietu w rejestrze publicznym. Innym sposobem ochrony przed atakami polegającymi na myleniu zależności jest zarezerwowanie nazwy pakietu w rejestrze publicznym, tak aby porywacze nie mogli jej użyć, a tym samym nie mogli „oszukać” menedżera pakietów w celu zainstalowania szkodliwego pakietu.

Aby w pełni zabezpieczyć się przed atakami polegającymi na pomyleniu zależności, organizacje powinny zawsze używać zakresy organizacyjne dla wszystkich pakietów wewnętrznych, nawet podczas publikowania w rejestrze wewnętrznym. Zakresy organizacji powinny być również zarejestrowane w rejestrze publicznym NPM, co zapobiegnie przejęciu zakresu przez kogokolwiek i wykorzystaniu zamieszania.

Nazwy pakietów również powinny być rejestrowane publicznie. Jeśli na przykład organizacja używa popularnego PIP jako menedżera pakietów dla zależności Pythona, powinna utworzyć wewnętrzne pakiety ze ścisłym przyrostkiem, który będzie rozpoznawalny i będzie działał we wszystkich projektach. Prześlij pusty pakiet o tej samej nazwie do rejestru publicznego PyPI jako element zastępczy.

Innym powodem zarezerwowania nazwy pakietu w rejestrze publicznym jest to, że jeśli ktoś inny ją zarezerwuje (złośliwie lub nie), programiści będą musieli zmienić wszystkie nazwy pakietów w rejestrze prywatnym na takie, które nie zostały jeszcze zarezerwowane w rejestrze publicznym. Może to być długi i żmudny proces.

Należy pamiętać, że nie wszystkie rejestry pakietów umożliwiają użytkownikom rezerwację nazw pakietów, więc upewnij się, że znajdziesz taki, który to umożliwia.

Wyjdź, ścigany przez niedźwiedzia

Ataki polegające na pomyleniu zależności stanowią poważne i bezpośrednie zagrożenie dla bezpieczeństwa cybernetycznego organizacji na całym świecie. Około połowa wszystkich organizacji jest zagrożona, a 73% aktywów tych organizacji jest narażonych. Aby przeciwdziałać temu rosnącemu zagrożeniu, organizacje muszą wdrożyć solidne środki zapobiegawcze i przyjąć najlepsze praktyki w zakresie cyberbezpieczeństwa.

Róże Szekspira mogły zapowiadać ryzyko ataków związanych z dezorientacją uzależnień o setki lat, ale inny cytat z Barda może zawierać pewną mądrość w zakresie ochrony przed nimi: „Niech każde oko negocjuje samo za siebie i nie ufa żadnemu agentowi”. (Wiele hałasu o nic, Akt 2, Scena 1)

Znak czasu:

Więcej z Mroczne czytanie