Vulnerabilitetet në apport dhe systemd-coredump, të cilat lejojnë nxjerrjen e hash-eve të fjalëkalimeve të përdoruesve të sistemit.

Kompania Qualys identifikoi dy vulnerabilitete në mjetet apport (CVE-2025-5054) dhe systemd-coredump (CVE-2025-4598), të cilat përdoren për trajtimin e skedarëve core, të gjeneruar pas përfundimit të papritur të proceseve. Vulnerabilitetet lejojnë qasjen në skedarët core të ruajtur pas përfundimit të papritur të aplikacioneve suid ose disa proceseve të sistemit, në memorien e të cilëve mund të përmbahen akreditive të ruajtura apo çelësa kriptimi. Mjeti apport thirret automatikisht për ruajtjen e core-dampëve në Ubuntu, ndërsa systemd-coredump në Red Hat Enterprise Linux 9+, Fedora dhe shumë distribucione të tjera Linux.

Ka demonstruar një teknikë sulmi, në të cilën krijoheshin kushte për përfundimin e papritur të aplikacionit suid unix_chkpwd dhe për të marrë qasje në skedarin core me dump-in e gjendjes gjatë crash-it. Në dump-in e ruajtur core ishin pranishme heshat e fjalëkalimeve të përdoruesve të sistemit, që kishin mbetur në memorien e procesit që kishte përfunduar papritur pas ngarkimit të përmbajtjes nga /etc/shadow. Mundësia e shfrytëzimit të vulnerabiliteteve është demonstruar në Ubuntu 24.04 dhe Fedora 40/41, por supozohet se edhe distribucione të tjera janë të ndjeshme ndaj këtyre sulmeve.

Të dy vulnerabilitetet shkaktohen nga një gjendje garash, e cila lejon që procesi suid i përfunduar papritur të zëvendësohet me një proces tjetër në momentin pas fillimit të trajtimit nga bërthama të përfundimit të papritur, por para se të verifikohen nga menaxheri i hapësirës së përdoruesit parametrat e procesit përmes /proc/pid/files. Thirrja e apport dhe systemd-coredump bëhet si më poshtë: bërthama, pas marrjes së informacionit për përfundimin e procesit, thërret menaxherin, i cili është treguar në skedarin /proc/sys/kernel/core_pattern, dhe pastaj i dërgon përmbajtjen e core-dampit përmes rrjedhës hyrëse.

Generimi i core-dampit dhe ekzekutimi i menaxherit nuk ndodhin menjëherë dhe ka mjaft kohë për të zëvendësuar procesin e përfunduar suid me një proces të zakonshëm të përdoruesit. Në rast zëvendësimi, menaxheri i core-dampëve do të mendojë se dështimi ndodhi jo në procesin suid, por në një aplikacion të zakonshëm të përdoruesit dhe, për pasojë, do të ruajë skedarin core me mundësinë e qasjes së përdoruesit të zakonshëm, jo vetëm administratorit.

Sulmi ndaj apport kufizohet në hapat e mëposhtëm:

  • NjĂ« proces i ri krijohet dhe thirret funksioni execve() pĂ«r tĂ« nisur programin suid, siç Ă«shtĂ« unix_chkpwd.
  • PĂ«rjashtohet koha e nevojshme pĂ«r ngarkimin e tĂ« dhĂ«nave konfidenciale nĂ« memorien e programit suid (nĂ« rastin e unix_chkpwd pritet ngarkimi i heshave tĂ« fjalĂ«kalimeve tĂ« tĂ« gjithĂ« pĂ«rdoruesve tĂ« sistemit nga skedari /etc/shadow).
  • Para pĂ«rfundimit tĂ« ekzekutimit tĂ« urdhrit, procesit i dĂ«rgohet sinjali SIGSEGV ose SIGSYS pĂ«r pĂ«rfundimin e papritur.
  • NĂ« pĂ«rgjigje tĂ« pĂ«rfundimit tĂ« papritur, bĂ«rthama formon core-dampin dhe nis procesin apport pĂ«r trajtimin e core-dampit nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit.
  • Pas nisjes sĂ« apport, por para se tĂ« fillohet analiza procesit qĂ« ka pĂ«rfunduar papritur, i dĂ«rgohet sinjali SIGKILL dhe vetĂ« procesi zĂ«vendĂ«sohet me njĂ« tjetĂ«r pa flagun suid. pĂ«r tĂ« anashkaluar verifikimet nĂ« apport, procesi i ri krijohet brenda hapĂ«sirave tĂ« veçanta tĂ« emrave (user, pid dhe mount namespace).
  • apport lidhet me soketin unix /run/apport.socket nĂ« hapĂ«sirĂ«n e emrave tĂ« montimit tĂ« krijuar pĂ«r procesin e ri dhe dĂ«rgon njĂ« deshifrim skedari pĂ«r qasje nĂ« core-damp.

