Forskare har upptäckt säkerhetshål i två populära Risc V-kärnor från kinesiska Alibabas dotterbolag T Head. Vi berättar hur ”Ghostwrite” fungerar och hur den upptäcktes. Och så pratar vi med Risc V-experten Olof Kindgren.
Efter en attack på bara några mikrosekunder kan ett vanligt användarkonto läsa och skriva till vilken minnesplats som helst, och styra periferienheter som nätverkskort, hårddiskar och grafikkort.
Sårbarheten har namnet Ghostwrite och finns i två populära Risc V-kärnor: XuanTie C910 och C920 från kinesiska Alibabas dotterbolag T Head.
Kärnorna är integrerade i minst två processorer som används i minst ett halvdussin plattformar – se faktaruta nedan.
Alibaba använder en av dem i sitt eget moln och en i en IoT-krets. Samma processor finns i det franska molnet Scaleway. T-Head och Scaleway informerades om Ghostwrite i februari respektive april.
Scaleway undanröjde sårbarheten den 6 juni och fortsätter att erbjuda C910-processorn i sitt moln. Elektroniktidningen har bett Alibaba om en kommentar om statusen på dess molninstanser med processorn.
Som gratiskärna och en av de snabbaste Risc V-kärnorna i sin klass, har C910 blivit populär. Beagleboard, Milk-V och Sipeed har kortdatorer på C910-processorer och den sitter även i världens första Risc V-laptop.
Processorns inbyggda säkerhet ger inget skydd mot Ghostwrite. Varken Docker-containerisering eller sandboxing stoppar heller attacken. Det enda sättet är att stänga av cpu:ns vektoroperationer, som sårbarheten utnyttjar.
Forskarteamet sitter vid CISPA Helmholtz Center för informationssäkerhet. De upptäckte även en annan attack, som låser två andra Xuantie-cpu:er, C906 och C908.
Sårbarheten upptäcktes med hjälp av forskarnas eget verktyg Riscvuzz. Det användes för att utforska hur olika implementationer av samma Risc V-arkitektur svarade på samma slumpmässigt genererade programkod.
Teorin var att om en av dem svarade annorlunda var det ett möjligt tecken på en sårbarhet.
Det stämde. Forskarna upptäckte att C910 exekverade en felaktigt formaterad instruktion, istället för att vägra, som de andra.
De undersökte instruktionen och gjorde den fantastiska upptäckten att den direkt kunde skriva till hela det fysiska minnet. Program använder normalt virtuella adresser som automatiskt omdirigeras till isolerade öar i det fysiska minnet.
Som bonus ger åtkomsten till minnet även full kontroll över de periferienheter som kommunicerar via minnet.
Här (länk) berättar forskarna utförligt om attacken.
Elektroniktidningen frågar sin Risc V-expert Olof Kindgren om sårbarheten möjligen kan vara medvetet planterad?
Det tror han inte. Den är i så fall dåligt maskerad.
![]() |
Olof Kindgren |
– Jag hade nog förutsatt att en planerad sårbarhet skulle vara mycket bättre dold.
Han berättar som jämförelse historen om Matthew Hicks kondensator.
– Det är min absoluta favorit när det gäller medvetna sårbarheter i chip!
– En forskare som heter Matthew Hicks lade för ett antal år sedan in en enda extra kondensator i en OpenRISC-processor som var kopplad mellan den minnesbit som styr om man är superanvändare (root) och den minnesbit som indikerar om man utför en division med noll.
– Vid normalt användande händer ingenting. Division med noll är ganska ovanligt. Men! Genom att skriva mjukvarukod som snabbt tvingar fram många divisioner med noll under kort tid så laddades kondensatorn upp tills den spillde över och satte superuserbiten, vilket gav användaren rootaccess.
– Enkelt, genialt och skulle gå att göra under själva tillverkningsprocessen, alltså efter att kunden som har gjort kretsdesignen lämnat ifrån sig underlaget till chipfabriken.
Vilka konsekvenser får Ghostwrite i Risc V-världen?
– Många av de mest populära hobbyistprodukterna som BeagleV-ahead, Lichees laptops, bärbara spelkonsoller och SBC:er, flera Milk-V-produkter et cetera använder C910. Så det handlar om ganska många chip som faktiskt skeppas i konsumentprodukter.
– Så för RISC-V-ekosystemet är det kännbart även om det kanske inte handlar om superstora volymer i absoluta tal.
Vad gäller molnanvändare är situationen oklar. C910 stöder inte den slutliga versionen 1.0 av vektortillägget, utan en inkompatibel version 0.7.1. Det betyder att den som kör standard-Linux på en C910-processor redan har vektorstödet avstängt och inte är sårbar.
Så eventuella problem finns för de som kör skräddarsydd mjukvara som utnyttjar vektorenheten.
– För dem blir det nog mer trist.
– Det kan ju också vara så att T-Head tillhandahåller egna varianter av Linux och GCC som stöder deras vektorenhet och i så fall så är det kanske betydligt fler användare det handlar om.
Den öppna versionen av C910 finns här (länk) om du liksom Olof Kindgren är nyfiken på hur länge det kommer att dröja innan sårbarheten är avlägsnad.
|