Een geheugenfout in sudo gaf onbevoegden roottoegang. De programmeertaal Rust die deze en andere beveiligingsfouten onmogelijk maakt, wint aan belang. En dnsmasq was kwetsbaar voor cache poisoning. Deze en andere beveiligingsnieuwtjes lees je in Focus op veiligheid.

Koen Vervloesem    |  Gepubliceerd in Linux Magazine 2, 2021

Fout in sudo geeft onbevoegden roottoegang

Sudo gebruik je normaal om bevoegde gebruikers specifieke opdrachten met rootrechten te laten uitvoeren. Door een bug in sudo bleken nu ook onbevoegden roottoegang te kunnen verkrijgen. De fout, met CVE-nummer CVE-2021-3156 en roepnaam “Baron Samedit”, werd ontdekt door beveiligingsonderzoekers van Qualys. Die ontdekten dat de fout al sinds 2011 in de code zit.

Als je met sudo een shell opent en daarin een opdracht uitvoert, ‘escape’ je normaal speciale tekens met een backslash. Sudo verwijdert die escape-tekens dan voordat het evalueert of je de opdracht mag uitvoeren. Er zat nu een fout in de code waardoor deze na het laatste teken van de string schrijft als die eindigt met een backslash zonder escapeteken (dat zou dus een dubbele backslash moeten zijn).

Normaal werd die foute code nooit getriggerd, maar Qualys ontdekte een andere fout: als je sudo uitvoert als sudoedit (waarmee je een bestand met aangepaste gebruikersrechten opent in je standaardeditor), aanvaardt het programma de opties -s en -i, die alleen zinnig zijn als je een opdracht uitvoert. Sudoedit voert geen opdracht uit en lijkt de opties dus te negeren, maar schakelt wel de shellmodus in en escapet dan geen speciale tekens omdat er geen opdracht uitgevoerd wordt. En zo wordt er alsnog na het einde van de string geschreven.

De fout krijgt zijn naam Baron Samedit dus omdat ze getriggerd wordt wanneer je sudo als sudoedit uitvoert. Qualys demonstreerde dat je een buffer overflow veroorzaakt als je aan sudoedit een opdracht opgeeft die met een backslash (\) eindigt. De fout werd onder andere opgelost door de shellopties niet meer toe te laten bij sudoedit. De opdracht werd immers toch genegeerd.

Lokale gebruikers die niet in /etc/sudoers vermeld worden, kunnen door de fout dus rootrechten verkrijgen, zelfs de gebruiker nobody, en ze hoeven zich niet eens te authenticeren. Daardoor is de fout alleen lokaal uit te buiten, maar ze kan voor cybercriminelen ook nuttig zijn in een tweede fase: nadat ze in een ongeprivilegieerde account ingebroken zijn (door een andere beveiligingsfout of een zwak wachtwoord), kunnen ze op deze manier rootrechten en zo de volledige controle over een Linux-machine verkrijgen. Ook macOS en AIX bleken kwetsbaar. OpenBSD heeft sudo nog wel als pakket beschikbaar, maar komt sinds versie 5.9 (uit 2016) al standaard met de eenvoudigere en veiligere vervanger doas.

Rust moet belangrijke software veiliger maken

Geheugenfouten zoals die in sudo zijn nog altijd een van de meest voorkomende beveiligingsfouten. De programmeertaal C, waarin zowat alle belangrijke software geschreven is, maakt het immers moeilijk om dit soort fouten te vermijden. Daarom gaan er steeds meer stemmen op om veiligere talen te gebruiken, zoals Rust. De Internet Security Research Group, bekend van zijn populaire tool Let’s Encrypt die tls-certificaten gedemocratiseerd heeft, wil nu een geheugenveilige tls-module voor de webserver Apache ontwikkelen in Rust, ter vervanging van het in C geschreven mod_ssl dat het eveneens in C geschreven OpenSSL gebruikt.

De ontwikkeling omhelst de module mod_tls die gebruikmaakt van de bibliotheek Rustls, en het ISRG hoopt dat deze ooit mod_ssl als de standaard tls-module kan vervangen. Google financiert het project, dat door Stefan Eissing van Greenbytes zal worden uitgevoerd.

Google heeft ook voor andere projecten interesse getoond in Rust. Het experimenteert met Rust in Chrome, nadat het vorig jaar publiceerde dat 70% van alle kritieke beveiligingsfouten in Chrome te maken hadden met geheugenbeheer. Ook recente cijfers van Android-kwetsbaarheden leverde een aandeel van 59% op van dit type fouten. Google heeft aangekondigd dat het ontwikkelaars wil aansporen om geheugenveilige talen te gebruiken voor Android-code, waaronder Java, Kotlin en Rust.

Dnsmasq kwetsbaar voor cache poisoning

Dnsmasq, een caching dns-server en dhcp-server die veel gebruikt wordt in netwerkapparaten (waaronder OpenWrt en Pi-hole), bleek kwetsbaar te zijn voor dns cache poisoning. De beveiligingsonderzoekers van JSOF noemden de zeven fouten die ze vonden (drie keer cache poisoning en vier buffer overflows) samen DNSpooq. De ernstigste fout kon zelfs aanvallers op afstand opdrachten doen uitvoeren als dnsmasq geconfigureerd was om dnssec te gebruiken. Dat is wel ironisch, omdat dnssec juist bedoeld is om cache poisoning tegen te gaan.

Dns cache poisoning betekent dat een aanvaller op het netwerk valse dns-records aan dnsmasq kan doorgeven, zodat andere gebruikers in het netwerk naar phishingsites doorverwezen worden. Maar ook e-mails, ssh-sessies, remote-desktopsessies, video- en audiogesprekken en software-updates kunnen zo omgeleid worden. De impact van DNSpooq is dan ook groot. Temeer omdat de onderzoekers van JSOF maar liefst een miljoen dnsmasq-servers ontdekten die als open resolver geconfigureerd waren.

DNSpooq laat toe dat een aanvaller dns-records manipuleert.

Ubuntu Core 20 voegt Secure Boot toe

Canonical heeft Ubuntu Core 20 uitgebracht, de nieuwste versie van zijn voor IoT-apparaten bedoelde variant van zijn besturingssysteem. Ubuntu Core 20 is gebaseerd op Ubuntu 20.04 LTS. De focus in deze nieuwe versie is een betere beveiliging. Het opstartproces wordt nu standaard geauthenticeerd met Secure Boot op basis van de verificatie van digitale handtekeningen. Dit kan zowel met sleutels in hardware (een secure element of trusted platform computing) als software.

En verder

Google Project Zero-onderzoeker Travis Ormandy vond een kritieke heap buffer overflow in versie 1.9.0 van libgcrypt, dat gebruikt wordt in GnuPG. De domeinnaam perl.com werd gestolen, waarna het naar een IP-adres verwees dat erom bekendstaat vroeger de thuis te zijn van malwarecampagnes. Ook het OpenWrt-project had pech: iemand slaagde erin het wachtwoord van een forumbeheerder te verkrijgen en stal zo een database met e-mailadressen en accountnamen van 27.000 gebruikers van het forum.

Snort 3 is een belangrijke upgrade van het populaire opensourcesysteem voor intrusion detection. De code is modulair gemaakt en werkt efficiënter. In Ubuntu 21.04 krijgt elke home-directory permissies 750 in plaats van 755. Daardoor kunnen andere gebruikers op hetzelfde systeem niet meer je bestanden lezen. Dit wordt alleen voor nieuwe installaties ingevoerd. En Firefox 85 beschermt je tegen supercookies.

Het Nationaal Cyber Security Centrum (NCSC) van het ministerie van Justitie en Veiligheid adviseert organisaties om TLS 1.3 te ondersteunen. Tails wil in 2021 enkele kernfuncties van zijn distributie voor privacy en anonimiteit verbeteren. Zo moet het gemakkelijker worden om blokkades van Tor te omzeilen, wordt de persistente opslag gebruiksvriendelijker en staat er een migratie naar Wayland op het plan. En het Tor-project ontving in 2021 een recordbedrag van 913.000 dollar.