Er is een kwetsbaarheid ontdekt in de Linux-kernel (CVE-2021-33624) die de eBPF-subsysteem gebruikt om de bescherming tegen Spectre-kwetsbaarheden te omzeilen, waardoor het mogelijk wordt om de inhoud van het geheugen te bepalen door voorwaarden te creƫren voor speculatieve uitvoering van bepaalde operaties. Voor een Spectre-aanval is het noodzakelijk dat in bevoorrechte code een bepaalde reeks commando's aanwezig is die leidt tot speculatieve uitvoering van instructies. Door te manipuleren met de verzonden BPF-programma's kan men dergelijke instructies in eBPF genereren en lekkages van de inhoud van de kernel en willekeurige gebieden van fysiek geheugen via zijkanalen teweegbrengen.
De kwetsbaarheid wordt veroorzaakt door tekortkomingen in de verifier die gebruikt wordt om fouten en onaanvaardbare activiteiten in BPF-programma's te identificeren. De verifier doorloopt mogelijke paden van code-uitvoering, maar slaat takmogelijkheden over die semantisch onaanvaardbaar zijn volgens de instructiesetarchitectuur. Tijdens de uitvoering van een BPF-programma kunnen dergelijke takmogelijkheden, die door de verifier niet zijn overwogen, verkeerd worden voorspeld door de processor en in speculatieve modus worden uitgevoerd. Bijvoorbeeld, bij de analyse van een 'load'-operatie berekent de verifier dat de instructie een register gebruikt met een adres waarvan de waarde altijd binnen de gespecificeerde grenzen ligt, maar een aanvaller kan omstandigheden creƫren waarin de processor probeert om speculatief een operatie uit te voeren met een adres dat niet voldoet aan de controlevoorwaarden.
Het probleem doet zich voor vanaf de release van kernel 4.15 en is verholpen in de vorm van patches (1, 2, 3, 4). In de distributies blijft de kwetsbaarheid momenteel onopgelost (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).
Verder kan de opmerking over de impact op de prestaties van de middelen ter bescherming tegen Spectre-kwetsbaarheden worden toegevoegd. In de opmerking zijn de resultaten van de optimalisatie van de debugger rr (Record and Replay) samengevoegd, die ooit in Mozilla is ontwikkeld om moeilijk reproduceerbare fouten in Firefox te debuggen. Het cachen van systeemoproepen die worden gebruikt om de aanwezigheid van mappen te controleren, heeft de uitvoering van de operatie 'rr sources' voor een testproject kunnen verkorten van 3 minuten en 19 seconden tot 36 seconden.
De auteur van de optimalisatie besloot de prestaties te controleren na het uitschakelen van de Spectre-beveiliging. Na het opstarten van het systeem met de parameter "mitigations=off" was de uitvoeringstijd van "rr sources" zonder optimalisatie 2 minuten en 5 seconden (1,6 keer sneller), en met optimalisatie 33 seconden (9% sneller). Het is interessant dat het uitschakelen van de Spectre-beveiliging niet alleen de uitvoeringstijd van de code op kernel niveau met 1,4 keer verkortte (van 2m9s naar 1m32s), maar ook de uitvoeringstijd in de gebruikersruimte met de helft verminderde (van 1m9s naar 0m33s), vermoedelijk door de verminderde efficiƫntie van de CPU-cache en TLB-resets bij ingeschakelde Spectre-beveiliging.
Bron: opennet.ru
