Neuspješno kopiranje CVE-2026-31431: kako mala Linux greška krši granice privilegija

Posljednje ažuriranje: 05/02/2026
  • Neuspješno kopiranje (CVE-2026-31431) je ozbiljna greška u Linux kernelu koja omogućava bilo kojem lokalnom korisniku da postane root koristeći sićušni Python skript.
  • Greška se nalazi u kripto putanji algif_aead/authencesn, oštećujući 4 bajta u kešu stranica bilo koje čitljive datoteke bez dodirivanja diska.
  • Gotovo sve glavne Linux distribucije od 2017. godine jesu ili su bile pogođene, sa velikim utjecajem na opterećenja više zakupaca, oblaka i kontejnera.
  • Prodavci su objavili zakrpe za kernel; dok se one ne primijene, administratori bi trebali onemogućiti algif_aead / AF_ALG i pojačati praćenje zloupotrebe AF_ALG + splice().

Ranjivost u vezi s eskalacijom privilegija Linuxa

Temelji sigurnosti Linuxa su pogođeni otkrivanjem CVE-2026-31431, nadimak „Kopiranje nije uspjelo“, ranjivost u kernelu koja gotovo svaki lokalni račun pretvara u brzi put do roota. Problem, tiho prisutan od 2017. godine, utiče na kriptografski AF_ALG podsistem i prisilio je administratore širom svijeta da u rekordnom roku pregledaju kernele, kontejnere i cloud čvorove.

Ono što izdvaja ovu bubu je mješavina trivijalna eksploatacija, široka distribucijska pokrivenost i forenzička prikrivenostDokaz koncepta u Pythonu, veličine otprilike 732 bajta, koji koristi samo standardne bibliotečke module, dovoljan je za eskalaciju od neprivilegovane ljuske do pune kontrole sistema na širokom rasponu modernih Linux instalacija. Nisu potrebni složeni prozori utrke, specifični pomaci kernela i korisni tereti trećih strana.

Šta je zapravo greška kopiranja (CVE-2026-31431)

U svom srcu, Neuspješno kopiranje je lokalna eskalacija privilegija (LPE). Greška u kripto kodu Linux kernela, praćena kao CVE-2026-31431 i ocijenjena visokom ozbiljnošću (CVSS oko 7.8). Svaki korisnik koji je sposoban pokrenuti kod na ranjivom sistemu – normalnom računu, CI zadatku, procesu kontejnera ili kompromitovanoj web aplikaciji – može je iskoristiti da postane root u nekoliko sekundi.

Ranjivost se nalazi u algif_aead sučelje AF_ALG podsistema, koji izlaže operacije autentificiranog šifriranja (AEAD) korisničkom prostoru putem socketa. Greška pogađa određeni predložak, autentičnost, koji kombinuje HMAC‑SHA256 sa AES‑CBC i široko je omogućen po defaultu na mainstream distribucijama.

Sa stanovišta napadača, primitiv je varljivo jednostavan: Neprivilegovani korisnik može zapisati četiri potpuno kontrolisana bajta u keš stranice bilo koje čitljive datoteke., a zatim pokrenite tu oštećenu kopiju u memoriji da se izvrši s povećanim privilegijama. Budući da kernel čita binarne datoteke iz keša stranica kad god je to moguće, mijenjanje tih keširanih podataka efektivno mijenja ono što će se pokrenuti - bez dodirivanja datoteke na disku.

Ovo ponašanje izdvaja Copy Fail od mnogih konvencionalnih grešaka: prikaz datotečnog sistema ostaje besprijekoran, kontrolne sume na disku se i dalje podudaraju, a skeneri integriteta datoteka ne vide ništa sumnjivo, iako je kod koji se zapravo izvršava izmijenjen u RAM-u.

Kako se optimizacija iz 2017. pretvorila u kritičnu grešku

Tehnički, neuspješno kopiranje potiče od logička greška uvedena 2017. godine kada su programeri dodali optimizaciju kako bi omogućili određenim AEAD operacijama da se izvršavaju "na licu mjesta" u algif_aead.c (commit se često navodi kao 72548b093ee3). Promjena je bila zamišljena isključivo kao poboljšanje performansi, ali je suptilno promijenila način na koji su baferi i stranice keša stranica povezani.

