OpenBSD privilēģiju eskalācijas un autentifikācijas apieÅ”anas ievainojamÄ«bas smtpd, ldapd un radiusd

Uzņēmums Qualys atklāts četri ievainojamÄ«bas OpenBSD, no kuriem viens ļauj attālināti izveidot savienojumu bez autentifikācijas ar dažiem tÄ«kla pakalpojumiem, bet pārējie trÄ«s palielina jÅ«su privilēģijas sistēmā. Qualys ziņojumā tika atzÄ«mēta ātrā OpenBSD izstrādātāju reakcija - visas problēmas bija likvidēta Š² OpenBSD 6.5 Šø OpenBSD 6.6 40 stundu laikā pēc privāta paziņojuma.

Attālināti izmantojamo ievainojamību izraisa kļūda, izsaucot autentifikācijas apstrādātāju libc bibliotēkā, kas izsauc
programma /usr/libexec/auth/login_style nodod argumentus komandrindā. Tostarp, izsaucot login_style, izmantojot izvēles parametru ā€œ-s serviceā€, ir iespējams pārsÅ«tÄ«t protokola nosaukumu. Ja lietotājvārda sākumā izmantojat rakstzÄ«mi "-", Å”is vārds tiks uzskatÄ«ts par opciju, izpildot login_style. AttiecÄ«gi, ja autentifikācijas laikā kā lietotājvārdu norādāt ā€œ-schallengeā€ vai ā€œ-schallenge:passwdā€, login_style pieprasÄ«jumu uztvers kā pieprasÄ«jumu izmantot apdarinātāju. S/Atslēga.

Problēma ir tā, ka S/Key protokols login_style tiek atbalstīts tikai formāli, bet faktiski tiek ignorēts, izvadot veiksmīgas autentifikācijas zīmi. Tādējādi uzbrucējs, uzdodoties par lietotāju "-challenge", var apiet autentifikāciju un iegūt piekļuvi, nesniedzot paroli vai atslēgas. Problēma var ietekmēt visus tīkla pakalpojumus, kas autentifikācijai izmanto standarta libc zvanus. Piemēram, iespēja apiet autentifikāciju tiek atbalstīta smtpd (AUTH PLAIN), ldapd un radiusd.

IevainojamÄ«ba neparādās sshd, jo tai ir papildu aizsardzÄ«ba, kas pārbauda lietotāja klātbÅ«tni sistēmā. Tomēr sshd var izmantot, lai pārbaudÄ«tu sistēmas ievainojamÄ«bu - piekļūstot lietotājvārdam "-sresponse:passwd", savienojums tiek pārtraukts, jo sshd gaida login_passwd, lai atgrieztu izaicinājuma parametrus, un login_passwd gaida trÅ«kstoÅ”os parametrus. jānosÅ«ta (nosaukums "- sresponse" tiek uzskatÄ«ts par opciju). Vietējais uzbrucējs varētu mēģināt apiet autentifikāciju utilÄ«tprogrammā su, taču nosaukuma "-sresponse" nodoÅ”ana izraisa procesa avāriju, atgriežot nulles rādÄ«tāju, izpildot funkciju getpwnam_r("-schallenge", ...).

Citas ievainojamības:

  • CVE-2019-19520 Vietējo privilēģiju eskalācija, manipulējot ar xlock utilÄ«tu, kas tiek piegādāts kopā ar sgid karogu, mainot grupu uz "auth". Xlock kodā ceļu uz bibliotēkām pārdefinÄ“Å”ana ir aizliegta tikai tad, ja tiek mainÄ«ts lietotāja identifikators (setuid), kas ļauj uzbrucējam mainÄ«t vides mainÄ«go ā€œLIBGL_DRIVERS_PATHā€ un organizēt savas koplietotās bibliotēkas ielādi, kuras kods tiks izpildÄ«ts. pēc privilēģiju paaugstināŔanas ā€œauthā€ grupai.
  • CVE-2019-19522 ā€” ļauj vietējam lietotājam, kas ir ā€œauthā€ grupas dalÄ«bnieks, palaist kodu kā root, ja sistēmā ir iespējota S/Key vai YubiKey autentifikācija (nav aktÄ«va pēc noklusējuma). PievienoÅ”anās grupai ā€œauthā€, kurai var piekļūt, izmantojot iepriekÅ” minēto xlock ievainojamÄ«bu, varat rakstÄ«t failus /etc/skey un /var/db/yubikey direktorijās. Piemēram, uzbrucējs var pievienot jaunu failu /etc/skey/root, lai Ä£enerētu vienreizējas atslēgas autentifikācijai kā saknes lietotājs, izmantojot S/Key.
  • CVE-2019-19519 ā€” iespēja palielināt resursu ierobežojumus, manipulējot ar su lietderÄ«bu. Ja ir norādÄ«ta opcija "-L", kas izraisa ciklisku autentifikācijas mēģinājumu atkārtoÅ”anos, ja tie neizdodas, lietotāja klase tiek iestatÄ«ta tikai vienreiz un netiek atiestatÄ«ta nākamajos mēģinājumos. Uzbrucējs var izpildÄ«t ā€œsu -l -Lā€ pirmajā mēģinājumā ievadÄ«t kāda cita pieteikumvārdu ar citu konta klasi, bet otrajā mēģinājumā viņŔ var veiksmÄ«gi autentificēties kā pats. Šādā situācijā uz lietotāju attieksies ierobežojumi, pamatojoties uz lietotāja klasi, kas norādÄ«ta pirmajā mēģinājumā (piemēram, maksimālais procesu skaits vai procesa atmiņas lielums). Metode darbojas tikai aizņēmuma ierobežojumiem no nepievilcÄ«giem lietotājiem, jo ā€‹ā€‹root lietotājam ir jābÅ«t riteņu grupā).

Turklāt var atzÄ«mēt Ä«stenoÅ”ana OpenBSD ā€” jauna metode sistēmas izsaukumu derÄ«guma pārbaudei, kas vēl vairāk sarežģī ievainojamÄ«bu izmantoÅ”anu. Å Ä« metode ļauj izpildÄ«t sistēmas zvanus tikai tad, ja tiem piekļūst no iepriekÅ” reÄ£istrētiem atmiņas apgabaliem. Lai atzÄ«mētu atmiņas apgabalus ierosināts jauns sistēmas zvans msyscall().

Avots: opennet.ru