Een bug in Unix-commando sudo maakte het mogelijk roottoegang te krijgen tot een besturingssysteem zonder authenticatie. Beveiligingsonderzoekers vonden een buffer-overflow-kwetsbaarheid in het protocol, waar inmiddels een patch voor uit is.
Het gaat om bug CVE-2021-3156. Daarmee kan een aanvaller in een terminal het sudo-commando uitbuiten om rootrechten te krijgen tot een Unix-machine zonder het wachtwoord te weten. De kwetsbaarheid zit in legacy sudo-versies van 1.8.2 tot aan 1.8.31p2 en alle stabiele versies van 1.9.0 tot 1.9.5p1 van grote Linux-distro's zoals Ubuntu, Debian en Fedora. Het sudo-commando staat voor 'superuser do' en wordt gebruikt om tijdelijke rootrechten te geven aan een gebruiker als die een commando wil uitvoeren en in daarvoor bedoelde lijst staat.
De bug werd ontdekt door securityonderzoekers van Qualys. Zij wisten rootrechten te krijgen op Ubuntu 20.04, Debian 10 en Fedora 33. De onderzoekers zeggen dat ook andere distro's waarschijnlijk gebruik maken van de kwetsbare sudo-versie.
De kwetsbaarheid is een heap-based buffer overflow. Die kan worden uitgevoerd als het sudo-commando in shell-modus wordt uitgevoerd met zowel de -s als de -i-optie. Als die commando's worden ingevoerd, worden speciale tekens niet meegenomen door een \ toe te voegen. Die worden dan automatisch uit het commando gehaald voordat sudo de sudo-policy verifieert. Er zit een kwetsbaarheid in de code die dat \-teken toevoegt, waardoor het mogelijk is commando's in shell-modus uit te voeren met de -s- of -i-optie, schrijft het sudo-team.
De bug bestaat al lang. Die werd in commit 8255ed69 toegevoegd, in juli 2011. Er is geen workaround beschikbaar; distributeurs moeten de patch voor sudo zelf doorvoeren in hun besturingssystemen. De bug is gerepareerd in sudo 1.9.5p2. Er zijn in het verleden al vaker kwetsbaarheden in sudo ontdekt, maar die waren in de praktijk lastig uit te voeren.