OpenBSD privilege escalation at authentication bypass vulnerabilities sa smtpd, ldapd at radiusd

Kumpanya ng Qualys ipinahayag apat mga kahinaan sa OpenBSD, isa sa kung saan ay nagbibigay-daan sa iyong kumonekta nang malayuan nang walang pagpapatotoo sa ilang mga serbisyo ng network, at ang iba pang tatlo ay nagdaragdag ng iyong mga pribilehiyo sa system. Napansin ng ulat ng Qualys ang mabilis na pagtugon ng mga developer ng OpenBSD - lahat ng problema ay inalis Π² OpenBSD 6.5 ΠΈ OpenBSD 6.6 sa loob ng 40 oras pagkatapos ng pribadong abiso.

Ang malayuang mapagsamantalang kahinaan ay sanhi ng isang error sa pagtawag sa authentication handler sa libc library, na tumatawag
program /usr/libexec/auth/login_style na nagpapasa ng mga argumento sa command line. Kasama kapag tumatawag sa login_style gamit ang opsyonal na parameter na "-s service", posibleng ilipat ang pangalan ng protocol. Kung gagamit ka ng "-" na character sa simula ng isang username, ang pangalang ito ay ituturing bilang isang opsyon kapag nagpapatakbo ng login_style. Alinsunod dito, kung tutukuyin mo ang "-schallenge" o "-schallenge:passwd" bilang username sa panahon ng pagpapatotoo, pagkatapos ay makikita ng login_style ang kahilingan bilang isang kahilingan na gamitin ang handler S/Susi.

Ang problema ay ang S/Key protocol sa login_style ay suportado lamang nang pormal, ngunit talagang binabalewala ang output ng isang tanda ng matagumpay na pagpapatunay. Kaya, ang isang umaatake ay maaaring, sa pamamagitan ng pagkukunwari bilang user na "-challenge", laktawan ang pagpapatunay at makakuha ng access nang hindi nagbibigay ng password o mga susi. Ang lahat ng mga serbisyo ng network na gumagamit ng karaniwang mga tawag sa libc para sa pagpapatunay ay posibleng maapektuhan ng problema. Halimbawa, ang kakayahang i-bypass ang pagpapatotoo ay sinusuportahan sa smtpd (AUTH PLAIN), ldapd at radiusd.

Ang kahinaan ay hindi lilitaw sa sshd, dahil mayroon itong karagdagang proteksyon na sumusuri sa presensya ng gumagamit sa system. Gayunpaman, ang sshd ay maaaring gamitin upang subukan ang kahinaan ng isang system - kapag ina-access ang username na "-sresponse:passwd", ang koneksyon ay nag-hang, dahil ang sshd ay naghihintay para sa login_passwd na ibalik ang mga parameter ng hamon, at login_passwd ay naghihintay para sa nawawalang mga parameter upang maipadala (pangalan "- sresponse" ay itinuturing bilang isang opsyon). Maaaring subukan ng isang lokal na umaatake na i-bypass ang pagpapatotoo sa su utility, ngunit ang pagpasa sa pangalang "-sresponse" ay nagiging sanhi ng pag-crash ng proseso sa pamamagitan ng pagbabalik ng null pointer kapag isinasagawa ang getpwnam_r("-schallenge", ...) function.

Iba pang mga kahinaan:

  • CVE-2019-19520 Lokal na pagtaas ng pribilehiyo sa pamamagitan ng pagmamanipula ng xlock utility na ibinigay kasama ng sgid flag na nagpapalit ng grupo sa "auth". Sa xlock code, ipinagbabawal lang ang muling pagtukoy sa mga path patungo sa mga library kapag binago ang user identifier (setuid), na nagpapahintulot sa attacker na baguhin ang environment variable na β€œLIBGL_DRIVERS_PATH” at ayusin ang paglo-load ng kanyang shared library, ang code na kung saan ay isasagawa. pagkatapos itaas ang mga pribilehiyo sa grupong "auth".
  • CVE-2019-19522 - Nagbibigay-daan sa isang lokal na user na miyembro ng pangkat na "auth" na magpatakbo ng code bilang root kapag pinagana ang pagpapatotoo ng S/Key o YubiKey sa system (hindi aktibo bilang default). Ang pagsali sa pangkat na "auth", na maaaring ma-access sa pamamagitan ng pagsasamantala sa nabanggit na kahinaan sa xlock, ay nagbibigay-daan sa iyong magsulat ng mga file sa /etc/skey at /var/db/yubikey na mga direktoryo. Halimbawa, maaaring magdagdag ang isang attacker ng bagong file /etc/skey/root para makabuo ng isang beses na key para sa authentication bilang root user sa pamamagitan ng S/Key.
  • CVE-2019-19519 - ang posibilidad ng pagtaas ng mga limitasyon ng mapagkukunan sa pamamagitan ng pagmamanipula ng su utility. Kapag tinukoy ang opsyong "-L", na nagiging sanhi ng paulit-ulit na mga pagtatangka sa pagpapatunay kung hindi matagumpay, isang beses lang itatakda ang klase ng user at hindi na-reset sa mga susunod na pagsubok. Ang isang umaatake ay maaaring magsagawa ng "su -l -L" sa unang pagtatangka na ipasok ang pag-login ng ibang tao gamit ang ibang klase ng account, ngunit sa pangalawang pagtatangka ay matagumpay niyang mapatotohanan bilang siya mismo. Sa sitwasyong ito, ang user ay sasailalim sa mga limitasyon batay sa klase ng user na tinukoy sa unang pagtatangka (halimbawa, ang maximum na bilang ng mga proseso o laki ng memory para sa isang proseso). Gumagana lang ang paraan para sa mga limitasyon sa paghiram mula sa mga walang pribilehiyong user, dahil ang root user ay dapat nasa wheel group).

Bilang karagdagan, maaari mong tandaan pagpapatupad sa OpenBSD, isang bagong paraan para sa pagsuri sa bisa ng mga tawag sa system, na lalong nagpapalubha sa pagsasamantala sa mga kahinaan. Ang pamamaraan ay nagpapahintulot sa mga tawag sa system na maisagawa lamang kung ang mga ito ay na-access mula sa mga dating nakarehistrong lugar ng memorya. Upang markahan ang mga lugar ng memorya iminungkahi bagong system call msyscall().

Pinagmulan: opennet.ru