Vulnerabilitatea în mecanismul de execuție speculativă a procesoarelor AMD

Proiectul Grsecurity a publicat detalii și o demonstrație a metodei de atac pentru o nouă vulnerabilitate (CVE-2021-26341) în procesoarele AMD legate de execuția speculativă a instrucțiunilor după operațiuni forward necondiționate. Dacă atacul are succes, vulnerabilitatea permite să fie determinat conținutul zonelor de memorie arbitrare. De exemplu, cercetătorii au pregătit un exploit care le permite să determine aspectul adresei și să ocolească mecanismul de protecție KASLR (randomizare memorie kernel) prin executarea de cod neprivilegiat în subsistemul kernel-ului ePBF. Nu pot fi excluse alte scenarii de atac care ar putea duce la o scurgere a conținutului memoriei nucleului.

Vulnerabilitatea vă permite să creați condiții în care procesorul, în timpul execuției preventive, procesează în mod speculativ instrucțiunea imediat după instrucțiunea de salt în memorie (SLS, Straight Line Speculation). Mai mult, o astfel de optimizare funcționează nu numai pentru operatorii de salt condiționat, ci și pentru instrucțiuni care implică salt necondiționat direct, cum ar fi JMP, RET și CALL. Urmând instrucțiuni de salt necondiționat, pot fi plasate date arbitrare care nu sunt destinate execuției. După ce s-a determinat că o ramură nu implică execuția următoarei instrucțiuni, procesorul pur și simplu derulează înapoi starea și ignoră execuția speculativă, dar urma execuției instrucțiunii rămâne în memoria cache partajată și este disponibilă pentru analiză folosind tehnici de recuperare pe canal lateral.

Ca și în cazul exploatării vulnerabilității Spectre-v1, atacul necesită prezența anumitor secvențe de instrucțiuni (gadget) în kernel care duc la execuția speculativă. Blocarea unei vulnerabilități în acest caz se rezumă la identificarea unor astfel de gadget-uri în cod și adăugarea acestora de instrucțiuni suplimentare care blochează execuția speculativă. Condițiile pentru execuția speculativă pot fi create și de programele neprivilegiate care rulează în mașina virtuală eBPF. Pentru a bloca capacitatea de a construi gadgeturi folosind eBPF, se recomandă dezactivarea accesului neprivilegiat la eBPF în sistem („sysctl -w kernel.unprivileged_bpf_disabled=1”).

Vulnerabilitatea afectează procesoarele bazate pe microarhitectura Zen1 și Zen2, inclusiv prima și a doua generație de procesoare AMD EPYC și AMD Ryzen Threadripper, precum și AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Procesoare din seriile PRO și APU A. Pentru a bloca execuția speculativă a instrucțiunilor, se recomandă apelarea instrucțiunilor INT3 sau LFENCE după operațiuni de ramificație (RET, JMP, CALL).

Sursa: opennet.ru

Adauga un comentariu