Wat is MTE (Memory Tagging Extension)?

Een uitbreiding van Arm, toegevoegd in Armv8.5-A. Elke 16 bytes geheugen krijgt een tag van 4 bits, ook in de hoge bits van de pointer wordt een tag van 4 bits gezet, en de CPU controleert bij elke toegang of beide overeenkomen. Gebruik van geheugen nadat het is vrijgegeven en toegang buiten het bereik kunnen met weinig overhead op probabilistische wijze worden gevonden.

Japanse benaming: MTE(メモリタギング拡張)

“MTE (Memory Tagging Extension)” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Hardwarebeveiliging: nieuwste ontwikkelingen.

Vakgebied: Hardwarebeveiliging: nieuwste ontwikkelingen

Hoe tags worden vergeleken

Bij het toewijzen van geheugen stelt de allocator voor elke 16 bytes van het gebied de tag aan de geheugenkant in en geeft een pointer terug met dezelfde waarde in de hoge bits (het deel dat niet voor adresvertaling wordt gebruikt). Bij elke load en store vergelijkt de CPU de tag van de pointer met de tag van het benaderde geheugen en behandelt een afwijking als fout. Als de tags bij het vrijgeven van een gebied worden veranderd, kan toegang tot het vrijgegeven gebied via een oude pointer worden gedetecteerd. De tags aan de geheugenkant worden apart van de gegevens opgeslagen.

Probabilistische detectie

Omdat een tag 4 bits heeft, zijn er maar 16 waarden, en de kans dat een willekeurig gekozen tag toevallig overeenkomt, is 1/16. Een enkele foute toegang wordt dus met een kans van ongeveer 6% gemist en in ongeveer 94% van de gevallen gevonden. Met strategieën bij het toewijzen, zoals naburige gebieden altijd verschillende tags geven, kan een overloop naar een naburig gebied altijd detecteerbaar worden gemaakt. Voor het opslaan van de tags is extra geheugen nodig van ongeveer 4/128 = 3,125% van de capaciteit.

Controlemodi

De synchrone modus geeft bij een afwijking direct een exceptie en laat zien welke instructie de fout veroorzaakte, wat geschikt is voor ontwikkeling en kritieke code, maar iets meer kost. De asynchrone modus registreert de fout en meldt die later, wat minder kost en geschikt is om fouten te verzamelen van veel apparaten in het veld. Afhankelijk van het doel wordt MTE zowel gebruikt voor controles tijdens de ontwikkeling als om aanvallen op uitgeleverde apparaten te bemoeilijken.

Nu oefenen: vragen over MTE (Memory Tagging Extension)

Bij Arm MTE (Memory Tagging Extension) krijgt elke 16 bytes geheugen een tag van 4 bits, wordt ook in de hoge bits van de pointer een tag van 4 bits gezet, en controleert de CPU bij elke toegang of beide overeenkomen. Beschouw de fout waarbij via een oude pointer naar een vrijgegeven gebied toegang tot dat gebied wordt verkregen. Als de nieuwe tag bij het opnieuw toewijzen van het gebied uniform willekeurig uit de 16 mogelijkheden wordt gekozen, hoe groot is dan de kans dat de tags toevallig overeenkomen en de fout wordt gemist?

  1. A1/16 (ongeveer 6,3%)
  2. B1/4 (25%)
  3. C15/16 (ongeveer 93,8%)
Antwoord en toelichting tonen

Antwoord: A. 1/16 (ongeveer 6,3%)

Een tag heeft 4 bits en kan dus 2⁴ = 16 waarden aannemen. Als de nieuwe tag uniform uit de 16 waarden wordt gekozen, is de kans dat die toevallig overeenkomt met de tag van de oude pointer 1/16 = 6,25% (ongeveer 6,3%), en in de overige 15/16 van de gevallen wordt de afwijking gedetecteerd. Zelfs één enkele toegang wordt met een kans van ongeveer 94% ontdekt, dus fouten kunnen worden gevonden terwijl het systeem op veel apparaten draait, en aanvallen worden moeilijker. Als bij het toewijzen naburige gebieden altijd verschillende tags krijgen, wordt een overloop naar een naburig gebied altijd gedetecteerd.

Veelgestelde vragen

Waar wordt MTE gebruikt?

Halverwege de jaren 2020 ondersteunen sommige SoC's voor smartphones het, en besturingssystemen en geheugenallocators schakelen het in voor controles tijdens de ontwikkeling en om aanvallen te bemoeilijken. Zowel ondersteunende hardware als ondersteunende software is nodig.

Houdt MTE aanvallen tegen die geheugenfouten misbruiken?

Het vangt veel fouten af en maakt aanvallen moeilijker, maar tags kunnen toevallig overeenkomen, en het effect neemt af als tagwaarden worden geraden of uitlekken. Omdat de detectie probabilistisch is, wordt het, waar deterministische garanties nodig zijn, gecombineerd met mechanismen zoals CHERI of met geheugenveilige programmeertalen.

Vragen met “MTE (Memory Tagging Extension)” (1)

  1. Bij Arm MTE (Memory Tagging Extension) krijgt elke 16 bytes geheugen een tag van 4 bits, wordt ook in de hoge bits van de pointer een tag van 4 bits gezet, en controleert de CPU bij elke toegang of beide overeenkomen. Beschouw de fout waarbij via een oude pointer naar een vrijgegeven gebied toegang tot dat gebied wordt verkregen. Als de nieuwe tag bij het opnieuw toewijzen van het gebied uniform willekeurig uit de 16 mogelijkheden wordt gekozen, hoe groot is dan de kans dat de tags toevallig overeenkomen en de fout wordt gemist?

Verwante termen

Pointer Arm CCA (Confidential Compute Architecture) CHERI 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