Za dešifriranje, kernel kod je počeo kopirati dodatne autentificirane podatke (AAD) i šifrirani tekst iz liste raspršenih podataka za slanje u prijemni bafer, a zatim je povezivao tag stranice referencom umjesto da ih potpuno razdvoji. U praksi, ovo pretvorio stranice predmemorije stranica – namijenjene samo za čitanje – u segmente odredišne ​​liste raspršenih podataka u koje se može pisati.

The Predložak authencesn je zatim izvršio pisanje s početnim podacima odmah nakon kraja korisnički vidljivog bafera., hodajući preko tih sada pisljivih stranica iz keša stranica. Na papiru, svaka pojedinačna promjena izgledala je bezopasno, ali kombinacija optimizacije na mjestu, ponovne upotrebe keša stranica i ponašanja predloška prilikom scratchanja proizvela je pisanje izvan granica od četiri bajta koje je u osnovi neuspjelog kopiranja.

Za razliku od klasičnih ranjivosti u uslovima utrke kao što su Dirty COW (CVE-2016-5195) ili Dirty Pipe (CVE-2022-0847), ova ranjivost ne oslanja se na vremenske okvire ili ponovljene pokušajeOvaj iskorištavajući propust je deterministički i robustan u svim kernelima, što je jedan od razloga zašto ga sigurnosni timovi tretiraju kao jedan od najozbiljnijih Linux LPE-ova posljednjih godina.

Kako exploit funkcioniše: AF_ALG, splice() i četiri opasna bajta

Javno opisani dokaz koncepta je mala Python 3 skripta (oko 732 bajta) koji koristi samo standardne module kao što su os, socket i zlibPotreban je Python 3.10+ za os.splice(), ali inače izbjegava sve kompajlirane korisne terete, vanjske zavisnosti ili podešavanje specifično za kernel.

Uglavnom, iskorištavanje otvara socket sa domenom AF_ALG konfigurisan za AEAD mod i veže ga za ranjive autentičnost predložak. Zatim uređuje stranice iz keša stranica kernela ciljnog binarnog fajla – obično setuid program kao /usr/bin/su or sudo – za korištenje kao dio AEAD izlaznog bafera.

Da bi premostio te dijelove, skripta koristi splice() sistemski poziv, koji može povezati deskriptore datoteka i bafere cijevi bez kopiranja podataka u korisnički prostor. Spajanjem stranica keširane stranice za odabrani binarni fajl u putanju podataka AF_ALG, iskorištavanje osigurava da će svako prekoračenje direktno pasti na sadržaj te keširane datoteke.

Tokom AEAD operacije, zbog osnovnog baga, kernel piše četiri bajta koje kontroliše napadač, odmah iza predviđene granice baferaEksploatacija kontrolira i pomak i vrijednost, koristeći pažljivo izrađen AAD i šifrirani tekst. Ponavljanjem ovog primitiva više puta, može... zakrpa kritične instrukcije u keširanoj kopiji binarne datoteke setuid, na primjer zaobilaženje provjere lozinki ili pozivanje root ljuske.

Kada napadač konačno pokrene modificirani binarni fajl sa execve(), kernel izvršava oštećenu kopiju predmemorije stranica umjesto ponovnog čitanja datoteke s diska, a proces počinje s punim root privilegijama. Cijeli lanac se oslanja na valjane sistemske pozive – socket(), splice(), sendmsg(), execve() – što čini aktivnost teško razlikovati od legitimnih obrazaca radnog opterećenja u mnogim okruženjima.

Zašto je tako teško uočiti: oštećenje samo u pamćenju

Možda najuznemirujući aspekt Copy Faila je taj što napad nikada ne zapisuje izmijenjene podatke nazad na diskUnos u keš memoriju stranice koji sadrži oštećeni binarni kod nije označen kao "prljav", tako da kernel nema razloga da ga vraća u memoriju. Što se tiče datotečnog sistema na disku, sve izgleda normalno.

