Zehfbûn di ld.so OpenBSD de

Barkerê dînamîk ld.so, di nav OpenBSD de, dibe ku, di bin hin mercan de, SUID / SGID- serîlêdan guhêrbara jîngehê LD_LIBRARY_PATH dihêlin û bi vî rengî destûr didin ku koda sêyemîn di çarçoweya pêvajoyek ku bi îmtiyazên bilind dimeşe were barkirin. Pelên ku qelsiyê rast dikin ji bo berdanê hene 6.5 и 6.6. Pelên binary (syspatch) ji bo platformên amd64, i386 û arm64 jixwe di hilberînê de ne û divê heya ku ev nûçe were weşandin ji bo dakêşanê peyda bibe.

Esasê pirsgirêkê: di dema xebitandinê de, ld.so pêşî nirxa guhêrbara LD_LIBRARY_PATH ji hawîrdorê derdixe û, bi karanîna fonksiyona _dl_split_path() ve, wê vediguherîne rêzek rêzikan - rêyên berbi pelrêçan. Ger paşê derkeve holê ku pêvajoya heyî ji hêla serîlêdana SUID/SGID ve hatî destpêkirin, wê hingê rêzika hatî afirandin û, bi rastî, guhêrbar LD_LIBRARY_PATH têne paqij kirin. Di heman demê de, heke _dl_split_path() ji bîrê derkeve (ku ji ber sînorê eşkere 256 kB li ser mezinahiya guhêrbarên jîngehê dijwar e, lê ji hêla teorîkî ve gengaz e), wê hingê guhêrbar _dl_libpath dê nirxa NULL bistîne, û dûv re kontrolên nirxa vê guhêrbar dê zorê bide banga _dl_unsetenv("LD_LIBRARY_PATH").

Zelalbûn ji hêla pisporan ve hatî dîtin Qualy's, û herwisa çend berê hatine eşkere kirin pirsgirêkên. Lekolînwanên ewlehiyê yên ku qelsî nas kirin destnîşan kirin ku pirsgirêk çiqas zû çareser bû: patchek hate amade kirin û nûvekirin di nav sê demjimêran de piştî ku projeya OpenBSD agahdarî wergirt hate berdan.

Zêdebûn: Ji pirsgirêkê re jimarek hate destnîşankirin CVE-2019-19726. Li ser navnîşa posta oss-ewlehiyê hatî çêkirin ragihandina fermî, di nav de îstismarek prototîpek ku li ser mîmarên OpenBSD 6.6, 6.5, 6.2 û 6.1 tê xebitandin
amd64 û i386 (xebitandin dikare ji bo mîmariyên din were adapte kirin).
Pirsgirêk di sazkirina xwerû de tê bikar anîn û dihêle bikarhênerek herêmî ya bêdestûr dema ku karûbarên chpass an passwd suid dimeşîne kodê wekî root bi navgîniya veguheztina pirtûkxaneyê bi cih bîne. Ji bo afirandina şert û mercên kêm-bîra ku ji bo xebatê hewce ne, sînorê RLIMIT_DATA bi navgîniya setrlimit veqetînin.

Source: opennet.ru

Add a comment