„Kees Cook“ pristatė naujus pataisymus, kad pagerintų „Linux“ branduolių kaupimo saugumą

Linux

Keesas Cookas, buvęs kernel.org pagrindinis sisteminis administratorius ir „Ubuntu“ saugos komandos vadovas, dabar dirbantis „Google“, kad apsaugotų „Android“ ir „ChromeOS“, išleido pataisų rinkinį, kuris atsitiktinai suskirsto branduolio kamino poslinkius tvarkant sistemos skambučius. Pataisai pagerina branduolio saugumą, pakeisdami kamino vietą, larba dėl to kamino atakos tampa daug sunkesnės ir ne tokios sėkmingos

Pradinė pleistro idėja priklauso PaX RANDKSTACK projektui. 2019 m. „Intel“ inžinierė Elena Reshetova bandė sukurti šios idėjos įgyvendinimą, tinkantį įtraukti į pagrindinį „Linux“ branduolio makiažą.

Vėliau iniciatyvos ėmėsi Keesas Cookas kas pristatė tinkamą pagrindinės branduolio versijos įgyvendinimą ir kurių pataisos planuojamos 5.13 versijos „Linux“.

Režimas bus išjungtas pagal numatytuosius nustatymus ir norint jį įjungti, siūlomas branduolio komandinės eilutės parametras "Randomize_kstack_offset = įjungti / išjungti»Ir nustatymai CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Apskaičiuota, kad režimo įjungimo išlaidos sumažės maždaug 1% našumo.

Siūlomos apsaugos esmė yra pasirinkti atsitiktinį kamino poslinkį kiekviename sistemos iškvietime, kuris apsunkina atminties sąrankos nustatymą atmintyje, net jei gaunama adreso informacija, nes pagrindinis kamino adresas pasikeis kito skambučio metu.

Skirtingai nuo „PaX RANDKSTACK“, pataisose, kurias siūloma įtraukti į branduolį, pradiniame etape atsitiktinumas nėra atliekamas, bet nustačius pt_regs struktūrą, todėl neįmanoma naudoti ptrace pagrįstų metodų atsitiktiniam poslinkiui nustatyti ilgalaikio sistemos skambučio metu.

Kadangi „Linux“ branduolio rietuvių apsauga nuolat tobulėjo („vmap“ pagrindu sukurtų rietuvių atvaizdavimas su apsaugos puslapiais, „thread_info“ pašalinimas, „STACKLEAK“), užpuolikai turėjo rasti naujų būdų, kaip jų išnaudojimai galėtų veikti.

Jie turi ir toliau remiasi branduolio krūvos determinizmu situacijose, kur VMAP_STACK ir THREAD_INFO_IN_TASK_STRUCT jie nebuvo aktualūs. Pavyzdžiui, šios pastarosios atakos būtų trukdžiusios, jei kamino poslinkis nebūtų deterministinis tarp sistemos skambučių

Funkcijos randomize_kstack_offset tikslas yra pridėti atsitiktinį poslinkį po to, kai „pt_regs“ buvo nustumtas į kaminą ir prieš likusį siūlų kamino panaudojimą apdorojant sistemos skambučius, keiskite jį kiekvieną kartą, kai procesas išleidžia sistemos skambutį. Atsitiktinumo šaltinį šiuo metu apibrėžia architektūra (tačiau x86 naudoja žemą baitą rdtsc ()).

Ateityje galima patobulinti įvairius entropijos šaltinius, tačiau jie nepatenka į šio pleistro taikymo sritį. Be to, norint pridėti daugiau nenuspėjamumo, sistemos skambučių pabaigoje pasirenkami nauji poslinkiai (kurių laiką iš vartotojo vietos matuoti turėtų būti ne taip paprasta, kaip įvedant sistemos skambutį) ir jie saugomi viename kintamajame per CPU, kad vertės gyvavimo laikas neliktų aiškiai susietas su viena užduotimi.

Nėra matomų pakeitimų, susijusių su „x86“, nes kompiliavimo rinkinyje jau yra besąlygiškai išjungtas kaupiklio užsklanda, tačiau pakeitimas būtinas „arm64“. Deja, nėra atributo, kurį būtų galima naudoti norint išjungti rietuvės užsklandą konkrečioms funkcijoms. Palyginimas su „PaX RANDKSTACK“ funkcija: Funkcija RANDKSTACK atsitiktinai suskirsto kamino pradžios vietą (cpu_current_top_of_stack), tai yra, apima pt_regs struktūros vietą rietuvėje.

Iš pradžių šis pleistras buvo toks pat, bet per pastarąsias diskusijas nustatyta, kad tai yra mažai vertinga, tarsi užpuolikui būtų prieinama ptrace funkcija, galite naudoti PTRACE_PEEKUSR, norėdami skaityti / rašyti skirtingus pt_regs struktūros poslinkius, stebėti prieigų pt_regs talpyklos elgesį ir sužinoti atsitiktinis kamino poslinkis.

Pagaliau paminėta pradinis diegimas palaiko ARM64 ir x86 / x86_64 procesorius.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.