Ovo znači to provjere integriteta zasnovane na hešu, agenti za praćenje datoteka i standardni antivirusni alati obično neće ništa primijetiti. Forenzički istražitelj koji analizira sliku diska nakon incidenta vidio bi savršeno čistu binarnu datoteku, čak i ako je taj program upravo izvršen s izmijenjene kopije u memoriji nekoliko trenutaka ranije.

Uticaj je takođe prolazan na pomalo varljiv način: Ponovno pokretanje ili brisanje iz predmemorije će odbaciti oštećenu stranicu, uklanjajući tragove manipuliranog sadržaja. Iz perspektive odgovora na incident, ova kombinacija volatilnosti i nevidljivosti podiže ljestvicu za pouzdano otkrivanje i analizu nakon smrti.

Budući da iskorištavanje koristi normalne interfejse kernela, čak i napredna EDR ili SIEM rješenja mogu imati problema, osim ako nisu konfigurirana za praćenje vrlo specifičnih obrasci AF_ALG i splice() upotreba vezana za setuid binarne datotekeNekoliko dobavljača je već dodalo namjenska pravila s nazivima kao što su possible_copy_fail_cve_2026_31431 or possible_lpe_by_python kako bi se pomoglo u označavanju sumnjivog ponašanja.

Obim izloženosti: koja su jezgra i distribucije u riziku

Prema tehničkim opisima, bilo koji Verzija Linux kernela od verzije 4.14 (juli 2017.) do prvih zakrpanih izdanja je ranjiv, pod uslovom da je pogođeni kripto put omogućen. To uključuje širok spektar mainstream distribucija i verzija koje su implementirane tokom skoro jedne decenije.

Među sistemima za koje je potvrđeno ili je jasno naznačeno da su pogođeni su Ubuntu, Debian, SUSE, Red Hat Enterprise Linux (RHEL), Amazon Linux i nekoliko WSL2 kernelaTestovi istraživača pokazali su da isti nemodificirani Python exploit radi na Ubuntu 24.04, Amazon Linux 2023, RHEL 10.1 i SUSE 16, što naglašava koliko je malo podešavanja specifičnog za verziju potrebno.

Ozbiljnost se uvećava u okruženja s više korisnika i više zakupaca kao što su dijeljeni hosting, kampus serveri, CI/CD runneri i cloud platforme gdje se proizvoljni korisnički kod izvršava na dijeljenom hardveru. U tim scenarijima, bilo koji račun ili kontejner s lokalnim izvršavanjem koda može se pretvoriti u odskočnu dasku za potpunu kompromitaciju hosta.

To vrijedi napomenuti nedavni kerneli i distribucije sa primijenjenom službenom ispravkom – na primjer Ubuntu 26.04 “Resolute” i novija stabla izvedena iz zakrpanih upstream verzija – nisu pogođena. Međutim, starija LTS izdanja ili prilagođeni kerneli mogu ostati ranjivi dok se eksplicitno ne ažuriraju, a nepodržane instalacije jednostavno neće uopće dobiti zakrpu.

Proširena podrška, kao što je Desetogodišnji period pokrića za Ubuntu Pro i slični poslovni programi, postaju relevantniji u ovom kontekstu. Oni osiguravaju da čak i starije implementacije dobiju hitne sigurnosne ispravke poput one za Copy Fail, smanjujući broj "napuštenih" sistema koji i dalje koriste iskorištavajuća jezgra.

Oblak, kontejneri i CI/CD: zašto su moderni stekovi posebno izloženi

Na laptopu za jednog korisnika, lokalni LPE može se činiti kao upravljiv rizik. U modernim infrastrukturama, gdje kod iz više zakupaca se izvršava paralelno na zajedničkom kernelu, dinamika je veoma različita. Neuspješno kopiranje se brzo popelo na listi prioriteta upravo zato što prelazi mnoge od ovih granica izolacije.

