Wat is CHERI?

Afkorting van Capability Hardware Enhanced RISC Instructions. Een uitbreiding van de instructieset die pointers vervangt door capabilities, die naast het adres ook het bereik waarnaar ze mogen wijzen en hun rechten bevatten, zodat toegang buiten het bereik en vervalste pointers in hardware worden tegengehouden. Het onderzoek is gedaan door de Universiteit van Cambridge en SRI International. Arm heeft begin jaren 2020 Morello, een daarop gebaseerde prototypeprocessor, aan onderzoekers beschikbaar gesteld.

Japanse benaming: CHERI

“CHERI” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Hardwarebeveiliging: nieuwste ontwikkelingen.

Vakgebied: Hardwarebeveiliging: nieuwste ontwikkelingen

Wat een capability bevat

Een gewone pointer is alleen een adres, en de hardware heeft geen manier om te controleren waarnaar hij wijst. Een capability van CHERI bevat naast het adres de onder- en bovengrens van het bereik waarnaar ze mag wijzen en rechten zoals lezen, schrijven en uitvoeren. Bij adressen van 64 bits wordt het bereik in gecomprimeerde vorm opgeslagen, zodat de capability in 128 bits past, en daarnaast wordt buiten de gewone geheugeninhoud nog een tagbit bijgehouden. De CPU controleert bij elke load en store het bereik en de rechten en geeft een exceptie als die worden overschreden, zodat fouten zoals een bufferoverloop ter plekke worden gestopt.

Tags die vervalsing voorkomen

De tag wordt alleen gezet wanneer een capability met de juiste instructies wordt gemaakt of uit een bestaande capability wordt afgeleid door het bereik te verkleinen. Als een capability als gewone gegevens wordt overschreven, verdwijnt de tag, en een waarde zonder tag kan niet als pointer worden gebruikt. Bereik en rechten kunnen alleen worden verkleind en nooit worden vergroot, dus een programma kan geen ruimere bevoegdheden maken dan het heeft gekregen. Met deze eigenschap kan één programma ook in kleine compartimenten worden verdeeld, die elk beperkt zijn tot wat ze mogen benaderen (compartimentering).

Uitdagingen voor de invoering

Omdat pointers twee keer zo groot worden, worden geheugengebruik en cache-efficiëntie beïnvloed, en software die pointers als gehele getallen behandelt, moet worden aangepast. Onderzoek heeft laten zien dat veel programma's in C en C++ met kleine wijzigingen draaien. Halverwege de jaren 2020 gaat het vooral om prototypes voor onderzoek en om implementaties voor sommige typen microcontroller; in de CPU's van gewone pc's en smartphones zit CHERI niet.

Nu oefenen: vragen over CHERI

Welke uitspraak beschrijft de capabilities juist die worden gebruikt in de uitbreiding van de instructieset die CHERI heet?

  1. APointerwaarden worden met een sleutel in de CPU versleuteld voordat ze in het geheugen worden gezet en bij elk gebruik ontsleuteld, zodat andere programma's en het OS de pointerwaarden niet kunnen lezen
  2. BDe CPU controleert de digitale handtekening van het uitvoerbare bestand van het programma telkens wanneer hij één instructie uitvoert, en voert geen ongetekende instructies uit
  3. CEen pointer krijgt het bereik waartoe hij toegang mag hebben en zijn rechten mee, en een tag van 1 bit die software in het geheugen niet kan herschrijven, onderscheidt of hij op legitieme wijze is gemaakt
Antwoord en toelichting tonen

Antwoord: C. Een pointer krijgt het bereik waartoe hij toegang mag hebben en zijn rechten mee, en een tag van 1 bit die software in het geheugen niet kan herschrijven, onderscheidt of hij op legitieme wijze is gemaakt

CHERI vervangt pointers die alleen een adres zijn door capabilities die het adres, de onder- en bovengrens van het bereik waarnaar ze mogen wijzen en rechten zoals lezen, schrijven en uitvoeren bundelen (bij adressen van 64 bits worden ze gecomprimeerd tot 128 bits, met daarnaast een tag van 1 bit). De CPU controleert bij elke toegang het bereik en de rechten, zodat fouten in de geheugenveiligheid, zoals lezen of schrijven buiten een array, in hardware kunnen worden gestopt. De tag wordt alleen gezet wanneer een capability met de juiste instructies wordt gemaakt, en verdwijnt wanneer die als gewone gegevens wordt overschreven, dus pointers kunnen niet worden vervalst. Het onderzoek wordt geleid door onder meer de Universiteit van Cambridge, en Arm heeft begin jaren 2020 Morello, een prototypeprocessor met evaluatiebord die erop is gebaseerd, aan onderzoekers beschikbaar gesteld.

Veelgestelde vragen

Wat is het verschil tussen CHERI en MTE (Memory Tagging Extension)?

MTE vergelijkt tags van 4 bits die aan geheugen en pointers zijn gekoppeld en vindt fouten op probabilistische wijze. CHERI geeft elke pointer een eigen bereik en eigen rechten en stopt toegang buiten het bereik deterministisch. MTE is gemakkelijker in bestaande software in te voeren, terwijl CHERI sterkere garanties geeft ten koste van grotere wijzigingen in de instructieset en de software.

Verdwijnen met CHERI alle problemen met geheugenveiligheid?

Het voorkomt toegang buiten het bereik en het vervalsen van pointers, maar om gebruik van geheugen nadat het is vrijgegeven te voorkomen, is extra werk in de allocator nodig. Ook logische fouten en misbruik van rechtmatig verleende rechten kan het niet voorkomen. Het wordt samen met andere maatregelen gebruikt.

“CHERI” in de toelichting

Vragen met “CHERI” (1)

  1. Welke uitspraak beschrijft de capabilities juist die worden gebruikt in de uitbreiding van de instructieset die CHERI heet?

Verwante termen

Pointer Array Arm CCA (Confidential Compute Architecture) Confidential computing Control-flow-integriteit (control-flow integrity) DICE (Device Identifier Composition Engine) FIPS 140-3 Getaltheoretische transformatie HBOM (hardware bill of materials) Laserfoutinjectie (laser fault injection)

Naar de woordenlijst