Forskere fra ETH Zürich har utviklet et uklart testsystem kalt Cascade, rettet mot å identifisere feil og sårbarheter i prosessorer basert på RISC-V-arkitekturen. Verktøyene har allerede identifisert 37 feil i prosessorer, hvorav 29 ble klassifisert som tidligere ukjente sårbarheter.
Cascade-utviklere prøvde å ta hensyn til manglene ved tidligere eksisterende prosessorfuzzing-testsystemer, som var begrenset til å utføre bare korte deler av koden, som dekker en liten del av instruksjonssettet og et begrenset antall kombinasjoner av kommandoutførelse. Cascade er rettet mot å generere store og komplekse programmer som spenner over ikke-trivielle instruksjonsflyter og resulterer i atypiske CPU-tilstander. I Cascade, ved å bruke den eksisterende referansemodellen til RISC-V-instruksjonssettet (RISC-V ISA), dannes initialt store randomiserte og sammenkoblede utførelsesstrømmer (kontrollflyt) og datastrømmer.
Utførelsen og dataflytene i det genererte programmet er tett sammenvevd, så hvis det oppstår en feil i dataflyten under utførelse, vil den fosse inn i den videre fremdriften av utførelse og vil mest sannsynlig endre utførelsesflyten, noe som vil føre til ufullstendig fullføring av programmet. For å identifisere problematiske instruksjoner i uferdige programmer, beskjærer Cascade automatisk det kjørende programmet over tid til det finner minimumssettet med instruksjoner som forårsaker feilen. Denne tilnærmingen er mye enklere å implementere og raskere enn klassiske feildeteksjonsmetoder basert på avstemmingstilstander etter hver utførte instruksjon etter faktisk utførelse på CPU og etter utførelse ved bruk av en referansemodell.
Ved hjelp av Cascade ble fem prosessorer basert på RISC-V-arkitekturen testet – Kronos, PicoRV32, VexRiscv, CVA6 og BOOM, der totalt 37 feil ble identifisert. De fleste feilene resulterte i sikkerhetsproblemer, for eksempel forårsaket noen problemer tjenestenekt eller informasjonslekkasje på grunn av spekulativ utførelse av instruksjoner av en uprivilegert bruker.
- 12 feil førte til et brudd på integriteten til datastrømmen, som kan brukes til å endre resultatet av visse beregninger i en annen brukers kode når angriperen dannet en viss tilstand av mikroarkitektoniske strukturer. For eksempel tillot en dynamisk avrundingsfeil i CPU BOOM en angriper å tvinge offerprosessen til å bruke en annen flytepunktsavrundingsmodus.
- 18 feil førte til informasjonslekkasje, som for eksempel tillot en angriper å få sidekanaltilgang til tilstanden til FPU-flagg og -registre.
- 9 feil gjorde det mulig å avskjære kjøringen, noe som gjorde det mulig for en angriper å påvirke kjøringen av et annet program. For eksempel førte en feil i CVA6-prosessoren til å sette feil flagg som påvirket resultatet av beregninger eller påvisning av overløp, og en feil i VexRiscv-prosessorer under visse forhold førte til feil utførelse av registersammenligningsoperasjoner.
- 9 feil var relatert til generering av falske unntak, som kan brukes av angripere for å omgå isolasjonsmoduser brukt i TEE-miljøer (Trusted Execution Environment). For eksempel førte lesing av noen CSR-registre (Control and Status Register) til et unntak, som tillot angriperen å simulere interaksjon med miljøet.
- 4 feil ble forårsaket av mangel på riktige kontroller og tillot en angriper å omgå sikkerhetsrelaterte kontroller (for eksempel sjekker for FPU-bruk av andre kjerner), feilrepresentere tilgjengelige CPU-funksjoner eller lure analysatorer.
- Tre feil førte til at prosessoren fryste når han utførte visse manipulasjoner på et hvilket som helst rettighetsnivå.
- En feil er klassifisert som muligheten for å bygge inn skjult logikk på chipdesignstadiet. Problemet er tilstede i Yosys-pakken med åpen kildekode, designet for syntese av registeroverføringsnivå (RTL) og brukt i CPU-design og -emulering. Feilen førte til syntesen av feil logikk i FPU-en til CVA6-prosessoren. En ondsinnet utvikler kan bruke dette problemet til å introdusere en skjult feil i et design som bruker Yosys for logisk syntese ved å sende en tilsynelatende uskyldig Register Transfer Layer (RTL) beskrivelse.
- Ikke-sikkerhetsrelaterte feil inkluderer problemer med ytelsestellere i Kronos-, VexRiscv- og BOOM-prosessorer, som fører til forvrengninger ved telleinstruksjoner.
Kilde: opennet.ru