En kÀrnsvaghet har identifierats i Linux (CVE-2021-33624), vilket gör det möjligt att anvÀnda eBPF-subsystemet för att kringgÄ skydd mot sÄrbarheter av typen Spectre. Detta kan leda till att innehÄllet i minnet kan bestÀmmas genom att skapa förutsÀttningar för spekulativ exekvering av vissa operationer. För att genomföra en Spectre-attack krÀvs en specifik sekvens av instruktioner i privilegierad kod som leder till spekulativ exekvering av instruktioner. Genom att manipulera de BPF-program som körs kan man generera liknande instruktioner i eBPF och uppnÄ lÀckor av innehÄllet i kÀrnans minne och godtyckliga omrÄden av det fysiska minnet.
SÄrbarheten orsakas av brister i verifieraren som anvÀnds för att upptÀcka fel och otillÄten aktivitet i BPF-program. Verifieraren gÄr igenom möjliga exekveringsvÀgar för koden, men missar grenar som Àr otillÄtna ur ett semantiskt perspektiv av instruktionsuppsÀttningen. NÀr BPF-programmet körs kan sÄdana grenar, som inte beaktas av verifieraren, bli felaktigt förutsagda av processorn och exekveras i spekulativt lÀge. Till exempel, nÀr verifieraren analyserar en 'load'-operation, förvÀntar den sig att instruktionen anvÀnder ett register med en adress vars vÀrde alltid ligger inom angivna grÀnser, men en angripare kan skapa förutsÀttningar dÀr processorn försöker spekulativt utföra en operation med en adress som inte uppfyller kontrollvillkoren.
Problemet uppstÄr frÄn version 4.15 av kÀrnan och har ÄtgÀrdats i form av patchar (1, 2, 3, 4). I distributionerna finns fortfarande sÄrbarheten kvar utan ÄtgÀrd (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).
Det kan dessutom nÀmnas en anteckning om pÄverkan pÄ prestandan av skyddsmekanismer mot sÄrbarheter av typen Spectre. Anteckningen sammanfattar resultaten av optimering av debuggern rr (Record and Replay), som en gÄng skapades av Mozilla för att felsöka svÄrrepeterbara fel i Firefox. Caching av systemanrop som anvÀnds för att kontrollera existensen av kataloger har möjliggjort en minskning av exekveringstiden för operationen 'rr sources' för ett testprojekt frÄn 3 minuter 19 sekunder till 36 sekunder.
Optimeringsförfattaren beslutade sig för att kontrollera hur prestandan skulle förÀndras efter att skyddet mot Spectre stÀngts av. Efter att systemet laddats med parametern "mitigations=off" tog det 2 minuter och 5 sekunder att köra "rr sources" utan optimering (1,6 gÄnger snabbare), medan det med optimering tog 33 sekunder (9% snabbare). Intressant nog minskade avstÀngningen av skyddet mot Spectre inte bara körtiden pÄ kÀrnnivÄ med 1,4 gÄnger (frÄn 2m9s till 1m32s) utan halverade ocksÄ körtiden i anvÀndarutrymmet (frÄn 1m9s till 0m33s), troligen pÄ grund av minskad effektivitet i CPU-cache och TLB-flushar vid aktivt skydd mot Spectre.
KĂ€lla: opennet.ru