Na kontejnerskim platformama kao što su Docker, LXC ili Kubernetes, sva opterećenja na hostu dijele isto jezgro, uključujući keš memoriju stranica. Ako je to jezgro ranjivo i AF_ALG interfejs je dostupan, Proces u naizgled ograničenom podu može zatrovati keširane setuid binarne datoteke ili druge osjetljive izvršne datoteke koje koristi host., a zatim jašite taj oslonac da biste se ukorijenili na cijelom čvoru.

Nakon što je čvor kompromitovan, napadači često mogu preći na druge podove, manipulisati komponentama kontrolne ravni ili pristupiti vjerodajnicama klastera. Za velike Kubernetes instalacije u bankama, telekomunikacijskim operaterima ili SaaS provajderima, Neuspješno kopiranje efektivno pretvara iskorištavanje jednog poda u potencijalni incident na nivou cijelog klastera..

CI/CD sistemi su u sličnoj situaciji. Pokrećetelji za GitHub Actions, GitLab CI, Jenkins ili interne farme izgradnje često izvršavaju nepouzdan ili polupouzdan kod. Naizgled mala greška u jednom repozitorijumu ili zlonamjerni zahtjev za povlačenjem (pull request) mogu biti povezani s Copy Fail. preuzeti kontrolu nad domaćinom trkača, mijenjati artefakte izgradnje ili pristupiti tajnama koriste drugi poslovi.

Pružatelji dijeljenog hostinga i VPS-a suočavaju se sa svojim vlastitim problemima. Korisnik s pristupom jednoj virtualnoj instanci mogao bi, u nekim konfiguracijama, iskoristiti Copy Fail to... pobjeći u domaćina ispod sebe ili uticati na susjedne goste, ovisno o tome koliko je svaki sloj čvrsto izoliran i koji su interfejsi izloženi.

Kako je otkriveno neuspješno kopiranje: Vještačka inteligencija ulazi u reviziju kernela

Jedan od najupečatljivijih detalja u vezi s CVE-2026-31431 je način na koji je otkriven. Početni izvještaj dolazi od Istraživač kompanije Theori, Taeyang Lee, koristeći resurse kompanije Revizijska platforma Xint Code uz pomoć umjetne inteligencijePrema objavljenoj vremenskoj liniji, njihov alat je identificirao problem za otprilike sat vremena analize.

Taj vremenski okvir nije samo anegdota: on nagovještava promjenu u ekonomiji ranjivosti kernela. Historijski gledano, Visokokvalitetni Linux LPE-ovi sa širokom prenosivošću i bez uslova utrke mogao bi nametnuti značajne cijene brokerima na sivom tržištu. Navodno su nagrade i privatni programi plaćali od desetina hiljada do miliona dolara za zero-day aktivnosti ove klase.

Ako analiza koda vođena vještačkom inteligencijom sada može otkriti takve greške za redove veličine brže i jeftinije Za razliku od tradicionalnog ručnog pregleda, dugogodišnje pretpostavke o rijetkosti problema na nivou kernela postaju zastarjele. Odbrambeni budžeti i strategije određivanja prioriteta zakrpa zasnovane na uvjerenju da su ove greške rijetke – jer ih je skupo pronaći – možda će trebati preispitati.

Istovremeno, otkriće Copy Faila pojačava ideju da Vjerovatno je da će vještačka inteligencija postati standardni dio procesa recenziranja samog Linux kernela.Umjesto zamjene ljudskih održavatelja, automatizirani alati mogu djelovati kao dodatni filter, označavajući suptilne interakcije između optimizacija i podsistema koje bi bilo teško uočiti samo golim okom.

Odgovor dobavljača, zakrpe i zvanično rješenje

Upstream Linux zajednica se pozabavila uzrokom problema putem zakrpe identifikovane kao počiniti a664bf3d603dOva promjena efektivno vraća optimizaciju na licu mjesta iz 2017. godine u algif_aead.c, ponovno uspostavljajući strogo razdvajanje između liste raspršenih podataka za slanje, koja može uključivati ​​stranice predmemorije stranica, i liste raspršenih podataka za prijem koji se koristi kao korisnički izlaz.

