Microsoft wil met Mozilla’s Rust onveilige code uit Windows 10 halen

Microsoft wil Windows 10 veiliger maken door de integratie van Mozilla’s programmeertaal Rust, ontwikkeld voor low-level Windows componenten. De softwarereus onthulde eerder dat proeven zoals gedaan in Project Verona met Rust over C en C++, om onveilige code uit Windows te halen, succesvol was. 

De overgrote meerderheid van de bugs die tegenwoordig worden ontdekt, zijn volgens Microsoft zogeheten memory safety flaws. Dat is ook de reden waarom Microsoft zo nieuwsgierig is naar Rust. Deze programmeertaal is namelijk ontworpen om ontwikkelaars te laten coderen zonder dat ze zich zorgen te hoeven maken over dit type bugs, aldus ZDnet.

‘Memory safety’ is de term voor coderingskaders, die helpen voorkomen dat geheugenruimte wordt misbruikt door malware. Project Verona is bedoeld om die aanvalsvector af te sluiten.

Memory Garbage Collector (MemGC)

Matthew Parkinson, een Microsoft-onderzoeker van het Cambridge Computer Lab in het Verenigd Koninkrijk, houdt zich bezig met het onderzoek naar geheugenbeheer voor beheerde programmeertalen. Zo richt hij zich onder meer op het werk dat Microsoft heeft gedaan met MemGC (Memory Garbage Collector) voor Internet Explorer (IE) en Edge. MemGC lost kwetsbaarheden op in de standaardbrowserfunctie, ook wel bekend als een Document Object Model (DOM). Dat is een weergave van de gegevens die door browsers worden gebruikt om webpagina’s te interpreteren.

Taalontwerp en compartimentering.

Volgens Parkinson herschrijft Microsoft sommige gerichte componenten in Rust, waarbij de onderzoeker de focus legt op taalontwerp en compartimentering. “Als we compartimenten willen en de legacy-stukjes van onze code willen opdelen, zodat exploit-code er niet uit kan komen, wat hebben we dan in het taalontwerp nodig, dat daarbij kan helpen?” 

Er zouden plannen zijn om Project Verona op korte termijn open-source te maken. Microsoft zou het zelf een nieuwe programmeertaal noemen, geheten safe infrastructure programming. Project Verona wordt ondersteund door C # projectmanager Mads Torgensen en Microsoft Research Cambridge research software engineer Juliana Franco.

Uitdaging

De uitdaging voor Microsoft is het omgaan met het toepassingsspectrum, dat zich uitstrekt van C # voor desktop-apps tot C en C # voor Exchange, ASP.NET, Azure en apparaatstuurprogramma’s. Maar ook tot diepe Windows-componenten, zoals geheugenbeheer en bootloaders en de Windows kernel hardware abstractielaag (HAL).

“Tijdelijke geheugenveiligheid is erg moeilijk als je willekeurige gelijktijdige mutaties hebt.  Het eigendomsmodel in Verona is gebaseerd op groepen objecten. Dat is anders in Rust, waar het is gebaseerd op een enkel object. In C ++ krijg je aanwijzingen en het is gebaseerd op objecten. Maar dat is niet hoe ik denk over data en grammatica. Ik denk bij een datastructuur aan een verzameling objecten en bij de verzameling objecten aan een heel leven. Dus door ownership te nemen op het niveau van eigendom van objecten, komen we veel dichter bij het abstractieniveau dat mensen gebruiken. Bovendien geeft het ons de mogelijkheid om datastructuren te bouwen zonder buiten veiligheid te gaan.”