ld.so OpenBSD haavatavus

Dünaamiline laadur nii, mis on kaasas OpenBSD-ga, võib teatud tingimustel SUID/SGID- rakendused jätavad keskkonnamuutuja LD_LIBRARY_PATH ja võimaldavad seega laadida kolmanda osapoole koodi kõrgendatud õigustega töötava protsessi kontekstis. Väljalasete jaoks on saadaval paigad, mis parandavad haavatavust 6.5 и 6.6. Binaarsed plaastrid (syspatch) amd64, i386 ja arm64 platvormide jaoks on juba tootmises ja peaksid olema allalaadimiseks saadaval selle uudise avaldamise ajaks.

Probleemi olemus: töötamise ajal eraldab ld.so esmalt keskkonnast muutuja LD_LIBRARY_PATH väärtuse ja funktsiooni _dl_split_path() kasutades muudab selle stringide massiiviks – teedeks kataloogidesse. Kui hiljem selgub, et käimasoleva protsessi käivitab SUID/SGID rakendus, siis loodud massiiv ja tegelikult ka muutuja LD_LIBRARY_PATH kustutatakse. Samal ajal, kui _dl_split_path() mälu saab otsa (mis on raske keskkonnamuutujate suuruse selgesõnalise 256 kB piirangu tõttu, kuid teoreetiliselt võimalik), saab muutuja _dl_libpath väärtuse NULL ja järgnevad kontrollid selle muutuja väärtus sunnib _dl_unsetenv("LD_LIBRARY_PATH") väljakutse vahele jätma.

Ekspertide leitud haavatavus Kvaliteetne, sama hästi kui mitmed varem avalikustatud probleeme. Haavatavuse tuvastanud turvauurijad märkisid, kui kiiresti probleem lahenes: plaaster valmistati ette ja värskendused avaldati kolme tunni jooksul pärast OpenBSD projekti teate saamist.

Täiendus: probleemile on määratud number CVE-2019-19726. Tehtud oss-security meililistis ametlik teadaanne, sealhulgas OpenBSD 6.6, 6.5, 6.2 ja 6.1 arhitektuuridel töötav prototüüp
amd64 ja i386 (kasutamist saab kohandada ka teistele arhitektuuridele).
Probleemi saab kasutada vaikeinstallis ja see võimaldab privilegeerimata kohalikul kasutajal utiliitide chpass või passwd suid käivitamisel teegi asendamise kaudu koodi käivitada administraatorina. Tööks vajalike vähese mäluga tingimuste loomiseks seadke setrlimiti kaudu limiit RLIMIT_DATA.

Allikas: opennet.ru

Lisa kommentaar