Aplikacje, które używają starych nazw repozytoriów w GitHub jako zależności, mogą w rzeczywistości prowadzić użytkowników do złośliwego oprogramowania. Oto, co musisz wiedzieć.

Coraz bardziej oczywiste jest, że repojacking GitHub stanowi uzasadnione ryzyko dla programistów. Hakerzy mogą wykorzystać użytkowników i firmy zmieniające swoje nazwy GitHub, przejmując stare repozytorium name w nadziei, że dodane przez nich złośliwe pliki mogą zostać pobrane przez aplikacje, które używają kodu jako pliku zależność.

Dlatego ważne jest, abyś podjął kroki w celu ochrony własnego projektu GitHub, jeśli niedawno zmieniłeś nazwę użytkownika lub odwołujesz się do innych repozytoriów jako zależności.

Co to jest RepoJacking?

GitHub repojacking to rodzaj exploita, który może mieć miejsce po zmianie nazwy użytkownika przez właściciela repozytorium. Stara kombinacja nazwy użytkownika i nazwy repozytorium staje się dostępna, a repojacker może skorzystać z jej zależności, żądając nazwy użytkownika i tworzenie repozytorium o tej samej nazwie.

Repojacking może stwarzać dwa różne rodzaje ryzyka:

  • Repojacking może sprawić, że aplikacja, na której można polegać, stanie się niewiarygodna. Jeśli używasz aplikacji korzystającej z repozytorium GitHub jako zależności, a właściciel zmieni nazwę repozytorium, korzystanie z aplikacji narazi Cię na niebezpieczeństwo.
  • Repojacking może narazić tworzoną aplikację na ryzyko. Jeśli odwołujesz się do repozytorium GitHub jako zależności i nie zauważysz go ani nie zaktualizujesz, gdy nazwa repozytorium zostanie zmieniona, Twoja aplikacja będzie podatna na exploity typu repojacking.

Repojacking nie stanowi ogromnego ryzyka dla użytkowników, ale istnieją uzasadnione powody, by sądzić, że może posłużyć jako mechanizm poważnego ataku na łańcuch dostaw. Jeśli aplikacja ma zależność, która odwołuje się do przechwyconego repozytorium, zażąda i otrzyma od repojackerów kod, który może zawierać złośliwe oprogramowanie.

Jeśli rozwijasz się na GitHub, wiedząc, jak możesz zminimalizować ryzyko ataków na łańcuch dostaw a repojacking — zarówno pod względem bycia przejętym repozytorium, jak i bycia stroną trzecią z zależnościami — ma kluczowe znaczenie.

Jak zminimalizować ryzyko RepoJacking

Ataki typu repojacking opierają się na niezwykle przewidywalnym mechanizmie: porywacze przejmują kontrolę nad niezajętym repozytorium, a następnie wykorzystują wszelkie aplikacje, które odwołują się do niego jako do zależności. Na szczęście sprawia to, że repojacking jest łatwy do walki.

Twórz prywatne klony repozytoriów

Klonowanie repozytorium to doskonały sposób na zminimalizowanie ryzyka związanego z zależnościami w Twoim projekcie, ponieważ będziesz miał całkowitą kontrolę nad swoją prywatną kopią. Możesz utworzyć prywatną kopię publicznego repozytorium przez samo klonowanie i przesyłanie lustrzane, zgodnie z dokumentacją GitHub.

Uważnie śledź zależności projektu

Jeśli zdecydujesz, że wolisz uniknąć kłopotów i odwoływać się do publicznych repozytoriów, upewnij się, że często kontrolujesz zależności projektu. Sprawdzanie stanu twoich zależności kilka razy w roku zajmie najwyżej godzinę – i zaoszczędzi ci wiele stresu.

Rozważ ponownie zmianę nazwy konta

W idealnej sytuacji aktualizowanie nazwy użytkownika nie byłoby powodem do niepokoju. Jednak biorąc pod uwagę ryzyko ponownego przejęcia, powinieneś rozważyć zachowanie przestarzałej nazwy. Jeśli musisz zmienić swoją nazwę użytkownika, powinieneś zażądać i zarezerwować starą nazwę, rejestrując inne konto.

Mądrze korzystaj z zasobów zewnętrznych

Zależności stanowią nieodłączne ryzyko, ponieważ tworzą w aplikacji punkty dostępu innych firm. Chociaż zazwyczaj są one warte zaoszczędzonego czasu, regularne kontrolowanie zależności w projekcie ma kluczowe znaczenie. Powinieneś także podjąć inne środki bezpieczeństwa, takie jak uwierzytelnianie SSH, aby zapobiec exploitom.