Vulnerabilities in apport and systemd-coredump, allowing extraction of user system password hashes

Qualys avastas kaks haavatavust apport (CVE-2025-5054) ja systemd-coredump (CVE-2025-4598) tööriistades, mis on mĂ”eldud core-failide töötlemiseks, mis genereeritakse pĂ€rast protsesside ootamatut lĂ”petamist. Haavatavused vĂ”imaldavad pÀÀseda juurde core-failidele, mis on salvestatud pĂ€rast suid-rakenduste vĂ”i mĂ”nede sĂŒsteemsete taustprotsesside ootamatut lĂ”petamist, mille mĂ€lu vĂ”ib sisaldada vahemĂ€llu salvestatud mandaate vĂ”i krĂŒpteerimisvĂ”tmeid. Utility apport kutsutakse automaatselt Ubuntu-s core-dump'ide salvestamiseks, samas kui systemd-coredump on kasutusel Red Hat Enterprise Linux 9+, Fedora ja paljude teiste Linuxi distributsioonide puhul.

Kuvati rĂŒnnetehnika, mille kĂ€igus loodud tingimustes viidi suid-rakenduse unix_chkpwd ootamatuks lĂ”petamiseks ja pÀÀseti juurde core-failile, mis sisaldas seisundi dumpi avarii ajal. Salvestatud core-dumpis olid sĂŒsteemi kasutajate paroolide hashid, mis jĂ€id ootamatult lĂ”petatud protsessi mĂ€llu pĂ€rast sisu laadimist /etc/shadow failist. Haavatavuste Ă€rakasutamise vĂ”imalust demonstreeriti Ubuntu 24.04 ja Fedora 40/41 puhul, kuid arvatakse, et ka teised distributsioonid on sarnaste rĂŒnnakute suhtes vastuvĂ”tlikud.

MĂ”lemad haavatavused on pĂ”hjustatud jooksva oleku Ă€rakasutamise vĂ”imalusest, mis vĂ”imaldab vahetada ootamatult lĂ”petatud suid-protsessi teise protsessi vastu vahetult peale seda, kui tuum on algatavane avariiprosesside töötlemiseks, kuid enne, kui kasutaja ruumi kĂ€sitleja kontrollib protsessi parameetreid /proc/pid/files kaudu. Apport ja systemd-coredump kutsutakse ĂŒles jĂ€rgmiselt: tuum, saades teavet protsessi lĂ”petamisest, kutsub vĂ€lja kĂ€sitleja, mille on mÀÀranud failis /proc/sys/kernel/core_pattern, ja edastab sellele core-dump'i sisu sissevoolu kaudu.

Core-dumpi genereerimine ja kÀsitleja kÀivitamine ei toimu hetkega ja see aeg on piisav, et asendada lÔpetatud suid-protsess tavalise kasutaja protsessiga. Juhul kui asendamine toimub, arvab kÀivitunud core-dumpide kÀitleja, et rike toimus mitte suid-protsessis, vaid tavalises kasutaja rakenduses, ja seega salvestab core-faili, millele pÀÀseb ligi tavaline kasutaja, mitte ainult administraator.

RĂŒnnak apport'ile hĂ”lmab jĂ€rgmisi samme:

  • Loob uus protsess ja kutsub vĂ€lja execve() funktsiooni suid-programmi kĂ€ivitamiseks, nagu unix_chkpwd.
  • JĂ€tab piisavalt aega suid-protsessil konfidentsiaalsete andmete mĂ€lu laadimiseks (unix_chkpwd puhul eeldatakse, et laetakse kasutajate paroolide hashid failist /etc/shadow).
  • Enne kĂ€sku lĂ”petamist saadetakse protsessile signaal SIGSEGV vĂ”i SIGSYS ootamatuks lĂ”petamiseks.
  • Reaktsioonina ootamatule lĂ”petamisele genereerib tuum core-dump'i ja kĂ€ivitab apporti protsessi core-dump'i töötlemiseks kasutaja ruumis.
  • PĂ€rast apporti kĂ€ivitamist, kuid enne korrapĂ€rase töö alustamist saadetakse signaal SIGKILL ning protsess asendatakse teisega, millel pole suid-lippu. Et vĂ€ltida kontrolle apportis, luuakse uus protsess eri nimed ruumides (kasutaja, pid ja mount nimede ruumides).
  • Apport ĂŒhendub unix-soketiga /run/apport.socket loodud uue protsessi mĂ€lumĂ€lu nimedega ja edastab failide deskriptorid, et pÀÀseda juurde core-dump'ile.

