drošība · 6 min · 07.09.2026

Zen 6 BTB izolācija atceļ SafeRET, ko mēnesi iepriekš laboja piecos LTS kodolos

AMD inženieris Borislavs Petkovs iesūtījis Linux kodolam ielāpu, kas atklāj vienu Zen 6 procesoru īpašību, par kuru AMD līdz šim publiski nebija teicis gandrīz nekā. Zen 6 čipā zaru mērķa buferis jeb BTB ir izolēts starp izpildes kontekstiem. Lietotāja telpas kods vairs nevar sagatavot kodola zaru prognozētāju un viesa sistēma nevar sagatavot resursdatora prognozētāju.

Tā ir tieša atbilde uz ievainojamību, ar kuru AMD cīnās jau trīs gadus. Kodola dokumentācija SRSO jeb Speculative Return Stack Overflow uzskaita kā problēmu Zen 1 līdz Zen 4 paaudzēs, tas ir, visās procesoru saimēs 0x17 un 0x19. Zen 6 gadījumā aparatūra pati aizver to daļu, ko līdz šim turēja programmatūras triks ar nosaukumu SafeRET.

Ko SafeRET dara ar katru funkcijas atgriešanos

SafeRET piespiež procesoru nepareizi prognozēt katru funkcijas atgriešanos. Kodols ievieto īpašu instrukciju secību, kas zaru prognozētāju aizved uz nekaitīgu adresi, pirms tas paspēj uzminēt uzbrucēja sagatavotu mērķi. Uz Zen 3 un Zen 4 shēma darbojas caur BTB aliasēšanu starp divām funkcijām ar tīši sakrītošām adresēm. Uz Zen 1 un Zen 2 mehānika ir citāda, doma tā pati.

Cena ir tāda, kādu var gaidīt no koda, kas iejaucas katrā atgriešanās instrukcijā. Phoronix 2023. gada mērījumos uz EPYC 7763 lielākā daļa slodžu zaudēja maz, taču atsevišķos datubāzu testos kritums bija jūtams. Daļa administratoru tāpēc SRSO aizsardzību vienkārši izslēdz ar kodola parametru spec_rstack_overflow=off.

Parametram ir piecas vērtības: safe-ret pēc noklusējuma, ibpb ar barjeru pie katras privilēģiju robežas, ibpb-vmexit tikai viesa un resursdatora pārejām, microcode plašākai IBPB versijai un off. Katra no tām sedz citu vektoru kopu. Tāpēc atbilde uz jautājumu, vai konkrēta mašīna ir aizsargāta, līdz šim prasīja zināt gan procesora paaudzi, gan mikrokoda versiju, gan izvēlēto vērtību.

Kas mainās Zen 6 procesoros

Petkova ielāps neizslēdz aizsardzību pēc lietotāja izvēles. Tas nolasa procesora pazīmi un secina, ka SafeRET uz šīs aparatūras vairs nav vajadzīgs. Kodols pārtrauc likt atgriešanās secību un failā /sys/devices/system/cpu/vulnerabilities/spec_rstack_overflow ziņo jaunu aizsardzības aprakstu.

Zen 6 BTB aizsardzība izolē kontekstus vienu no otra, tāpēc SafeRET tur kļūst lieks. Atvērti paliek user/user un guest/guest vektori, kurus sedz Spectre v2 iestatījums ar IBPB pie konteksta pārslēgšanas.

Borislavs Petkovs ielāpa aprakstā

Divi uzbrukuma vektori paliek atvērti

Aparatūras izolācija strādā starp privilēģiju līmeņiem. Tā nešķir divus procesus vienā un tajā pašā līmenī. Ja divi lietotāja procesi dala vienu kodolu, viens joprojām var mēģināt sagatavot zaru prognozētāju otram. Tas pats attiecas uz divām virtuālajām mašīnām uz viena resursdatora.

Šo daļu sedz cits mehānisms. IBPB jeb Indirect Branch Prediction Barrier iztukšo prognozētāja stāvokli pie konteksta pārslēgšanas. To ieslēdz Spectre v2 iestatījums, ne SRSO parametrs. Tās cena ir atkarīga no tā, cik bieži sistēma pārslēdz kontekstus. Slodzei ar daudziem īsiem procesiem šāda barjera maksā vairāk nekā SafeRET.

Praktiski tas nozīmē, ka Zen 6 mašīnās administratoram jāskatās uz citu failu nekā līdz šim. SRSO rinda vairs nestāsta visu stāstu. Atbilde uz jautājumu par blakus esošu procesu tagad atrodas Spectre v2 iestatījumā.

Mēnesi iepriekš SafeRET nācās labot piecos kodolos

Ielāps pienāk brīdī, kad SafeRET tikko izrādījās trauslāks, nekā domāts. 7. augustā iznāca pieci LTS kodoli: 5.10.264, 5.15.215, 6.1.182, 6.6.150 un 6.12.102. Visi nesa vienu un to pašu labojumu SafeRET secībai. Ja pārtraukums pienāca šīs secības vidū, reģistru stāvoklis palika tāds, kas spekulatīvai izpildei ļāva izsniegt kodola datus. Labojums pievieno LFENCE un reģistru sakārtošanas soli. Pie tā strādāja Petkovs, Deivids Kaplans un Venkuans Vangs.

Pirmie mēģinājumi labojumu pārnest uz 5.10 un 5.15 zariem tajā pašā dienā tika atsaukti. Trīs gadus vecs kods, kas ar nodomu liek divām funkcijām sakrist BTB ierakstos, nav tas, ko patīkami labot steigā. Zen 6 aparatūras izolācija šo koda gabalu jaunajos procesoros vienkārši apiet.

Kad tas nonāks līdz lietotājiem

Ielāps šobrīd atrodas tip koka zarā x86/bugs. Parastais ceļš no turienes ir nākamais apvienošanas logs, tas ir, Linux 7.4. Pastāv iespēja, ka to paņem kā labojumu vēl 7.3 ciklā, kura stabilais laidiens gaidāms oktobra otrajā pusē.

Aparatūras puse jau ir tirgū. Zen 6 datu centra paaudzi EPYC Venice AMD laida klajā 23. jūlijā, darbvirsmas Olympic Ridge gaidāma 2027. gada pirmajā pusē. Venice serveri tātad šobrīd darbojas ar kodolu, kas tiem uzliek SafeRET secību bez vajadzības. Petkovs pats par pārējām Zen 6 drošības izmaiņām ielāpā neraksta. AMD dokumentācijā par BTB konteksta izolāciju ārpus šīs vienas rindkopas nav nekā.

Pārbaudīt savu mašīnu var vienā rindā. Komanda grep . /sys/devices/system/cpu/vulnerabilities/* izmet visu sarakstu. SRSO stāvokli rāda faila spec_rstack_overflow saturs. Procesora saimi izdod lscpu lauks CPU family.

Kodola dokumentācija starp ievainojamajām saimēm uzskaita tikai 0x17 un 0x19, tāpēc Zen 5 sistēmās tas pats fails jau tagad rāda Not affected.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie