Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ld.so OpenBSD

ДинамичСский Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ld.so, входящий Π² состав OpenBSD, ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… условиях ΠΌΠΎΠΆΠ΅Ρ‚ для SUID/SGID-прилоТСния ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния LD_LIBRARY_PATH ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сторонний ΠΊΠΎΠ΄ Π² контСкстС процСсса, выполняСмого с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями. ΠŸΠ°Ρ‚Ρ‡ΠΈ с исправлСниСм уязвимости доступны для Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² 6.5 ΠΈ 6.6. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ (syspatch) для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ amd64, i386 ΠΈ arm64 ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² производство ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ новости.

Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ld.so сначала ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· окруТСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LD_LIBRARY_PATH, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ _dl_split_path() ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² массив строк — ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ. Если ΠΏΠΎΠ·Π΄Π½Π΅Π΅ выясняСтся, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ процСсс Π·Π°ΠΏΡƒΡ‰Π΅Π½ SUID/SGID-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ созданный массив ΠΈ, собствСнно, пСрСмСнная LD_LIBRARY_PATH ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ этом, Ссли Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ _dl_split_path() столкнётся с Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ памяти (Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ·-Π·Π° наличия явного ограничСния Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния Π² 256 ΠΊΠ‘Π°ΠΉΡ‚, Π½ΠΎ тСорСтичСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ), Ρ‚ΠΎ пСрСмСнная _dl_libpath ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° значСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ заставит ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² _dl_unsetenv(«LD_LIBRARY_PATH»).

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° спСциалистами Qualys, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ нСсколько Ρ€Π°Π½Π΅Π΅ раскрытых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Ρ‹ΡΠ²ΠΈΠ²ΡˆΠΈΠ΅ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ исслСдоватСли бСзопасности ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: ΠΏΠ°Ρ‚Ρ‡ Π±Ρ‹Π» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½, ΠΈ обновлСния Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ… часов послС получСния увСдомлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ OpenBSD.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ присвоСн Π½ΠΎΠΌΠ΅Ρ€ CVE-2019-19726. Π’ спискС рассылки oss-security сдСлан ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ анонс, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ эксплоита, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² OpenBSD 6.6, 6.5, 6.2 ΠΈ 6.1 Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…
amd64 ΠΈ i386 (эксплоит ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€).
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° эксплуатируСма Π² установкС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ позволяСт Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root Ρ‡Π΅Ρ€Π΅Π· подстановку Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΈ запускС suid-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ chpass ΠΈΠ»ΠΈ passwd. Для создания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для эксплуатации условий Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ установка ограничСния RLIMIT_DATA Ρ‡Π΅Ρ€Π΅Π· setrlimit.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru