3min Security

Memory-safe malware: Rust daagt securityonderzoekers uit

Memory-safe malware: Rust daagt securityonderzoekers uit

Massaal worden kernels, drivers en andere kritieke onderdelen van IT-systemen herschreven in Rust. Deze programmeertaal neemt het stokje over van C en C++ als betrouwbare low-level programmeertaal. Ook malware leunt steeds meer op Rust, met alle gevolgen van dien. Welke uitdagingen levert dit op voor securityonderzoekers en organisaties? En zijn we al dicht bij een oplossing?

Nog altijd is Rust een rijzende ster in de constellatie der programmeertalen. Het combineert efficiëntie met betrouwbaarheid, daar waar het C en C++ van weleer om de haverklap kwetsbaarheden opleveren door fouten in het geheugenbeheer. Precies dit voordeel is ook aantrekkelijk voor de aanvallers die dergelijke kwetsbaarheden exploiteren. Een ander voordeel: Rust-code is ontzettend lastig te analyseren.

Een black box vol gevaren

Afgelopen week lichtte Microsoft toe waarom securityonderzoekers zo’n grote kluif hebben aan Rust-gebaseerde malware, maar ook bood het een oplossing. Over dat tweede later meer, maar eerst werpen we een blik op de uitdagingen waar onderzoeksteams mee te maken hebben. De veiligheid van Rust-code wordt namelijk bezweerd door ingebouwde memory safety-functionaliteit en concurrency handling. Dat laatste voorkomt dat verschillende commando’s naar hetzelfde stukje geheugen proberen te schrijven. Dit voorkomt een categorie aan kwetsbaarheden, maar compliceert securityanalyses.

Het is namelijk moeilijk om te herkennen wanneer aanvallers standaard Rust-libraries gebruiken in hun malware en welke onderdelen daadwerkelijk malafide acties uitvoeren. Dit betekent dat het regelmatig onduidelijk is wat een stukje malware precies probeert uit te voeren. Het grootste gevaar hierbij (en de ultieme wens van cyberaanvallers) is dat malware simpelweg niet als zodanig wordt herkend door securitysystemen én menselijke controleurs.

Het Threat Intelligence Center van Microsoft heeft gelukkig deze black box-aard van in Rust geschreven malware afgezwakt. RIFT (Rust Interactive Function Tool) is een tool om de werking van Rust-code te ontrafelen. Specifiek identificeert het library-code binnen Rust-malware. Hierdoor verdwijnt een gehele stap die securityonderzoekers voorheen moesten ondernemen bij deze categorie aan malafide software. Microsoft heeft de tool open-source gemaakt, waardoor er bijvoorbeeld gewerkt kan worden aan het uitbreiden van de functionaliteit en compatibiliteit met Linux of andere besturingssystemen.

Een nieuwe realiteit

Microsoft schetst een tijdlijn van Rust-gebruik in notoire malware-types, waaruit blijkt waarom een tool als RIFT zo belangrijk is. In december 2021 bleek BlackCat gebruik te maken van Rust bij haar ransomware. In de jaren erna hebben cybercriminelen en statelijke aanvallers tevens de migratie naar Rust voltooid. Dit biedt voordelen voor malwarevarianten die voorheen in high-level talen waren geschreven, omdat de leesbaarheid van Rust een stuk zwakker is dan bijvoorbeeld Python en de efficiëntie vele malen hoger is.

De keuze van Microsoft om nu de analyse van Rust-gebaseerde malware toegankelijker te maken, komt dus zeker als geroepen. Het snijdt de pas af voor aanvallers die wellicht maanden of jaren hebben gewerkt aan de ‘juiste’ Rust-implementatie voor bestaande malware, of voor diegenen die voor het eerst met dergelijke kwaadaardige code aan de slag gingen.

Hoewel reverse engineeren dus lastiger dan ooit is, blijft de verdedigende kant van de cybersecuritywereld inspelen op deze ontwikkeling. Een ander voordeel is dat de precieze werking van Rust-code ook weer een stapje beter te herkennen is, iets dat de wisselwerking tussen open-source contributeurs voortzet. Zo bedankt Microsoft de ontwikkelaars van het Diaphora-project, die op open-source basis een diffing tool ontwikkelde, ofwel een programma om de verschillen tussen twee computerbestanden uitpluist. Mogelijk volgt binnen enkele maanden of jaren een bedankje richting Microsoft vanuit een ander open-source project dat weer van RIFT gebruik heeft gemaakt.

Lees ook: Waarom programmeertaal Rust steeds populairder wordt