De KVM-virtualisatiecomponent van Linux kon voorheen een gast van een virtuele machine die op AMD SVM-virtualisatie vertrouwde toelaten om door te breken in de host. Deze bug bleef bestaan in de Linux-kernel van eind 2020 tot maart 2021 voordat hij werd aangepakt en is het eerste bekende probleem van een dergelijke gast-naar-host-uitbraak die niet ook afhankelijk was van bugs in componenten van de gebruikersruimte.
Het Project Zero-initiatief van Google heeft vandaag een casestudy gepubliceerd over dit gast-naar-host breakout-probleem. Dit beveiligingslek is niet het gevolg van een probleem met de AMD EPYC-processors, maar eerder van een bug in de kernel-based Virtual Machine (KVM) AMD-backend-code rond de SVM-geneste virtualisatieverwerking.
De volledige case study is te lezen op Google’s blog en is een interessante technische lezing voor iedereen die in detail geïnteresseerd is in de kwestie.
Linux 5.10 en 5.11 werden oorspronkelijk getroffen door deze kwetsbaarheid die werd bijgehouden als CVE-2021-29657 voordat ze laat in de Linux 5.12-cyclus werden opgelost en fixes werden teruggezet naar puntreleases op die eerdere series. Dit is lastig aangezien de meeste grote cloudproviders vertrouwen op KVM, maar de bug was in ieder geval van korte duur in de kernel en slechts een softwarebug, terwijl in dit geval een van de gelukkige tijden dat de openbare/cloudinfrastructuur niet te snel verschuift naar een nieuwe kernel versies.
De post eindigt met:”Deze blogpost beschrijft een KVM-only VM-ontsnapping mogelijk gemaakt door een kleine bug in de AMD-specifieke code van KVM voor het ondersteunen van geneste virtualisatie. Gelukkig is de functie die dit mogelijk maakte bug exploitable was alleen opgenomen in twee kernelversies (v5.10, v5.11) voordat het probleem werd ontdekt, waardoor de werkelijke impact van de kwetsbaarheid tot een minimum werd beperkt.De bug en zijn exploit dienen nog steeds als een demonstratie dat zeer misbruikbaar is beveiligingsproblemen kunnen nog steeds voorkomen in de kern van een virtualisatie-engine, die vrijwel zeker een kleine en goed gecontroleerde codebase is.Hoewel het aanvalsoppervlak van een hypervisor zoals KVM relatief klein is vanuit een puur LoC-perspectief, is het lage niveau interactie met hardware en pure complexiteit maakt het erg moeilijk om beveiligingskritieke bugs te vermijden.”
De betrokken Google-technici pleiten voor meer investeringen in detectiemogelijkheden en een betere isolatie van VM-hosts. Gelukkig is deze softwarekwetsbaarheid niet geïntroduceerd door AMD-ingenieurs, maar AMD is de afgelopen maanden meer Linux-software-engineers aanwerven en ze blijven nieuwe vacatures plaatsen, ook op het gebied van virtualisatie, terwijl ze hun algehele Linux-softwareondersteuning blijven verbeteren.