Uklanjanjem koda koji je povezao obje liste putem sg_chain(), flaster sprečava da se unosi u keš memoriju stranica ikada prenamijene kao prostor za pisanje za operacije autentifikacije. Drugim riječima, optimizacija se žrtvuje u korist predvidljivog, sigurnog rukovanja baferom, zatvarajući pisanje izvan granica od četiri bajta na njegovom izvoru.

Vremenski okvir otkrivanja podataka odražava prilično standardan koordinirani proces: Theori je kontaktirao tim za sigurnost Linux kernela 23. marta 2026.Ispravke su spojene u glavnu liniju 1. aprila, CVE identifikator je dodijeljen 22. aprila, a javna upozorenja su objavljena oko 29-30. aprila. Distribucije su zatim počele isporučivati ​​zakrpljene kernele za svoja podržana izdanja.

Projekti poput Debian, Ubuntu, SUSE i Amazon Linux relativno brzo izdavao sigurnosna ažuriranja u podržanim granama. U nekim slučajevima, specijalizirane verzije kernela - na primjer, varijante usmjerene na određene hardverske platforme - navedene su kao nepogođene ako nikada nisu uključivale ranjivu putanju koda.

Red Hat je u početku signalizirao oprezniji pristup, što ukazuje na to da bi određeni proizvodi mogli odgoditi ispravku dok se ne završi analiza utjecaja. Pod pritiskom kupaca i šire zajednice, te s obzirom na jednostavnost exploita, smjernice su ažurirane tako da su RHEL linije primale zakrpu otprilike istim tempom kao i druge poslovne distribucije.

Privremena ublažavanja dok vršite zakrpu

U idealnim uslovima, administratori bi jednostavno pokrenuli zakrpane kernele i ponovno pokretanje svaki sistem. U praksi, proizvodna okruženja sa strogim zahtjevima za neprekidni rad često zahtijevaju privremene mjere za smanjenje rizika dok ne budu dostupni periodi održavanja.

Sigurnosni savjeti, uključujući preporuke CERT-EU-a, opisuju jednostavno ublažavanje: onesposobiti ranjive algif_aead modulOvo se može trajno uraditi dodavanjem pravila kao što je install algif_aead /bin/false to /etc/modprobe.d/disable-algif.conf a zatim pokušaj istovara modula sa rmmod algif_aead 2>/dev/null || true.

Ključno je da ovo zaobilazno rješenje ne ometa uobičajene kripto stekove u korisničkom prostoruTehnologije poput dm‑crypt/LUKS, kTLS, IPsec/XFRM, OpenSSL, GnuTLS, NSS ili SSH ne zavise od onemogućavanja specifične putanje algif_aead, tako da većina okruženja može primijeniti ovo ublažavanje s ograničenim nuspojavama.

Za kontejnerizirana radna opterećenja, CERT-EU i druga tijela savjetuju poduzimanje dodatnog koraka: blokirati kreiranje AF_ALG socketa putem seccomp profila ili sličnih sandbox politika u svim podovima i poslovima, bez obzira na to da li je glavni kernel zakrpan. Isključivanje AF_ALG za nepouzdana opterećenja efikasno uklanja glavni kanal eksploatacije čak i na kernelima koji još nisu nadograđeni.

Neki prodavači također preporučuju smanjenje broja setuid binarnih datoteka prisutnih na serverima, posebno u okruženjima visokog rizika kao što su dijeljeni CI pokretači ili višezakupni čvorovi u oblaku. Iako ovo ne rješava sam problem neuspjelog kopiranja, smanjuje skup visokovrijednih ciljeva kojima napadač može manipulirati putem primitiva za pisanje u keš stranicu.

Praćenje i detekcija: na šta treba paziti

Uz ažuriranje i jačanje sigurnosti, mnoge organizacije ulažu vrijeme u detekcija instrumentacije za potencijalno iskorištavanje neuspjelog kopiranjaS obzirom na to da greška ne ostavlja očigledne tragove na disku, praćenje se mora fokusirati na pokazatelje ponašanja na nivou kernela i procesa.

