Kees Cook ieviesa jaunus ielāpus, lai uzlabotu Linux kodola kaudzes drošību

Linux

Kijs Kuks, bijušais galvenais kernel.org vadītājs un Ubuntu drošības komandas vadītājs, kurš tagad strādā pie Google, lai aizsargātu Android un ChromeOS, ir izlaidusi ielāpu komplektu, kas randomizē kodola kaudzes nobīdes apstrādājot sistēmas zvanus. Plāksteri uzlabo kodola drošību, mainot kaudzes atrašanās vietu, lvai tas padara kaudzes uzbrukumus daudz grūtākus un mazāk veiksmīgus

Sākotnējā plākstera ideja pieder projektam PaX RANDKSTACK. 2019. gadā Intel inženieris Elena Reshetova mēģināja izveidot šīs idejas īstenošanu, kas piemērota iekļaušanai Linux kodola galvenajā grimā.

Pēc tam iniciatīvu uzņēmās Kijs Kuks kurš iepazīstināja ar piemērotu kodola galvenās versijas ieviešanu un kuru plāksteri ir plānoti Linux 5.13 versijai.

Režīms pēc noklusējuma tiks atspējots, un, lai to iespējotu, tiek piedāvāts kodola komandrindas parametrs "Randomize_kstack_offset = ieslēgts / izslēgts»Un iestatījumi CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Turklāt tiek lēsts, ka režīma iespējošanas izmaksas ir aptuveni 1% no veiktspējas zuduma.

Piedāvātās aizsardzības būtība ir izvēlēties izlases kaudzes nobīdi katram sistēmas izsaukumam, kas sarežģī kaudzes izkārtojuma noteikšanu atmiņā, pat ja tiek saņemta adreses informācija, jo nākamajā sarunā kaudzes bāzes adrese mainīsies.

Atšķirībā no PaX RANDK STACK, ielāpos, kurus ierosināja iekļaut kodolā, randomizācija sākotnējā posmā netiek veikta, bet pēc pt_regs struktūras iestatīšanas, kas padara neiespējamu uz ptrace balstītu metožu izmantošanu nejaušas nobīdes noteikšanai ilgstoša sistēmas izsaukuma laikā.

Tā kā Linux kodola kaudzes aizsardzība ir nepārtraukti uzlabojusies (uz vmap balstīta kaudzes kartēšana ar aizsardzības lapām, thread_info noņemšana, STACKLEAK), uzbrucējiem bija jāatrod jauni veidi, kā viņu varoņi darboties.

Viņiem ir un turpina paļauties uz kodola kaudzes determinismu situācijās, kad VMAP_STACK un THREAD_INFO_IN_TASK_STRUCT tie nebija nozīmīgi. Piemēram, šādi nesenie uzbrukumi būtu kavēti, ja kaudzes nobīde starp sistēmas izsaukumiem nebūtu noteicoša

Funkcijas randomize_kstack_offset mērķis ir pievienot izlases nobīdi pēc tam, kad pt_regs ir iestumts kaudzītē un pirms pārējā pavedienu kaudze tiek izmantota sistēmas zvana apstrādes laikā, un mainiet to katru reizi, kad process izdod sistēmas zvanu. Nejaušības avotu pašlaik nosaka arhitektūra (bet x86 izmanto rdtsc () zemo baitu.

Turpmāki uzlabojumi ir iespējami dažādiem entropijas avotiem, taču ārpus šī plākstera darbības jomas. Turklāt, lai palielinātu neprognozējamību, sistēmas zvanu beigās tiek izvēlēti jauni nobīdes (kuru laiku no lietotāja vietas vajadzētu būt mazāk viegli izmērīt nekā sistēmas zvana ienākšanas brīdī), un tie tiek glabāti vienā mainīgajā katrā CPU, lai vērtības kalpošanas laiks nepaliktu tieši saistīts ar vienu uzdevumu.

Par to x86 nav redzamu izmaiņu, jo kompilācijas vienībai kaudzes taupītājs jau ir bez nosacījumiem atspējots, taču arm64 ir nepieciešamas izmaiņas. Diemžēl nav atribūta, ko varētu izmantot, lai atspējotu kaudzes taupītāju noteiktām funkcijām. Salīdzinājums ar PaX RANDKSTACK funkciju: Funkcija RANDKSTACK randomizē kaudzes sākuma vietu (cpu_current_top_of_stack), tas ir, tā iekļauj pt_regs struktūras atrašanās vietu kaudzē.

Sākotnēji šis plāksteris izmantoja to pašu pieeju, taču pēdējās diskusijās ir konstatēts, ka tam ir maza vērtība, it kā ptrace funkcionalitāte būtu pieejama uzbrucējam, varat izmantot PTRACE_PEEKUSR, lai lasītu / ierakstītu pt_regs struktūras dažādus nobīdes, novērotu piekļuvju pt_regs kešatmiņas darbību un izlases kaudzes nobīde.

Visbeidzot tas ir minēts sākotnējā ieviešana atbalsta ARM64 un x86 / x86_64 procesorus.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.