Ang Retbleed usa ka bag-ong pag-atake sa speculative execution mechanism sa Intel ug AMD CPUs

Usa ka grupo sa mga tigdukiduki gikan sa ETH Zurich nakaila sa usa ka bag-ong pag-atake sa mekanismo sa espekulatibo nga pagpatuman sa dili direkta nga mga transisyon sa CPU, nga nagpaposible sa pagkuha sa impormasyon gikan sa kernel memory o pag-organisar sa usa ka pag-atake sa host system gikan sa mga virtual machine. Ang mga kahuyangan gi-codenamed Retbleed (CVE-2022-29900, CVE-2022-29901) ug duol sa kinaiyahan sa mga pag-atake sa Specter-v2. Ang kalainan naggikan sa organisasyon sa espekulatibo nga pagpatuman sa arbitraryong kodigo sa pagproseso sa "ret" (pagbalik) nga panudlo, nga nagkuha sa adres nga molukso gikan sa stack, imbes nga usa ka dili direkta nga paglukso gamit ang "jmp" nga panudlo, nga nagkarga sa adres gikan sa memorya o usa ka rehistro sa CPU.

Ang usa ka tig-atake makahimo og mga kondisyon alang sa sayop nga prediksyon sa transisyon ug mag-organisar sa usa ka gipunting, espekulatibo nga pagbalhin ngadto sa usa ka bloke sa code nga wala gihatag sa lohika sa pagpatuman sa programa. Sa katapusan, mahibal-an sa processor nga ang panagna sa sanga dili makatarunganon ug ibalik ang operasyon sa orihinal nga kahimtang niini, apan ang datos nga giproseso sa panahon sa espekulasyon nga pagpatay matapos sa cache ug microarchitectural buffer. Kung ang usa ka sayup nga gipatuman nga bloke maka-access sa memorya, nan ang espekulatibo nga pagpatuman niini magdala sa datos nga mabasa gikan sa memorya nga gideposito sa gipaambit nga cache.

Aron mahibal-an ang nahabilin nga datos sa cache pagkahuman sa mga espekulatibo nga operasyon, ang usa ka tig-atake mahimong mogamit mga teknik sa side-channel aron mahibal-an ang nahabilin nga datos, sama sa pag-analisar sa mga pagbag-o sa mga oras sa pag-access sa naka-cache ug wala’y cache nga datos. Aron gituyo nga makuha ang kasayuran gikan sa mga lugar sa lain nga lebel sa pribilehiyo (pananglitan, gikan sa memorya sa kernel), gigamit ang "mga gadget" - mga han-ay sa mga mando nga naa sa kernel nga angay alang sa espekulatibo nga pagbasa sa datos gikan sa memorya depende sa mga kondisyon sa gawas nga mahimong maimpluwensyahan sa ang tig-atake.

Aron mapanalipdan batok sa klasiko nga mga pag-atake sa klase sa Spectre nga naggamit sa kondisyon ug dili direkta nga mga panudlo sa paglukso, kadaghanan sa mga operating system naggamit sa teknik nga "retpoline", nga gibase sa pag-ilis sa dili direkta nga operasyon sa paglukso sa panudlo nga "ret", diin ang mga processor naggamit usa ka lahi nga stack state prediction unit. .wala naggamit ug branch prediction block. Kung gipaila ang retpoline kaniadtong 2018, gituohan nga ang mga pagmaniobra sa address nga sama sa Specter dili praktikal alang sa speculative branching gamit ang "ret" nga panudlo.

Ang mga tigdukiduki nga nagpalambo sa pamaagi sa pag-atake sa Retbleed nagpakita sa posibilidad sa paghimo sa mga kondisyon sa microarchitectural alang sa pagsugod sa usa ka espekulatibo nga transisyon gamit ang "ret" nga panudlo ug gipatik ang andam nga mga himan alang sa pag-ila sa mga han-ay sa mga panudlo (gadget) nga angay alang sa pagpahimulos sa pagkahuyang sa kernel sa Linux, diin ang ingon nga mga kahimtang nagpakita sa ilang kaugalingon.

Atol sa panukiduki, giandam ang usa ka nagtrabaho nga pagpahimulos nga nagtugot, sa mga sistema nga adunay mga Intel CPU, nga makuha ang arbitraryong datos gikan sa memorya sa kernel gikan sa usa ka dili pribilihiyo nga proseso sa wanang sa gumagamit sa gikusgon nga 219 bytes matag segundo ug 98% nga katukma. Sa mga processor sa AMD, mas taas ang kahusayan sa pagpahimulosβ€”ang leak rate kay 3.9 KB kada segundo. Ingon usa ka praktikal nga pananglitan, gipakita namon kung giunsa ang paggamit sa gisugyot nga pagpahimulos aron mahibal-an ang sulud sa /etc/shadow file. Sa mga sistema nga adunay mga Intel CPU, ang pag-atake aron mahibal-an ang hash sa password sa root user gihimo sa 28 minuto, ug sa mga sistema nga adunay mga AMD CPU - sa 6 minuto.

Ang pag-atake nakumpirma alang sa mga henerasyon 6-8 sa mga Intel processor nga gipagawas sa wala pa ang Q3 2019 (lakip ang Skylake), ug mga processor sa AMD base sa Zen 1, Zen 1+, ug Zen 2 microarchitectures nga gipagawas sa wala pa ang Q2021 3. Sa mas bag-ong mga modelo sa processor sama sa AMD ZenXNUMX ug Intel Alder Lake, ingon man sa mga processor sa ARM, ang problema gibabagan sa kasamtangan nga mga mekanismo sa pagpanalipod. Pananglitan, ang paggamit sa IBRS (Indirect Branch Restricted Speculation) nga mga panudlo makatabang sa pagpanalipod batok sa mga pag-atake.

Usa ka hugpong sa mga pagbag-o ang giandam alang sa Linux kernel ug sa Xen hypervisor, nga makababag sa problema sa software sa mas daan nga mga CPU. Ang gisugyot nga patch alang sa Linux kernel nagbag-o sa 68 nga mga file, nagdugang 1783 nga linya, ug nagtangtang sa 387 nga linya. Ikasubo, ang proteksyon nagdala ngadto sa mahinungdanong mga gasto sa overhead - sa mga teksto nga gihimo sa AMD ug Intel processors, ang pagkunhod sa performance gibanabana gikan sa 14% ngadto sa 39%. Mas maayo nga gamiton ang proteksyon base sa mga instruksyon sa IBRS, nga anaa sa bag-ong mga henerasyon sa Intel CPU ug gisuportahan sugod sa Linux kernel 4.19.

Sa mga processor sa Intel, ang pag-ilis sa address alang sa usa ka espekulatibo nga dili direkta nga paglukso gihimo salamat sa usa ka bahin nga makita kung ang usa ka pag-awas mahitabo pinaagi sa ubos nga utlanan (underflow) sa Return Stack Buffer. Kung mahitabo ang ingon nga mga kahimtang, ang panudlo nga "ret" magsugod sa paggamit sa lohika sa pagpili sa adres parehas sa gigamit alang sa normal nga dili direkta nga paglukso. Labaw sa usa ka libo nga mga lugar ang nakit-an sa Linux kernel nga nagmugna og mga kondisyon alang sa pagsugod sa ingon nga backflow ug ma-access pinaagi sa mga tawag sa sistema.

Sa mga processor sa AMD, ang espekulatibo nga pagpatuman sa "ret" nga instruksyon gihimo nga walay paghisgot sa usa ka stack-specific buffer (Return Address Stack) ug ang branch prediction unit nag-isip sa "ret" nga instruksyon dili isip control return, apan isip usa ka dili direkta nga sanga. , ug, sumala niana, naggamit sa datos alang sa panagna nga dili direkta nga mga transisyon. Ubos niini nga mga kondisyon, halos bisan unsang "ret" nga operasyon nga maabot pinaagi sa usa ka tawag sa sistema mahimong mapahimuslan.

Dugang pa, usa pa nga isyu ang giila usab sa AMD CPUs (CVE-2022-23825, Branch Type Confusion) nga may kalabutan sa pagpatuman sa tinumotumo nga mga sanga - ang mga kondisyon alang sa pagtagna sa sanga mahimong mahitabo bisan kung wala ang gikinahanglan nga mga instruksyon sa sanga, nga nagtugot sa pag-impluwensya sa buffer sa prediksyon sa sanga. walay instruksiyon nga "ret". Kini nga bahin sa kamahinungdanon complicates sa pagpatuman sa pagpanalipod ug nagkinahanglan sa mas aktibo nga pagpanglimpyo sa sanga prediksyon buffer. Ang pagdugang sa hingpit nga proteksyon sa kernel gilauman nga madugangan ang overhead sa 209%.

Source: opennet.ru

Idugang sa usa ka comment