tehnika · 6 min · 30.08.2026

98 % git.kernel.org pieprasījumu nāk no rāpuļiem: 14 kodoli no 90 zīmē commit lapas

Konstantin Ryabitsev, kurš uztur kernel.org serverus, 29. augustā publicēja slodzes skaitļus par git.kernel.org. Vietne saņem aptuveni 6 miljonus pieprasījumu dienā pēc nejaušiem commit ierakstiem. Pat ar pieņēmumiem par labu cilvēkiem īstu lietotāju pieprasījumi iznāk ap 2 % no kopējās slodzes. Pārējos 98 % rada skrāpētāji.

Slodzi var izmērīt procesoros. Aiz git.kernel.org strādā 90 kodolu, kas sadalīti pa pieciem ģeogrāfiski izkliedētiem mezgliem. No tiem 14 līdz 16 jebkurā brīdī nedara neko citu kā pārvērš git vēstures ierakstus HTML lapās. Vidēji tie ir 20 % no visas jaudas. Ryabitsev raksta, ka commit lapu zīmēšana skrāpētājiem tagad apēd vairāk procesora ciklu nekā visa pārējā likumīgā piekļuve kopā, ieskaitot git clone izsaukumus no izstrādātājiem.

Kāpēc git serveris pievelk rāpuļus

linux.git satur 1,48 miljonus commit ierakstu. Uz git.kernel.org šim repozitorijam ir 922 atzarojumi. Katram commit ierakstam ir sava lapa. Katram failam tajā ir sava izmaiņu lapa. Katra no tām ir derīga adrese, ko rāpulis var atvērt un lejupielādēt.

Ryabitsev adrešu telpu apraksta šādi:

Vienam atzarojumam sanāk 1,2 metriskās bajiljonas derīgu URL adrešu.

Rāpulis, kas seko katrai atrastajai saitei, no viena repozitorija izvelk praktiski bezgalīgu lapu skaitu. Nokopēt visu linux.git ar vienu git clone izsaukumu būtu lētāk gan skrāpētājam, gan serverim. Skrāpētāji to nedara. Tie lasa HTML, jo HTML ir tas, ko to programmas prot lasīt.

Vietni apkalpo cgit, kas rakstīts laikam, kad internetā bija cilvēki vai rāpuļi, kuri ievēroja robots.txt. Šo pieņēmumu vairs nav.

Gads, kurā boti iemācījās izlikties

Ryabitsev problēmas sākumu datē aptuveni ar 2025. gada augustu. Sākumā rāpuļi sevi nosauca User-Agent laukā, tāpēc tos varēja izfiltrēt ar dažām rindām konfigurācijā. Pēc tam tie sāka uzdoties par parastiem pārlūkiem. Vēl vēlāk pārgāja uz mājas un mobilo operatoru IP adresēm, kur adreses bloķēšana skar īstus lietotājus.

Kad tas pirms apmēram gada kļuva par problēmu, komanda naivi domāja, ka to var apturēt, raksta Ryabitsev. Šodienas secinājums viņa rakstā ir īsāks: vienkāršu risinājumu nav.

Anubis grūtība 4 vairs neaptur botus

Pieprasījumu priekšā kernel.org stāv Anubis, ko 2025. gada janvārī publicēja Xe Iaso. Tas ir MIT licencēts Go rīks, kas pirms lapas parādīšanas liek pārlūkam atrast SHA256 jaucējvērtību ar noteiktu nuļļu skaitu sākumā. Metode aizgūta no hashcash. Kad uzdevums atrisināts, klients saņem parakstītu JWT sīkdatni un kādu laiku tiek cauri bez rēķināšanas.

Anubis noklusējuma grūtība ir četras nulles. Ar to sāka arī kernel.org. Boti pielāgojās, tāpēc grūtību pacēla uz piecām. Telefonā tas aizņem dažas sekundes. Boti tagad izrēķina arī piecas. Sešas nulles būtu nākamais solis, bet Anubis dokumentācija brīdina, ka sestā līmeņa uzdevums klientam var aizņemt minūtes. Tas nozīmētu minūtes gaidīšanas katram cilvēkam, kas atver commit lapu no telefona.

Pašlaik 66 % pieprasījumu Anubis noraida uzreiz. Atlikušie 33 % uzdevumu atrisina un nokļūst līdz vietnei. To pašu rīku izmanto GNOME, FFmpeg, SourceHut un LKML arhīvs. Djūka universitāte savā izmēģinājumā ziņoja par vairāk nekā 4 miljoniem nevēlamu HTTP pieprasījumu, ko Anubis nobloķē dienā.

Kas jau izmēģināts

Pirms Anubis kernel.org administratori bloķēja atsevišķas IP adreses ar fail2ban. Pēc tam bloķēja veselus ASN numurus, tostarp Google Compute mākoņa adreses. Reizēm tīklā iekrita arī izstrādātāju automatizācija. Abas metodes deva tikai īslaicīgu efektu.

Lobste.rs diskusijā par rakstu vairāki serveru administratori nosauc iemeslu: dzīvojamo māju starpniekserveru tirgu. Ja rāpulis pērk piekļuvi caur parastiem mājas interneta pieslēgumiem, bloķēta IP adrese tam praktiski neko nemaksā. Vecā loģika, kurā rāpulis pats sevi bremzē, lai nesadedzinātu adresi, vairs nedarbojas.

Tajā pašā diskusijā viens administrators apraksta, kā uzbrukumu viļņu laikā palielināja savu VPS no 4 eiro mēnesī līdz vairāk nekā 40. Serveris tāpat neizturēja. Vājā vieta izrādījās TLS rokasspiedieni. Lapu zīmēšana bija otrajā vietā.

Grūtākais ir atšķirt cilvēku no bota. Lietotājs, kas pēc kārtas atver piecas commit lapas, no servera puses izskatās tāpat kā rāpulis, kas caur mājas pieslēgumu paņem piecas lapas un pazūd.

Ko kernel.org gatavojas mainīt

Ryabitsev raksta, ka nākamais solis ir izslēgt funkcijas, kas rada rāpojamas adreses. Dārgākās darbības anonīmiem apmeklētājiem tiks aizvērtas. Viņš brīdina lasītājus rēķināties ar to, ka daļa funkcionalitātes pazudīs. Konkrēts saraksts vēl nav publicēts.

Lobste.rs komentētāji piedāvāja savas idejas. Vecākiem commit ierakstiem prasīt lielāku proof-of-work grūtību nekā svaigajiem. Rādīt tikai statisku saturu un likt klientam pašam izrēķināt izmaiņu skatu. Anonīmām sesijām noņemt navigācijas saites, lai rāpulim nav kam sekot. Analizēt TLS pirkstu nospiedumus ar JA3 vai JA4 un pēc tiem atsijāt klientus.

Ekonomika paliek tā pati. Kamēr HTML lapu skrāpēšana skrāpētājam maksā mazāk nekā viens git clone, tas turpinās ņemt HTML lapas. Kernel.org neko nepārdod un dzīvo no Linux Foundation budžeta, tāpēc 20 % no 90 kodoliem ir tieša izmaksa, ko sedz projekts.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no tehnikasaistītie