Dobësitë e anashkalimit të përshkallëzimit të privilegjeve dhe vërtetimit të OpenBSD në smtpd, ldapd dhe radiusd

Kompania Qualys zbuluar katër dobësitë në OpenBSD, njëra prej të cilave ju lejon të lidheni nga distanca pa vërtetim me disa shërbime të rrjetit, dhe tre të tjerat rrisin privilegjet tuaja në sistem. Raporti Qualys vuri në dukje përgjigjen e shpejtë të zhvilluesve të OpenBSD - të gjitha problemet ishin eliminohet в OpenBSD 6.5 и OpenBSD 6.6 brenda 40 orëve pas njoftimit privat.

Dobësia e shfrytëzuar nga distanca shkaktohet nga një gabim në thirrjen e mbajtësit të vërtetimit në bibliotekën libc, i cili thërret
programi /usr/libexec/auth/login_style duke kaluar argumente në vijën e komandës. Përfshirë kur telefononi login_style duke përdorur parametrin opsional "-s service", është e mundur të transferoni emrin e protokollit. Nëse përdorni një karakter "-" në fillim të një emri përdoruesi, ky emër do të trajtohet si një opsion kur ekzekutohet login_style. Prandaj, nëse specifikoni "-schallenge" ose "-schallenge:passwd" si emër përdoruesi gjatë vërtetimit, atëherë login_style do ta perceptojë kërkesën si një kërkesë për të përdorur mbajtësin S/Çelësi.

Problemi është se protokolli S/Key në login_style mbështetet vetëm zyrtarisht, por në fakt injorohet me daljen e një shenje të vërtetimit të suksesshëm. Kështu, një sulmues mundet, duke u paraqitur si "-sfida" e përdoruesit, të anashkalojë vërtetimin dhe të fitojë akses pa dhënë një fjalëkalim ose çelësa. Të gjitha shërbimet e rrjetit që përdorin thirrje standarde libc për vërtetim ndikohen potencialisht nga problemi. Për shembull, aftësia për të anashkaluar vërtetimin mbështetet në smtpd (AUTH PLAIN), ldapd dhe radiusd.

Dobësia nuk shfaqet në sshd, pasi ka mbrojtje shtesë që kontrollon praninë e përdoruesit në sistem. Sidoqoftë, sshd mund të përdoret për të testuar cenueshmërinë e një sistemi - kur hyni në emrin e përdoruesit "-sresponse:passwd", lidhja varet, pasi sshd pret që login_passwd të kthejë parametrat e sfidës dhe login_passwd pret që parametrat që mungojnë. të dërgohet (emri "- sresponse" trajtohet si opsion). Një sulmues lokal mund të përpiqet potencialisht të anashkalojë vërtetimin në programin su, por kalimi i emrit "-sresponse" shkakton që procesi të prishet duke kthyer një tregues null kur ekzekuton funksionin getpwnam_r("-schallenge", ...).

Dobësi të tjera:

  • CVE-2019-19520 Përshkallëzimi i privilegjeve lokale nëpërmjet manipulimit të programit xlock të furnizuar me flamurin sgid duke e ndryshuar grupin në "auth". Në kodin xlock, ripërcaktimi i shtigjeve drejt bibliotekave është i ndaluar vetëm kur ndryshohet identifikuesi i përdoruesit (setuid), i cili i lejon sulmuesit të ndryshojë variablin e mjedisit "LIBGL_DRIVERS_PATH" dhe të organizojë ngarkimin e bibliotekës së tij të përbashkët, kodi i së cilës do të ekzekutohet. pasi i ngriti privilegjet grupit “auth”.
  • CVE-2019-19522 - Lejon një përdorues lokal që është anëtar i grupit "auth" të ekzekutojë kodin si rrënjë kur vërtetimi S/Key ose YubiKey është i aktivizuar në sistem (jo aktiv si parazgjedhje). Bashkimi me grupin "auth", i cili mund të arrihet duke shfrytëzuar dobësinë e lartpërmendur në xlock, ju lejon të shkruani skedarë në drejtoritë /etc/skey dhe /var/db/yubikey. Për shembull, një sulmues mund të shtojë një skedar të ri /etc/skey/root për të gjeneruar çelësa një herë për vërtetim si përdorues rrënjë nëpërmjet S/Key.
  • CVE-2019-19519 - mundësia e rritjes së kufijve të burimeve përmes manipulimit të ndërmarrjes. Kur specifikohet opsioni "-L", i cili bën që përpjekjet e vërtetimit të përsëriten në mënyrë ciklike nëse dështojnë, klasa e përdoruesit vendoset vetëm një herë dhe nuk rivendoset në përpjekjet pasuese. Një sulmues mund të ekzekutojë "su -l -L" në përpjekjen e parë për të hyrë në hyrjen e dikujt tjetër me një klasë tjetër llogarie, por në përpjekjen e dytë ai mund të vërtetojë me sukses si veten e tij. Në këtë situatë, përdoruesi do t'i nënshtrohet kufizimeve bazuar në klasën e përdoruesit të specifikuar në përpjekjen e parë (për shembull, numri maksimal i proceseve ose madhësia e kujtesës për një proces). Metoda funksionon vetëm për kufijtë e huazimit nga përdoruesit e paprivilegjuar, pasi përdoruesi rrënjë duhet të jetë në grupin e rrotave).

Për më tepër, mund të vërehet zbatimi në OpenBSD, një metodë e re për të kontrolluar vlefshmërinë e thirrjeve të sistemit, e cila e ndërlikon më tej shfrytëzimin e dobësive. Metoda lejon që thirrjet e sistemit të ekzekutohen vetëm nëse ato aksesohen nga zonat e memories të regjistruara më parë. Për të shënuar zonat e kujtesës propozuar thirrje të re të sistemit msyscall ().

Burimi: opennet.ru