Kwetsbaarheid in ld.so OpenBSD

Dynamische lader zo, meegeleverd met OpenBSD, kan, onder bepaalde voorwaarden, SUID/SGID- toepassingen verlaten de omgevingsvariabele LD_LIBRARY_PATH en staan ​​zo toe dat code van derden wordt geladen in de context van een proces dat met verhoogde bevoegdheden wordt uitgevoerd. Patches die de kwetsbaarheid verhelpen, zijn beschikbaar voor releases 6.5 и 6.6. Binaire patches (systeempatch) voor amd64-, i386- en arm64-platforms zijn al in productie en zouden beschikbaar moeten zijn om te downloaden tegen de tijd dat dit nieuws wordt gepubliceerd.

De essentie van het probleem: tijdens de werking extraheert ld.so eerst de waarde van de variabele LD_LIBRARY_PATH uit de omgeving en verandert deze, met behulp van de functie _dl_split_path(), in een array van strings - paden naar mappen. Als later blijkt dat het huidige proces wordt gestart door een SUID/SGID-applicatie, worden de gemaakte array en in feite de variabele LD_LIBRARY_PATH gewist. Tegelijkertijd, als _dl_split_path() onvoldoende geheugen heeft (wat moeilijk is vanwege de expliciete limiet van 256 kB op de grootte van omgevingsvariabelen, maar theoretisch mogelijk), dan krijgt de variabele _dl_libpath de waarde NULL, en daaropvolgende controles van de waarde van deze variabele zorgt ervoor dat de aanroep naar _dl_unsetenv("LD_LIBRARY_PATH") wordt overgeslagen.

Kwetsbaarheid gevonden door experts Qualy's, net zoals verschillende eerder onthuld problemen. De beveiligingsonderzoekers die de kwetsbaarheid identificeerden, merkten op hoe snel het probleem werd opgelost: er werd een patch voorbereid en updates werden uitgebracht binnen drie uur nadat het OpenBSD-project een melding had ontvangen.

Toevoeging: Het probleem heeft een nummer gekregen CVE-2019-19726. Gemaakt op de oss-security mailinglijst officiële aankondiging, inclusief een prototype-exploit draaiend op OpenBSD 6.6, 6.5, 6.2 en 6.1 architecturen
amd64 en i386 (de exploit kan worden aangepast voor andere architecturen).
Het probleem kan worden misbruikt in de standaardinstallatie en stelt een onbevoegde lokale gebruiker in staat code als root uit te voeren via bibliotheekvervanging bij het uitvoeren van de hulpprogramma's chpass of passwd suid. Om de omstandigheden met weinig geheugen te creëren die nodig zijn voor de werking, stelt u de RLIMIT_DATA-limiet in via setrlimit.

Bron: opennet.ru

Voeg een reactie