Finns redan andra former av attacker mot SMT, som likt Spectre, går mot själva huvudpunkten med tekniken: vilket för SMT är att dela HW mellan trådar.
Med undantag för Bulldozer-serien (som även den rent tekniskt är en form av SMT) så delar alla SMT implementationer jag känner till ALUs mellan trådar -> ger en side-channel för någon som kan säkerställa att det man vill attackera går på ena CPU-tråden och programmet attacken utförs från går på den andra CPU-kärnan.
Denna rapport beskriver en sådan typ av attack
"Abstract—Simultaneous Multithreading (SMT) architecturesare attractive targets for side-channel enabled attackers, withtheir inherently broader attack surface that exposes more perphysical core microarchitecture components than cross-core at-tacks. In this work, we explore SMT execution engine sharingas a side-channel leakage source"
Tittar man i bilden över Zen i PDF-dokumentet länkat i denna artikel ser man att Zen, precis som Core-serien, har ALUs som "Competitively shared structures" utan någon form av taggning.
Om någon tvivlar kan de provköra PoC för PortSmash. På Zen är numreringen för trådar och processen att låsa frekvensen annorlunda jämfört med på Intel, så man måste fixa till de delarna manuellt i "freq.sh" skriptet för att matcha Zen.
Vidare är mappningen mellan vilka instruktioner som går till vilka pipelines annorlunda i Zen. För den som riktigt vill gräva ner sig finns mappningen här för aktuella x86 CPUer. Men fallet "PORTSMASH_P0156" (se spy.h samt spy.S filerna) råkar i praktiken ha identisk mappning på Zen och Haswell/Broadwell/Skylake.
Och kör man detta på ett Zen-system på två trådar men samma CPU ser man helt klart en signal -> fungerande side-channel.
I praktiken är detta ändå ett icke-problem. Kraven är som i princip alla dessa sårbarheter
den som attackerar måste redan vara inne i ditt system då attack-programmet har rätt specifika krav (dock räcker det att vara "vanlig" användare)
man måste få attack-programmet och programmet som attackeras att köra på samma CPU-kärna. Som "vanlig" användare kan man enkelt låsa attack-programmet på en specifik CPU-tråd, men Windows, Linux och MacOS kommer alla föredra att inte köra något på den andra CPU-tråden om det finns kärnor som är "idle". Som "vanlig" användare kan man bara låsa "sina" program till specifika kärnor -> rätt rejäl barriär (ungefär i nivå med att ta sig i på datorn till att börja med)
i dessa PoC är ju det program som ska attackeras rätt ordentligt tillrättalagt i att man vet exakt när det jobbar med den data man vill stjäla, det kan ibland vara möjligt även i praktiken, men ofta inte
Dessa attacker är ändå ett reellt i fallet där man kör virtuella maskiner på molntjänster där andra användare kan dela HW. Det är normalt sett INTE ett problem på desktop-maskiner eller ens på molntjänster där man enbart nyttjar en tjänst och inte har möjlighet att köra valfritt program på servern.
Har Intel en större attack-yta mot sin SMT implementation? Absolut (p.g.a. av att de helt fritt delar fler saker mellan trådar, Zen har hårdare separation av vissa delade resurser)!
Men SMT lider "by-design" av side-channel problem likt hur "out-of-order" CPUer "by-design" lider av Spectre. Så de som har åskikten att det måste vara 100 % säkert: köp en RPi3 och surfa därifrån. Är en av de få moderna CPU-designer som varken har SMT eller problem med Spectre (men lär garanterat finns hål även i Cortex A53...)
I många användarfall är dessa svagheter ett långt mindre problem jämfört med prestandaförlusten att inte använda teknikerna. I fall där svagheterna är allt för stora finns HW både utan SMT och utan "out-of-order execution". Rätt sak på rätt plats!
Tack, Yohsman! Jag uppskattar verkligen hur du tar dig tid och förklarar grundligt men också pedagogiskt trots att det är väldigt invecklade saker det handlar om. Jag gissar på att du arbetar som lärare på universitet och är lite arbetsskadad?
Jag vet inte om du vare sig har tid eller lust, men jag tror det skulle vara väldigt uppskattat om du kunde skriva något som Swec gärna lyfter upp till förstasidan när det rapporteras om något sånt här. En artikel där du beskriver problemet på ett väldigt förenklat sätt och sedan översätter likt slutet i den här tråden - hur rimligt är det att kreti & pleti drabbas?
Du finns ofta i trådar, ofta när det gäller programmering och procesorarkitekturer och förklarar - men ibland blir det fyra-fem sidor och det är synd om din kunskap skulle gå förlorad känner jag.
/Yoshman-fan
..:: trickeh2k ::..
Windows 11 Pro - Ryzen 7 7800X3D - ASUS TUF B650-PLUS - Kingston FURY Beast DDR5 64GB CL36 - MSI MAG A850GL - MSI RTX 4080 VENTUS 3X OC - Acer Predator XB271HU - ASUS VG248QE - QPAD MK-85 (MX-Brown)/Logitech G PRO Wireless - Samsung 960 EVO 250GB, Samsung EVO 860 500GB, SanDisk Ultra II 480GB, Crucial MX500 1TB, Kingston KC3000 2TB - Steelseries Arctic 5 - Cooler Master Masterbox TD500 Mesh V2