Kees Cook esitteli uudet korjaustiedostot Linux-ytimen pinon tietoturvan parantamiseksi

Linux

Kees Cook, kernel.org: n entinen pääjohtaja ja Ubuntun tietoturvaryhmän johtaja, joka työskentelee nyt Googlessa Androidin ja ChromeOS: n suojaamiseksi, on julkaissut joukon korjaustiedostoja, jotka satunnaistavat ytimen pinopoikkeamat käsitellessäsi järjestelmäkutsuja. Laastarit parantavat ytimen turvallisuutta muuttamalla pinon sijaintia, ltai se tekee pinohyökkäyksistä paljon vaikeampia ja vähemmän onnistuneita

Laastarin alkuperäinen idea kuuluu PaX RANDKSTACK -projektiin. Vuonna 2019 Intelin insinööri Elena Reshetova yritti luoda tämän idean toteutuksen, joka sopii sisällytettäväksi Linux-ytimen pääkoostumukseen.

Tämän jälkeen aloitteen teki Kees Cook kuka esitteli sopivan toteutuksen ytimen pääversiolle ja jonka korjaustiedostot on suunniteltu Linuxin versiolle 5.13.

Tila poistetaan oletusarvoisesti käytöstä, ja sen ottamiseksi käyttöön tarjotaan ytimen komentoriviparametri "Randomize_kstack_offset = päällä / pois»Ja asetukset CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Lisäksi tilan käyttöönoton yleiskustannukseksi arvioidaan noin 1% suorituskyvyn menetys.

Ehdotetun suojauksen ydin on valita satunnainen pino-offset jokaiselle järjestelmäkutsulle, mikä vaikeuttaa pinon asettelun määrittämistä muistissa, vaikka vastaanotettaisiin osoitetietoja, koska pinon perusosoite muuttuu seuraavalla puhelulla.

Toisin kuin PAX RANDKSTACK, ytimeen sisällytettäviksi ehdotetuissa laastareissa, satunnaistamista ei tehdä alkuvaiheessa, mutta pt_regs-rakenteen asettamisen jälkeen, mikä tekee mahdottomaksi käyttää ptrace-pohjaisia ​​menetelmiä satunnaisen siirtymän määrittämiseksi pitkään käynnissä olevan järjestelmän puhelun aikana.

Kun Linux-ytimen pinouksen suojaus on jatkuvasti parantunut (vmap-pohjainen pinon kartoitus suojaussivuilla, thread_info-poisto, STACKLEAK), hyökkääjien on täytynyt löytää uusia tapoja hyödyntää toimintaansa.

Heillä on ydinpino-determinismi, ja ne luottavat edelleen tilanteisiin, joissa VMAP_STACK ja THREAD_INFO_IN_TASK_STRUCT ne eivät olleet merkityksellisiä. Esimerkiksi seuraavia viimeaikaisia ​​hyökkäyksiä olisi estetty, jos pinonsiirtymä ei olisi deterministinen järjestelmäkutsujen välillä

Randomize_kstack_offset-funktion tarkoituksena on lisätä satunnainen offset sen jälkeen kun pt_regs on työnnetty pinoon ja ennen kuin muuta säiepinoa käytetään järjestelmäkutsun käsittelyn aikana, vaihda se aina, kun prosessi antaa järjestelmäkutsun. Satunnaisuuden lähde määritetään tällä hetkellä arkkitehtuurilla (mutta x86 käyttää rdtsc: n () matalaa tavua).

Tulevat parannukset ovat mahdollisia eri entropialähteille, mutta tämän korjaustiedoston ulkopuolella. Lisäksi arvaamattomuuden lisäämiseksi uudet siirtymät valitaan järjestelmäkutsujen lopussa (joiden ajan tulisi olla vähemmän helppo mitata käyttäjän tilasta kuin järjestelmäkutsun saapuessa) ja tallennetaan yhteen muuttujaan CPU: ta kohden, jotta arvon elinaika ei pysy nimenomaisesti sidoksissa yhteen tehtävään.

Tähän ei ole näkyviä muutoksia x86: ssa, koska pinon säästäjä on jo ehdoitta poistettu käytöstä kokoamisyksikössä, mutta muutos vaaditaan arm64: ssä. Valitettavasti ei ole attribuuttia, jota voidaan käyttää pinon säästäjän poistamiseen käytöstä tietyille toiminnoille. Vertailu PaX RANDKSTACK -toimintoon: RANDKSTACK-funktio satunnaistaa pinon alkupaikan (cpu_current_top_of_stack), ts. Se sisältää pt_regs-rakenteen sijainnin pinossa.

Aluksi tämä laastari noudatti samaa lähestymistapaa, mutta viimeaikaisissa keskusteluissa on todettu olevan vähäarvoinen, ikään kuin ptrace-toiminto olisi hyökkääjän käytettävissä, voit käyttää PTRACE_PEEKUSR-lukeaksesi / siirtäessäsi erilaisia ​​siirtymiä pt_regs-rakenteeseen, tarkkaillaksesi pääsyjen pt_regs-välimuistikäyttäytymistä ja selvittääksesi satunnainen pino offset.

Lopuksi mainitaan se ensimmäinen toteutus tukee ARM64- ja x86 / x86_64-prosessoreita.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.