Konstantin Rjabcew, administrator infrastruktury kernel.org, opublikował wyniki analizy ruchu serwisu git.kernel.org, który pozwala na przeglądanie zawartości repozytoriów git projektów związanych z rozwojem jądra Linux. Codziennie serwis obsługuje około 6 milionów zapytań o informacje o commitach, z których 66% przypada na boty, które udaje się zablokować dzięki systemowi Anubis. 33% zapytań przechodzi weryfikację systemu Anubis, który zezwala na dostęp tylko po rozwiązaniu w języku JavaScript wartości, której hash SHA-256 w połączeniu z przekazaną przez serwer string zawiera określoną liczbę wiodących zer (to zadanie wymaga zasobów CPU do rozwiązania, ale nie wymaga zasobów do weryfikacji).
Dokładne określenie, kto z tych 33% to ludzie, a kto zaawansowane boty, jest niemożliwe, ale na podstawie charakteru zapytań wyciągnięto wniosek, że ogólny udział legitymnych zapytań wynosi około 2%, a pozostałe 98% przypada na skrypty. Jednym z oznak botów są bezpośrednie zapytania o stare commity w przypadkowych starych gałęziach, które mało prawdopodobne, by mogły być potrzebne ludziom w pracy. Aktywność botów wytwarza ogromne pasożytnicze obciążenie na serwery ponieważ zamiast raz pobrać cały kod i historię commitów za pomocą operacji „git clone”, boty wysyłają miliardy zapytań, przeszukując wszystkie możliwe opcje przez interfejs webowy i wielokrotnie żądając tych samych danych z różnymi parametrami.
Blokowanie botów według adresów IP i systemów autonomicznych szybko przestało działać, ponieważ boty zaczęły wysyłać zapytania z milionów losowych adresów IP z sieci domowych lub mobilnych, uzyskanych w wyniku aktywności botnetów lub monetyzacji dodatków do przeglądarek. Z każdego adresu wysyłane jest tylko 4-5 zapytań, więc blokowanie ich na poziomie zapory sieciowej jest bezsensowne.
Przez jakiś czas blokowanie botów wspierał system Anubis, ale z biegiem czasu boty dostosowały się do wykonywania obliczeń proponowanych w Anubis. Między innymi boty nauczyły się rozwiązywać zadanie na poziomie trudności 5, a dalsze podnoszenie poziomu jest problematyczne, ponieważ nawet piąty poziom wymaga kilku sekund obliczeń i bardzo irytuje legitymnych użytkowników.
W rezultacie na obsługę zapytań skryptów w infrastrukturze kernel.org wydaje się więcej zasobów niż na wszystkie inne rodzaje legalnych operacji, w tym „git clone”. Na 5 serwerach, obsługujących git.kernel.org, w każdej chwili 14-16 z dostępnych 90 rdzeni CPU jest nieprzerwanie zajętych wyświetlaniem commitów git dla botów. Aby zmniejszyć obciążenie, administratorzy próbują teraz ograniczyć możliwości usługi, wyłączyć niektóre zasobożerne operacje, ograniczyć dostęp anonimowy oraz skrócić liczbę dostępnych linków do nawigacji.
Źródło: opennet.ru
