Ranjivost u ld.so OpenBSD

Dinamički utovarivač ld.tako, uključen u OpenBSD, može, pod određenim uvjetima, SUID/SGID- aplikacije napuštaju varijablu okoline LD_LIBRARY_PATH i tako dopuštaju učitavanje koda treće strane u kontekstu procesa koji se izvodi s povišenim privilegijama. Zakrpe koje popravljaju ranjivost dostupne su za izdanja 6.5 и 6.6. Binarne zakrpe (syspatch) za platforme amd64, i386 i arm64 već su u proizvodnji i trebali bi biti dostupni za preuzimanje do objave ove vijesti.

Suština problema: tijekom rada ld.so prvo iz okruženja izvlači vrijednost varijable LD_LIBRARY_PATH i pomoću funkcije _dl_split_path() je pretvara u niz stringova – putova do direktorija. Ako se kasnije ispostavi da je trenutni proces pokrenula SUID/SGID aplikacija, tada se kreirani niz i, zapravo, varijabla LD_LIBRARY_PATH brišu. U isto vrijeme, ako _dl_split_path() ostane bez memorije (što je teško zbog eksplicitnog ograničenja od 256 kB na veličinu varijabli okruženja, ali teoretski moguće), tada će varijabla _dl_libpath dobiti vrijednost NULL, a naknadne provjere vrijednost ove varijable će prisilno preskočiti poziv na _dl_unsetenv("LD_LIBRARY_PATH").

Ranjivost koju su otkrili stručnjaci Kvalis, kao i nekoliko prethodno objavljenih problema. Sigurnosni istraživači koji su identificirali ranjivost primijetili su koliko je brzo problem riješen: pripremljena je zakrpa i ažuriranja su izdana unutar tri sata nakon što je OpenBSD projekt primio obavijest.

Dodatak: problemu je dodijeljen broj CVE-2019-19726. Napravljeno na oss-security mailing listi službena objava, uključujući iskorištavanje prototipa koji radi na arhitekturama OpenBSD 6.6, 6.5, 6.2 i 6.1
amd64 i i386 (iskorištavanje se može prilagoditi za druge arhitekture).
Problem se može iskoristiti u zadanoj instalaciji i omogućuje nepovlaštenom lokalnom korisniku da izvrši kod kao root putem zamjene biblioteke prilikom pokretanja uslužnih programa chpass ili passwd suid. Za stvaranje uvjeta niske memorije potrebne za rad, postavite ograničenje RLIMIT_DATA preko setrlimit.

Izvor: opennet.ru

Dodajte komentar