Për të marrë identifikuesin e nevojshëm për procesin e ri, i cili përputhet me identifikuesin e procesit suid, përpara dërgimit të sinjalit SIGSEGV procesi suid ndalohet me sinjalin SIGSTOP dhe gjatë ndalimit krijohen ciklikisht procese të reja derisa të fitohet PID me numrin paraprak, të afërt me procesin suid që po zëvendësohet. Pas zhvendosjes së numrave të PID, proceseve suid u dërgohen sinjalet SIGSEGV dhe SIGCONT, pas të cilave dërgohet SIGKILL dhe ciklikisht krijohen procese të reja për të arritur të njëjtin PID si ai i procesit suid.

Sa i përket systemd-coredump, nga njëra anë, realizimi i sulmit ndaj tij është më i lehtë, pasi nuk ka nevojë të zëvendësohet procesi suid me një proces në një hapësirë të veçantë përdoruesi dhe mjafton të arrihet përputhja e AT_UID dhe AT_EUID. Nga ana tjetër, systemd-coredump është shkruar në gjuhën C dhe niset mjaft shpejt, gjë që ofron pak më pak kohë për zëvendësim, në krahasim me apport, i cili është shkruar në Python dhe gjatë procesit të inicializimit ngarkon skedarë të ndryshëm pyc. Ky problem zgjidhet përmes ngadalësimit të qëllimshëm të systemd-coredump - gjatë thirrjes së skedarit suid dërgohet një numër shumë i madh argumentesh komandash, gjë që krijon vonesën e kërkuar që ndodh gjatë analizës së /proc/pid/cmdline.

Gjatë analizës së dobësive, hulumtuesit zbuluan gjithashtu se systemd-coredump, gjatë konfigurimit të thirrjeve, nuk specifikon një flamur "%d" në /proc/sys/kernel/core_pattern, gjë që i lejon sulmuesit të shkaktojnë ndalimin e proceseve në sfond që ekzekutohen me të drejta root dhe që gjenerojnë procese të tjera, duke ndryshuar identifikuesin e përdoruesit në një përdorues jo të privilegjuar nën të cilin kryhet sulmi. Kjo mundësi lejon sulme jo vetëm ndaj aplikacioneve setuid, por edhe ndaj proceseve si sshd-session (OpenSSH), sd-pam (systemd) dhe cron, për të marrë informacionin e mbajtur në memorje, siç janë çelësat privatë, hashes e fjalëkalimeve nga /etc/shadow, etiketat canary nga staku dhe të dhënat për të anashkaluar randomizimin e hapësirës adresuese (ASLR).

Mund të ndjekim publikimin e azhurnimeve të pakove në distribucione të tilla si: Debian, Ubuntu, RHEL, openSUSE, Fedora, Gentoo, Arch. Si një zgjidhje për të bllokuar dobësitë, sugjerohet të çaktivizoni ruajtjen e core-dumps për programet suid dhe për proceset që dërgojnë privilegjet, duke caktuar parametrin /proc/sys/fs/suid_dumpable në vlerën 0. Për të eliminuar plotësisht problemin, është e nevojshme të bëhen ndryshime në bërthamën e Linux-it, që implementon mundësinë e transfertës së informacionit për proceset që janë ndaluar aksidentalisht përmes mekanizmit pidfd (pidfd lidhet me procese të caktuara dhe, ndryshe nga pid, nuk ri-caktohet).

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster