áá¬áá»á®ážáá®ážáá¬ážááá¹áááá¯ááºááŸáá·áº áááºáá®ááá¯ážáá®ážáá¬ážááá¹áááá¯ááºááá¯á·á០áá¯áá±áá®áá áºá á¯ááẠIntel ááŸáá·áº AMD áááá¯áááºáá¬áá»á¬ážá microarchitectural structures áá»á¬ážááᯠá á¬ááœááºá á¬áááºážáááŸááá±á¬ CPU á áœááºážáááºáá»á¬ážááᯠááŒá±á¬ááºážááŒááºá¡ááºáá»ááºáá®áá¬áá¯ááºá ááºááœáẠááœá±á·ááŸááá²á·áá±á¬ ááá¯ááºááá¯ááºááŸá¯áá¯á¶á á¶áá áºááᯠáááºááŒáá²á·áááºá á¡ááá¯ááŒá¯áá¬ážáá±á¬ ááá¯ááºááá¯ááºááŸá¯áááºážáááºážááœáẠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááŸááºážááá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž á á¯áá±á¬ááºážáá¬ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááŒááºáááºááá°ááẠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áááá¯áááºáá¬áá»á¬ážááœáẠá¡áááºá¡ááẠmicro-op cache ááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž áá«áááºáááºá
ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááẠáááºááœááºáá»ááºáá»á¬ážá¡ááœááºá áááá¯áááºáá¬ááẠááááºááœááºáá»ááºááŸá¯áá»á¬ážááᯠááŒá®ážá¡á±á¬ááºáá á±á¬áá·áºáá² ááŸááºážááá¯ááºááœáẠááœáŸááºááŒá¬ážáá»ááºá¡áá»áá¯á·ááᯠá áááºáá¯ááºáá±á¬ááºááŒá®áž ááá·áºááŸááºážáá»ááºááẠááá¬ážáá»áŸáááŸá¯áááŸááᯠáá¯á¶ážááŒááºáá«áá áááºážááẠáá¯ááºáá±á¬ááºáá»ááºááᯠáá°áá¡ááŒá±á¡áá±ááá¯á· ááŒááºááŒá±á¬ááºážáá±ážáááºá ááá¯á·áá±á¬áº áá¬áá¡ááœááºáž áá¯ááºáá±á¬ááºáá²á·áá±á¬ áá±áá¬á ááŸááºážááá¬ážáá±á¬ ááœááºáá»ááºááŸá¯ááᯠáá¯á¶ážááŒááºááá¯ááºááá·áº á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáááºááŸáºáá áºáá¯ááœáẠááááºážáááºážáá¬ážáááºá
áááºážáááºážá¡áá áºááẠSpectre v1 ááá¯ááºááá¯ááºááŸá¯ááᯠáááááá¬áᬠááá¯ááá¯áá±á¬ááºážááœááºá á±ááŒá®áž ááá¯ááºááá¯ááºááŸá¯ááᯠááŸá¬ááœá±ááẠáááºáá²á á±ááŒá®áž ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááŸááºážááá¯ááºáá±á¬ááºááŒááºážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬áá±á¬ á¡á¬ážáááºážáá»ááºáá»á¬ážááᯠááááºááá¯á·ááẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº áá±ážáá»ááºáááºááá¯ááºááá¯ááºááŸá¯áá»á¬ážááᯠáá¬ážáá®ážááẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº áááºááŸáá¡áá¯á¶ážááŒá¯ááŸá¯áááºážáááºážáá»á¬ážááŒáá·áº ááááºááá¯á·áá¬ážááŒááºážáááŸáááŒá±á¬ááºáž ááŸááºáá¬ážááá«áááºá LFENCE ááœáŸááºááŒá¬ážáá»ááºá ááŸááºážááá¯ááºáá±á¬ááºááŸá¯á áá±á¬ááºáá¯á¶ážá¡ááá·áºáá»á¬ážááœáẠáá±á«ááºááŒá¬ážááŸá¯ááᯠáá¬ážáá®ážáá±ážáá±á¬áºáááºáž á¡áá±ážá á¬ážáááá¯áá¬ááá¯ááºáᬠá¡áá±á¬ááºá¡áŠáá»á¬ážááŸáá áºááá·áº ááá¯á ááá·áºááŸá¯á០áá¬ááœááºáá±ážáá«áááºá)
á¡ááá¯áá«áááºážáááºážááẠIntel Skylake ááŸáá·áº AMD Zen á á®ážáá®ážáá»á¬ážá¡áá«á¡ááẠ2011 áá¯ááŸá áºááááºážá ááœááºááŸááá²á·áá±á¬ Intel ááŸáá·áº AMD áááá¯áááºáá¬áá±á¬áºáááºáá»á¬ážááᯠá¡áá»áá¯ážáááºáá±á¬ááºá á±áááºá áá±ááºáá® CPU áá»á¬ážááẠááŸá¯ááºááœá±ážáá±á¬ áááá¯áááºáá¬ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááá¯ážááŸááºážáá±á¬ RISC áá²á·ááá¯á·áá±á¬ á¡áá±ážá á¬ážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá Ạáá»áá¯ážáá»ááºááŒá®áž áá®ážááŒá¬áž cache ááœáẠááááºážáááºážáá¬ážáááºá á€áááºááŸáºááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº ááŒáá·áºáá¬ážáá±á¬á¡ááá·áº áááºááŸáºáá»á¬ážááŸáá·áº ááœá²ááŒá¬ážáááºá ááá¯ááºááá¯ááºáá¯á¶ážá áœá²áááááá·áºá¡ááŒáẠCISC ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠRISC á¡áá±ážá á¬ážááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááŒá Ạáá¯ááºáá¯ááºáá¯ááºááŒááºážá ááááºáá»á¬ážááᯠá¡ááŒááºáááºáá±á¬ááºááá¯ááºá á±áááºá¡ááœáẠááá¯ááºááá¯ááºáááºáá±á¬ááºááŸá¯ááŒá¬ážáá¶á¡ááŒá Ạáá¯ááºáá±á¬ááºáááºá ááá¯á·áá±á¬áºáááºážá áá¯áá±áá®áá»á¬ážááẠáááºááŸáºáááºáá±á¬ááºááŒááºážááá¯ááºáᬠáááááá¹ááá»á¬ážááᯠáááºáá®ážáááºááŸáá·áº á¡áá»áá¯á·áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áá¯ááºáá±á¬ááºáá»áááºá¡ááœááºáž ááœá²ááŒá¬ážááŸá¯áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážááŒáá·áº micro-operation cache á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠá¡áá²ááŒááºááẠááœáá·áºááŒá¯ááá·áºá¡áá«ááœáẠááŒá áºáá±á«áºáá¬ááá·áº á¡ááŒá±á¡áá±áá»á¬ážááᯠáááºáá®ážááẠáááºážáááºážááᯠáá¯áá±áá®áá»á¬ážá ááŸá¬ááœá±ááœá±á·ááŸááá²á·áááºá
Intel áááá¯áááºáá¬áá»á¬ážááŸá micro-operation cache ááᯠCPU threads (Hyper-Threading) ááŸáá·áº áááºá ááºááŒá®áž AMD Zen áááá¯áááºáá¬áá»á¬ážá áá»áŸáá±áá¬ážáá±á¬ cache ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáá¬á áááºážááẠexecution thread áá áºáá¯á¡ááœááºážáá¬áá SMT ááŸá ááá°áá®áá±á¬ threads áá»á¬ážááŒá¬ážááœááºáááºáž data ááá¯á ááá·áºááŸá¯á¡ááœáẠá¡ááŒá±á¡áá±áá»á¬ážááᯠáááºáá®ážáá±ážáá«áááºá (ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬ logical CPU cores áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáá»á¬ážááŒá¬ážááœáẠáá±áá¬áá±á«ááºááŒá¬ážááŸá¯ ááŒá áºááá¯ááºáááº)á
áá¯áá±áá®áá»á¬ážááẠmicro-operation cache ááŸáá·áº attack scenarios á¡áá»á¬ážá¡ááŒá¬ážááœáẠáá»áŸáá¯á·ááŸááºáá±áá¬áá¯ááºááœáŸáá·áºááŸá¯áááºážááŒá±á¬ááºážáá»á¬ážáááºáá®ážáááºááŸáá·áº áá¯ááºáááºážá ááºáá áºáá¯á¡ááœááºáž áá»áŸáá¯á·ááŸááºá¡áá»ááºá¡áááºáá»á¬ážáá±á«ááºááŒá¬ážá á±ááẠá¡á¬ážáááºážáá»ááºááŸááá±á¬áá¯ááºááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá¡á¬áž ááœáá·áºááŒá¯ááá·áº micro-operation cache ááŸáá·áº attack scenarios á¡áá»á¬ážá¡ááŒá¬ážááᯠáá±á¬ááºááŸááºážáááºá¡ááœáẠá¡ááŒá±áá¶áááºážáááºážááᯠá¡ááá¯ááŒá¯áá²á·ááẠ(á¥ááá¬á áá¯ááºáá±á¬ááºááá·áºá¡áá« áá¯ááºáááºážá ááºáá±áá¬áá±á«ááºááŒá¬ážá á±áááºá JIT áá«áá±á¬ á¡ááºáá»ááºáá»á¬ážááŸá ááŒááºááá¯ááºááŸáá·áº á¡áá¯á¡áá±á¬ááºá ááºáá»á¬ážááœááº) ááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá±áá¬ááŸá kernel ááŸáá·áº áá¯ááºáááºážá ááºáá»á¬ážá¡ááŒá¬ážá
Micro-operation cache ááᯠá¡áá¯á¶ážááŒá¯á Spectre ááá¯ááºááá¯ááºááŸá¯á áá°ááœá²áá áºáá»áá¯ážááᯠá á¯á ááºážáá¬ááœáẠáá¯áá±áá®áá»á¬ážááẠáá°áá®áá±á¬ááááºá á¬á¡ááœááºáž áá±á«ááºááŒá¬ážááŸá¯áá áºáá¯á¡á¬áž á á¯á ááºážáá¬ááœáẠá¡ááŸá¬ážá¡ááœááºážááŸá¯ááºáž 965.59% ááŸáá·áº 0.22 Kbps ááŒáá·áº á áœááºážáá±á¬ááºáááºááᯠ785.56 Kbps áááŸáá¡á±á¬ááºááŒááºááá¯ááºáá²á·áááºá space ááŸáá·áº privilege á¡ááá·áºá ááá°áá®áá±á¬á¡ááœáá·áºá¡áá±ážá¡ááá·áºáá»á¬áž (kernel ááŸáá·áº userspace á¡ááŒá¬áž) ááœáẠáá±á«ááºááŒá¬ážááŸá¯áá áºáá¯ááŸáá·áºá¡áá° á áœááºážáá±á¬ááºáááºááẠ85.2 Kbps ááŸáá·áº error correction áá±á«ááºážááá·áºáá¬ážááŒá®áž 110.96 Kbps ááŸáá·áº error rate 4% ááŸááááºá AMD Zen áááá¯áááºáá¬áá»á¬ážááᯠááá¯ááºááá¯ááºáá¬ááœáẠááá°áá®áá±á¬ logical CPU cores áá»á¬ážá¡ááŒá¬áž áá±á«ááºááŒá¬ážááŸá¯ááᯠáááºáá®ážáá±á¬á¡áá«á á áœááºážáá±á¬ááºáááºááŸá¬ 250 Kbps ááŸáá·áº error rate 5.59% ááŸáá·áº error correction 168.58 Kbps ááá¯á·ááŒá áºáááºá ááá¹áááẠSpectre v1 áááºážáááºážááŸáá·áº ááŸáá¯ááºážááŸááºáá«áá ááá¯ááºááá¯ááºááŸá¯á¡áá áºááẠá.á á ááá¯ááŒááºáááºá
Micro-op cache ááá¯ááºááá¯ááºááŸá¯ááᯠáá¬ááœááºáááºá¡ááœáẠáááºááẠSpectre ááá¯ááºááá¯ááºááŸá¯áá¬ááœááºááŸá¯ááᯠááœáá·áºáá¬ážáááºááẠá áœááºážáá±á¬ááºáááºááᯠááá¯ááá¯áá»áŸá±á¬á·áá»áá±ážááá·áº á¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááá¯á¡ááºáááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºááááºá á¡áá±á¬ááºážááœááºáá¯á¶ážáá±á¬ á¡áá±ážá¡áá°áá áºáá¯á¡áá±ááŒáá·áºá áááºááŸáºááᯠááááºááŒááºážááá¯ááºáá²á ááœá²ááœá²áá»ááºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº ááá¯ááºááá¯ááºááŸá¯áá»á¬ážá¡ááœáẠáá¯á¶ááŸááºááŒá áºáá±á¬ áááºááŸáºááŒááºáááºáá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºááŒááºážá¡ááá·áºááœáẠá¡ááá¯ááŒá¯áá¬ážáááºá
Spectre ááá¯ááºááá¯ááºááŸá¯áá»á¬ážááœááºáá²á·ááá¯á·áááºá kernel ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ áá¯ááºáááºážá
ááºáá»á¬ážá០áá±á«ááºááŒá¬ážááŸá¯ááᯠá
á¯á
ááºážááŒááºážááẠáá¬ážáá±á¬ááºáá¯ááºáááºážá
ááºáá»á¬ážá áá±ážáááºááŸá á¡áá»áá¯á·áá±á¬ commands (gadgets) ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºááŒá®áž ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááŸááºážáááŒá®áž áá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááºá áááºááŸá¬ážááá·áº Linux kernel ááœáẠá¡áá¬ážáá° gadgets 100 ááá·áºááᯠááœá±á·ááŸááá¬ážááŒá®ážááŒá
áºáá±á¬áºáááºážá áááºážááá¯á·ááá»áá¯ážáááºá¡ááœáẠááŒá±ááŸááºážáááºážáá»á¬ážááᯠá¡áá«á¡á¬ážáá»á±á¬áºá
áœá¬ ááœá±á·ááá«áááºá á¥ááá¬á kernel á¡ááœááºážááŸá á¡áá°ážáá®ááá¯ááºážáá¯ááºáá¬ážáá±á¬ BPF áááá¯ááááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážááŸáá·áº áááºááá¯ááºáá«áááºá
source: opennet.ru