Et uue protsessi jaoks vajalik identifikaator vastaks suid-protsessi identifikaatorile, peatatakse suid-protsess signaaliga SIGSTOP enne SIGSEGV signaali edastamist ja peatamise ajal kuvavad uued protsessid, kuni saavutatakse PID, mis on eelneva numbriga sarnane asendatavale suid-protsessile. PÀrast PID numbrite nihutamist saadetakse suid-protsessile signaalid SIGSEGV ja SIGCONT, seejÀrel saadetakse SIGKILL ning uued protsessid kÀivituvad pidevalt, et saavutada sama PID, mis suid-protsessil.

Mis puutub systemd-coredump'i, siis rĂŒnnaku tegemine on lihtsam, kuna pole vajadust asendada suid-protsessi, vaid on piisav saavutada AT_UID ja AT_EUID vastavus. Teisest kĂŒljest on systemd-coredump kirjutatud C keeles ja kĂ€ivitub piisavalt kiiresti, mis annab vĂ€he aega asendamiseks, erinevalt apport'ist, mis on kirjutatud Pythonis ja laadib alguses erinevaid pyc-failide. Sarnaste probleemide lahendamiseks viiakse systemd-coredump'i kunstlik viivitus — suid-faili kutsumisel edastatakse vĂ€ga suur hulga kĂ€surea argumendid, mis tekitavad vajaliku viivituse, mis tekib /proc/pid/cmdline'i töötlemise ajal.

Haavatavuste analĂŒĂŒsi kĂ€igus tuvastasid uurijad samuti, et systemd-coredump ei nĂ€ita \/proc\/sys\/kernel\/core_pattern'is "flag "%d"" seadistust, mis vĂ”imaldab rĂŒndajal pĂ”hjustada taustprotsesside kokkuvarisemise, mis töötavad root-Ă”igustes ja kĂ€ivitavad teisi protsesse, muutes kasutaja ID madalamatele Ă”igustele, millega rĂŒnnak teostatakse. See vĂ”imalus vĂ”imaldab rĂŒnnata mitte ainult setuid-rakendusi, vaid ka protsesse nagu sshd-session (OpenSSH), sd-pam (systemd) ja cron, et saada neis mĂ€lus olevaid konfidentsiaalseid andmeid, nagu privaatvĂ”tmed, paroolihĂ€kked \/etc\/shadow-st, kanaria mĂ€rgid kuhjas ja andmed adresseerimise ruumi (ASLR) randomiseerimise ĂŒletamiseks.

Pakettide vĂ€rskenduste avaldamise jĂ€lgimine distsipliinides on vĂ”imalik lehekĂŒlgedelt: Debian, Ubuntu, RHEL, openSUSE, Fedora, Gentoo, Arch. Haavatavuste blokeerimise ajutiseks lahenduseks soovitatakse keelata core-Ă€ri jÀÀkide salvestamine suid-programmide ja Ă”iguste vĂ€hendamise protsesside jaoks, seadistades parameeter \/proc\/sys\/fs\/suid_dumpable vÀÀrtuseks 0. Probleemi tĂ€ielikuks lahendamiseks on vajalik muudatused Linuxi tuumas, mis vĂ”imaldavad edastada infot kokkuvarisenud protsessi kohta pidfd-mekanismi kaudu (pidfd seondub konkreetsete protsessidega ja erinevalt pid-ist ei mÀÀrata teda uuesti).

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster