For noen dager siden kom nyheten om det Qualys forskerteam oppdaget sårbarhet for minnekorrupsjon i polkit pkexec, et root SUID-program som er installert som standard på alle større Linux-distribusjoner.
Denne sårbarheten lett å utnytte tillot enhver ikke-privilegert bruker å få fulle root-privilegier på en sårbar vert ved å utnytte dette sikkerhetsproblemet i standardkonfigurasjonen.
polkit (tidligere kjent som PolicyKit) er en komponent for systemomfattende rettighetskontroll på Unix-lignende operativsystemer. Det gir en organisert måte for ikke-privilegerte prosesser å kommunisere med privilegerte prosesser, pluss at det også er mulig å bruke polkit til å kjøre kommandoer med forhøyede privilegier ved å bruke pkexec-kommandoen etterfulgt av kommandoen den er ment å kjøre (med root-tillatelse).
Om sårbarhet
Sårbarhet ligger i pkexec, deretter koden din inneholder en pekerhåndteringsfeil, noen av dem ende opp med å referere til områder av minnet som ikke burde. Ved å utnytte denne feilen er det mulig å få administratorrettigheter nesten umiddelbart.
Katalisert som CVE-2021-4034, fikk sårbarheten en CVSS-score på 7,8, og Qualys-teamet forklarte i et blogginnlegg at:
Pkexec-feilen åpner døren til root-privilegier for en angriper. Qualys-forskere, sa han, har vist utnyttelse av standardinstallasjoner av Ubuntu, Debian, Fedora og CentOS, og andre Linux-distribusjoner antas også å være sårbare.
"Vellykket utnyttelse av dette sikkerhetsproblemet lar enhver ikke-privilegert bruker få root-privilegier på den sårbare verten. Qualys sikkerhetsforskere var i stand til uavhengig å verifisere sårbarheten, utvikle en utnyttelse og få fulle root-privilegier på standardinstallasjoner av Ubuntu, Debian, Fedora og CentOS. Andre Linux-distribusjoner er sannsynligvis sårbare og kan utnyttes. Denne sårbarheten har vært skjult i mer enn 12 år og påvirker alle versjoner av pkexec siden den første utgivelsen i mai 2009 (bekreft c8c3d83, "Add a pkexec(1) command").
"Så snart forskningsteamet vårt bekreftet sårbarheten, forpliktet Qualys seg til ansvarlig avsløring av sårbarhet og koordinerte med leverandører og åpen kildekode-distribusjoner for å kunngjøre sårbarheten."
Problemet oppstår når hoved()-funksjonen av pkexec behandle kommandolinjeargumenter og at argc er null. Funksjonen prøver fortsatt å få tilgang til argumentlisten og ender opp med å prøve å bruke en rgvvoid (ARGument Vector for kommandolinjeargumentstrenger). Som et resultat blir minnet lest og skrevet utenfor grensene, som en angriper kan utnytte for å injisere en miljøvariabel som kan føre til at vilkårlig kode lastes.
Det faktum at disse variablene kan gjeninnføres gjør koden sårbar. I det minste utnyttelsesteknikken som tilbys av Qualys (injiserer GCONV_PATH-variabelen i pkexec-miljøet for å kjøre et delt bibliotek som root) etterlater spor i loggfilene.
I en sikkerhetsrådgivning ga Red Hat følgende uttalelse:
"Red Hat er klar over en sårbarhet funnet i pkexec som lar en autentisert bruker utføre et rettighetsangrep."
"Den primære risikoen for kunder er potensialet for en uprivilegert bruker til å få administrative rettigheter på berørte systemer. Angriperen må ha påloggingstilgang til målsystemet for å utføre angrepet."
Det er verdt å nevne det Sårbarheten var allerede identifisert i 2013 og hadde blitt beskrevet i detalj i et blogginnlegg, selv om ingen PoC hadde blitt gitt:
"Lol, jeg skrev om denne polkit-sårbarheten i 2013. Jeg kunne ikke finne en faktisk utnyttelsesvei, men jeg identifiserte rotårsaken."
Til slutt hvis du er interessert i å kunne vite det om det, kan du se detaljene i følgende lenke.