Terug in In augustus 2021 waren de eerste patches van Intel voor”FineIBT”voor de Linux-kernel bedoeld om het beste van hun Control-flow Enforcement Technology (CET) en Control Flow Integrity te combineren om de beveiliging van de kernel op een efficiënte manier te verbeteren.

In het afgelopen jaar zijn de FineIBT-patches bijgewerkt en deze week heeft Intel-engineer Peter Zijlstra de nieuwste FineIBT-patches voor Linux verstuurd. Zijn laatste samenvatting van dit FineIBT-controlestroomintegriteitswerk voor Linux komt neer op:

Implementeer een alternatief CFI-schema dat zowel de fijnmazige aard van kCFI combineert, maar ook ten volle profiteert van de grofkorrelige hardware CFI zoals geleverd door IBT.

Ter contrast:

kCFI is een puur software CFI-schema en vertrouwt op het kunnen lezen van tekst–met name de instructie *vóór* het doelsymbool, en doet de hash-validatie *voor* het uitvoeren van de oproep (anders is de controlestroom al in gevaar).

FineIBT is een hybride software-en hardwareschema; door ervoor te zorgen dat elk vertakkingsdoel begint met een hash-validatie, is het mogelijk om de hash-validatie na de vertakking te plaatsen. Dit heeft verschillende voordelen:

o de (hash)lading wordt vermeden; geen memo; geen RX-vereiste.

o IBT WAIT-FOR-ENDBR-status is een speculatiestop; door de hash-validatie in de onmiddellijke instructie na het vertakkingsdoel te plaatsen, is er een minimaal speculatievenster en is het geheel een levensvatbare verdediging tegen SpectreBHB.

Uiteraard is deze patch afhankelijk van kCFI (upstream), maar daarnaast is hij ook afhankelijk van de padding van de call-depth-tracking-patches (tip/x86/core). Het gebruikt deze opvulling om de hash-validatie te plaatsen terwijl de call-sites worden herschreven om het indirecte doel te wijzigen zodat het 16 bytes voor het oorspronkelijke doel ligt, waardoor deze nieuwe preambule wordt bereikt.

Er is met name geen hardware die call-depth-tracking (Skylake) nodig heeft en IBT (Tigerlake en hoger) ondersteunt.

Deze code bouwt voort op de nieuwste Call Depth Tracking werkt op weg naar mainline Linux (waarschijnlijk 6.2). Zie deze patchreeks voor de laatste discussie over FineIBT–inclusief enige discussie over aanvullende beveiligingsimplicaties om te overwegen. We zullen zien waar dit FineIBT-werk toe leidt en of/wanneer het wordt opgepikt door de hoofdkernel.

Categories: IT Info