Linus Torvalds je uključio dokument u jezgru koji regulira proces obrade grešaka povezanih s sigurnošću, definirajući model prijetnji, objašnjavajući koje greške u jezgru se smatraju ranjivostima i razrađujući postupke za greške otkrivene uz pomoć AI. Dokument je pripremio Willy Tarreau, autor HAProxy i dugogodišnji programer Linux kernela, zadužen za održavanje nekoliko stabilnih verzija jezgre. Kao osnova su korištena ulaganja postignuta tijekom rasprave o nedavno otkrivenim kritičnim ranjivostima u jezgru (1, 2, 3, 4), otkrivenim prije objave zakrpa i za koje su, zahvaljujući AI, odmah dostupni funkcionalni eksploiti.
Većina grešaka povezanih sa sigurnošću treba se obrađivati javno, kako bi se privukla najšira moguća publika i pronašlo optimalno rješenje. U poseban privatni popis za slanje preporučuje se slati samo hitne obavijesti o ranjivostima koje se lako iskorištavaju, predstavljajući prijetnju za mnoge korisnike i omogućavajući stjecanje proširenih privilegija ili mogućnosti.
Ranjivosti otkrivene uz pomoć AI asistenata uvijek bi se trebale raspravljati javno, jer se slični problemi često otkrivaju istovremeno od strane više istraživača. Pri tome ne treba otkrivati eksploitat u izvještaju — dovoljno je spomenuti da je dostupan, te ga u privatnom režimu proslijediti na zahtjev onoga tko prati.
Odvojeno se opisuju pravila za dostavljanje izvještaja, kreiranih uz pomoć AI asistenata. Takvih izvještaja šalje se veoma mnogo i zahvaljujući njima ponekad se uspijeva otkriti greške u loše recenziranim dijelovima koda, ali ih pratitelji često ignoriraju zbog niske kvalitete i netočnosti. Glavni zahtjevi za izvještaje koji su razvijeni uz pomoć AI su:
- Kratkoća, bez viška riječi i s naglaskom na suštinu i važne detalje na samom početku.
- Samo goli tekst bez Markdown oznaka i ukrašavanja.
- Razumijevanje modela prijetnji i navođenje provjerenih činjenica (na primjer, 'greška omogućuje bilo kojem korisniku stjecanje CAP_NET_ADMIN'), a ne teorijskih promišljanja i nagađanja o posljedicama ranjivosti.
- Prije slanja izvještaja, obavezno pažljivo testirajte funkcionalnost exploita generiranog putem AI-a i osigurajte mogućnost reproduciranja problema.
- Angažiranje AI-a za razvoj i testiranje ispravke otkrivenog problema.
Prema statistikama stručnjaka, većina izvještaja o greškama koji se šalju kao ispravka ranjivosti zapravo nisu takvi i trebaju se obrađivati kao obične greške. Opisani su modeli prijetnji jezgre Linuxa kako bi se razlikovale ranjivosti od običnih grešaka. Među mogućnostima i jamstvima čije kršenje se može smatrati ranjivošću su:
- Izolacija na razini korisnika: pristup datotekama samo za vlasnika, memorija procesa nije dostupna drugim korisnicima, ptrace je zabranjen za strane procese, izolacija IPC i mrežnih komunikacija.
- Zaštita temeljem capabilities: bez CAP_SYS_ADMIN ne može se mijenjati konfiguracija jezgre, memorija, stanje sustava; bez CAP_NET_ADMIN ne može se mijenjati mrežna podešavanja ili presretati promet; bez CAP_SYS_PTRACE ne može se pratiti procese drugih korisnika.
- Prostor imenskih identifikatora korisnika (CONFIG_USER_NS) omogućava neprivilegiranim korisnicima stvaranje vlastitih izoliranih okruženja koja ne mogu utjecati na globalni imenski prostor, na primjer, mijenjati vrijeme, učitavati module i montirati blok uređaje.
- Sučelja za debuggiranje (/proc/kmsg, perf, debugfs) koja omogućuju pristup povjerljivim informacijama su dostupna samo nakon izričitog odobrenja od strane administratora.
Mogućnosti koje se ne smatraju ranjivostima:
- Korištenje zastarjelih grana jezgre.
- Sastavljanje s uključenim opcijama za programere ili onima koje smanjuju sigurnost (npr. CONFIG_NOMMU).
- Postavljanje nesigurnih sysctl postavki, opcija naredbenog retka, prava pristupa u FS-u, capabilities ili otvaranje pristupa privilegiranim sučeljima neprivilegiranim korisnicima (npr. pristup pisanju u procfs i debugfs).
- Problemi u funkcijama koje su namijenjene samo za razvoj i debuggiranje jezgre, kao što su LOCKDEP, KASAN i FAULT_INJECTION, koje nisu namijenjene za uključivanje u radne konfiguracije.
- Problemi s vozačima, modulima i podsistemima koji se nalaze u sekciji STAGING ili su označeni kao eksperimentalni, nesigurni ili neispravni.
- Korištenje vanjskih modula jezgre ili neoficijelnih forkovanja jezgre.
- Zahtjev za višim privilegijama, poput potrebe za izvođenjem radnji s pravima root ili od korisnika koji ima prava CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_SYS_RAWIO i CAP_SYS_MODULE.
- Teorijski napadi koji zahtijevaju laboratorijske uvjete, milijarde pokušaja, emulaciju ili modifikaciju opreme, nesrazmjerno velike troškove i nerealne konfiguracije (na primjer, sustavi s desetinama tisuća CPU jezgri).
- Obilaženje mehanizama zaštite (npr. ASLR) bez demonstracije eksploita. Nedostatak provjera argumenata i vraćenih kodova grešaka koji nemaju očite posljedice.
- Slučajne informacije o curenju, izvan kontrole napadača, kao što su ostatni podaci u porukama o greškama i curenja adresa/pokazivača na memoriju jezgre bez izravne mogućnosti eksploatacije.
- Greške prilikom montiranja oštećenih slika diska, ako vozač nije označen kao prikladan za korištenje s neprovjerenim medijima. Problemi s slikama diska otkriveni i riješeni pokretanjem alata fsck.
- Napadi koji zahtijevaju fizički pristup opremi, modifikaciju opreme ili povezivanje hardverskih uređaja, kao što su kartice za napade na DMA i logički analizatori, ako sustav nije posebno podešen za zaštitu od takvih napada (IOMMU).
- Regresije s funkcionalnošću i performansama koje se mogu ispraviti podešavanjem prava i limita.
Izvor: opennet.ru