Uobičajena preporuka je konfiguriranje auditd za evidentiranje sumnjivih kombinacija sistemskih pozivaNa primjer, timovi mogu pratiti očitavanja setuid binarnih datoteka kao što su su, sudo, passwd, gpasswd, newgrp, chfn, chsh, mount, umount or fusermount3 kada ih izvršavaju interpreteri poput Pythona koji se pokreću s nepouzdanih putanja.

Povrh toga, poziva na splice() od strane korisnika koji nisu root koji manipulišu deskriptorima datoteka koji pokazuju na iste setuid binarne datoteke mogu se evidentirati i korelirati. Sekvenca u kojoj korisnička skripta čita setuid binarni fajl, koristi splice() a zatim pokreće shell putem te binarne datoteke je vrsta obrasca vrijednog označavanja.

Drugi signal je kreiranje socketa sa domenom AF_ALG (numerička vrijednost 26) s redovnih korisničkih računa (npr. UID-ovi ≥ 1000) na sistemima gdje se ne očekuje da AF_ALG bude dio rutinskog ponašanja aplikacije. SIEM platforme mogu agregirati ove događaje i podići upozorenja kada se dogode izvan poznatih dobrih procesa.

Komercijalni EDR proizvodi brzo razvijaju svoje skupove pravila kako bi uključili analitiku svjesnu grešaka kopiranja, često pod oznakama događaja kao što su possible_copy_fail_cve_2026_31431Ova pravila obično prate kombinacije korištenja AF_ALG-a, splice() sekvence i neobične tranzicije privilegija unutar jedne procesne linije.

Neuspješno kopiranje u kontekstu: novo poglavlje u historiji Linux LPE-a

Neuspješno kopiranje neizbježno izaziva poređenja s ranijim poznatim nedostacima Linux kernela. Ranjivosti poput Prljava krava i prljava cijev također se vrtjelo oko manipuliranja rukovanjem navodno nepromjenjivim podacima od strane kernela kako bi se postiglo pisanje tamo gdje to ne bi trebalo biti moguće.

Dok su se ranije greške često fokusirale na modifikacije datoteka na disku ili oštećenje međuspremnika cijevi, Copy Fail ide malo drugačijim putem: Fokusira se na prolazno oštećenje keša stranice u memoriji putem kripto podsistema.Za napadače, ovo nudi kombinaciju prenosivosti, pouzdanosti i prikrivenosti koja je atraktivna za ulančavanje u veće strategije upada.

Slučaj također doprinosi široj diskusiji o složenost modernih kernela i ograničenja ljudskog pregledaOvdje su se tri savršeno razumne dizajnerske odluke – optimizacija na mjestu, određena upotreba stranica predmemoriranja stranica i pisanje scratch-om u authencesn – preplitale i stvorile ozbiljnu ranjivost koja je ostala skrivena gotovo devet godina.

Za preduzeća i operatere koji se u velikoj mjeri oslanjaju na Linux, glavna stvar je manje o jednoj specifičnoj grešci, a više o važnost brzog ažuriranja, konzervativnog izlaganja interfejsa kernela i kontinuiranog sigurnosnog praćenjaProduženje životnog ciklusa kernela bez jasne strategije za pravovremena sigurnosna ažuriranja značajno povećava vjerovatnoću da će se slični problemi kasnije ponovo pojaviti kao kritični operativni problemi.

Neuspješno kopiranje (CVE-2026-31431) pokazalo je kako mala logička greška u kripto kodu Linux kernela može potkopati granice privilegija između kontejnera, CI cjevovoda i dijeljenih servera uz vrlo malo napora napadača. Uvođenje zakrpanih kernela, onemogućavanje algif_aead i AF_ALG tamo gdje nisu strogo potrebni i pooštravanje nadzora oko AF_ALG i splice() Korištenje je brzo postalo ključni zadatak za Linux administratore koji žele spriječiti da se lokalna uporišta pretvore u potpuno kompromitovanje sistema.

Kako koristiti sudo u Linuxu
Vezani članak:
Kako koristiti sudo u Linuxu kao profesionalac
Slični postovi: