Der er dukket en sårbarhed i linux-værktøjet sudo, som gør det muligt for en bruger at eksekvere kommandoer som root, selvom brugeren i udgangspunktet ikke har lov til det. Sårbarheden er alene aktuel på en ikke-standardkonfiguration.. .
Det oplyser The Register, som i forhold til det med ikke-standardkonfigurationen påpeger, at linux-systemer altså i udgangspunktet ikke er sårbare overfor kode-fejlen.
Sårbarheden, der har fået det formelle id CVE-2019-14287, er også beskrevet på den officielle sudo-side sudo.ws.
Wikipedia beskriver sudo som et program til Unix-like systemer, som bruges til at eksekvere kommandoer på vegne af en anden bruger. Sudo bruges således også på andre systemer en linux.
'superuser do'
Oprindeligt stod sudo for 'superuser do', oplyser Wikipedia. Til at starte med, var sudo tænkt til alene at køre kommandoer som superuser, eksempelvis root. Senere fik programmet udvidet funktionaliteten, så det også kunne bruges til at køre programmer som andre brugere.
På blandt andet linux-distributionen Ubuntu bruges sudo til at eksekvere kommandoer som root.
Sudo kan imidlertid konfigureres, så en bruger kan køre kommandoer som alle andre brugeren, undtagen root. Og her er vi ovre i den føromtalte ikke-standardkonfiguration.
The Register bringer et eksempel på en konfiguration i filen /etc/sudoer, der bevirker, at brugeren 'bob' via sudo kan køre teksteditoren 'vi' som alle brugere, undtagen root.
Et lignende eksempel optræder i den officielle melding om sårbarheden på sudo.ws.
mybox bob = (ALL, !root) /usr/bin/vi
Som følge af den aktuelle sudo-sårbarhed har bob kunnet omgå ovenstående konfiguration og alligevel køre 'vi' som root.
sudo -u#-1 vi
Alt bob skal gøre er at køre kommandoen :
sudo -u#-1 vi
Eksempelvis -u#1234 bevirker, at 'vi' bliver kørt med bruger-ID'et 1234. Sudo sender tal-værdien videre til systemkaldene setresuid og setreuid for at ændre det bruger-ID, som den pågældende kommando bliver kørt i kontekst af.
Det vil også sige, at -u#-1 sender bruger-ID'et -1 videre til systemkaldende. Og her opstår balladen. For systemkaldene er -1 et særtilfælde, der betyder, at bruger-ID'et ikke skal ændres. Og da sudo i udgangspunkt kører som root, bevirker -1, at - i dette tilfælde - 'vi' også køres som root. Uanset konfigurationen i sudoer-filen.
Joe Vennix fra Apple Information Security er krediteret for at have fundet buggen. Sudo er også et værktøj på Apples MacOS. Hullet er lukket i Sudo version 1.8.28.
The Register henviser iøvrigt til den konkrete patch, der kan ses her. Her fremgår det, at der er indsat if-sætninger i koden, der skal forhindre, at bruger-ID'et bliver sat til -1.