LooneyPwner - Exploit eszköz a "Looney Tunables" Glibc local root sérülékenységhez

Októberben felfedeztek egy (a legtöbb Linux disztribúciót érintő) local root sérülékenységet, amelyet "Looney Tunables" névre kereszteltek. A LooneyPwner egy PoC exploit a Looney Tunables-hez.

Hozzászólások

Elmentettem, hátha elfelejtem valahol a jelszót.

trey @ gépház

https://www.qualys.com/2023/10/03/cve-2023-4911/looney-tunables-local-p…

Két gyors komment, aztán lehet szidni:

1. A C láthatóan nehéz nyelv, a programozók kellően nagy része képtelen még egy alapvető string parse-olás hibátlan megírására is. Mennyivel jobb a kb. összes többi programnyelvben létező string.split függvény, ugye?

2. A Linux és hasonlóak is szarok, mert a setuid binárisoknak hála, hatalmas a támadási felület, bármelyik shared library vagy setuid binárison belüli hiba local roothoz vezet. Hogy nem sikerült még kiirtani ezt a "feature"-t?

C-ben túl könnyű olyan kódot írni, ami nem biztonságos, mert:

- hiányosak a beépített adattípusok (az emberek maguknak írnak string darabolást és jellemzően belebuknak)

- a legkisebb hibának is súlyos következménye van (egy menedzselt memóriájú nyelvhez képest)

biztonságos szoftver tervezés- és fejlesztés.

Ez hogyan kapcsolodik az elszabott string parszolashoz? Prog1 elso hazi az egyetemen. Amelyik nyelvben ennyire konnyu ezt elrontani (es nem golyak rontjak el!), raadasul ilyen vegzetesek a kovetkezmenyek, az szar. Persze kernelhez lehet, hogy nincs mas, jobb valasztas; de akkor meg miert nincsenek alap adattipusok es util fuggvenyeik hatekonyan megcsinalva?

A masik: irjak a joco altal linkelt disclosureben, hogy a fuzzer 1 mp alatti idovel triggerelte a bugot. Ez szerintem sokkal inkabb kapcsolodik a biztonsagos szoftverfejleszteshez, barmit is jelentsen ez.

A C láthatóan nehéz nyelv

Nem, nem nehez, sot, kifejezetten egyszeru. Ami gond, hogy keves safety net van benne, ami segitene a dev-et. Es ha valami ritka bug van egy ritkan hasznalt branch-ban, akkor az biza' ott marad.

a setuid binárisoknak hála, hatalmas a támadási felület

selinux ota mar nem, de valoban nem artana lassan kicsit rendet rakni a jogosultsagok korul linux disztrokban. szerintem ez leginkabb egyebkent a maradi userek miatt maradt meg mai napig ilyennek, nem azert, mert maceras vagy bonyi lenne.

Hát, úgy tűnik, rocky8 nem fenyegetett

 

GLibC Vulnerability Checker (GVC)
------------------------------------
System is not vulnerable. Installed glibc version: 2.28
------------------------------------
Note: If vulnerable, please consider patching your system ASAP.
 

http://www.micros~1
Rekurzió: lásd rekurzió.

Úgy általában a legtöbb mainstream disztró nem fenyegetett, még a régi verziós LTS-sek sem (backport miatt) mert már rég foltozták bennük a glibc csomagot. Ebbe csak a lusták, meg a jajj, nem frissítek, mert lassít, jajj eltörik, ami működik, ahhoz nem nyúlunk típusú balfék emberkék futnak bele tátott szájjal. Aki kicsit is otthon van a Linuxban, ért a rendszer karban tartásához, az ne szalad ebbe bele, általában marha rövid határidővel javítani szokták, semmilyen bullshit patch keddre nem szoktak várni, ahogy a MS szokott. Ezért sem kell vírusirtó Linuxra, az ilyen sérülékenységek olyan gyorsan ki vannak javítva, hogy a kihasználó kódnak nyekkeni nincs ideje, mert mire elterjednek, addigra ellehetetlenülnek a frissebb verzió miatt.

Ez a checker se jó, mert a 2.34-2.36-os verziók érintettek, de mivel két hónapos szkript, ezért nem tudja, hogy a 2.37 és a 2.38 már javítva van. Nálam Arch-on a 2.38-ra is azt írja, hogy sérülékeny, engedem is neki, hogy futassa a tényleges exploitot, de az meg nem fut le megfelelően, nem tud root jogot szerezni, belefut egy végtelen CLI loop-ba, amiben az su --help kimenetét írogatja, de nem történik meg a lefutás, nincsenek azok a tty sorok és # prompt, aminek lennie kéne a git-es oldal alapján.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Oszt raspberry pi se.
 

GLibC Vulnerability Checker (GVC)
------------------------------------
System is not vulnerable. Installed glibc version: 2.31

 uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

http://www.micros~1
Rekurzió: lásd rekurzió.

22.04-es Ubuntu az lenne, ha lenne rajta gcc, így nem megy (az persze minden további nélkül lehetne, hogy binárist tölt le ilyenkor)

http://www.micros~1
Rekurzió: lásd rekurzió.

20.04 Ubuntu se. Szóval biztos nagyon félelmetes dolog, de nem lehet azt mondani, hogy #mindmeghalunk

GLibC Vulnerability Checker (GVC)
------------------------------------
System is not vulnerable. Installed glibc version: 2.31

http://www.micros~1
Rekurzió: lásd rekurzió.

Nem csak el van rontva / hiányos az ellenőrzés?

if [[ $(echo "$glibc_version 2.34" | awk '{print ($1 >= $2)}') -ne 0 ]]; then
   echo "${RED}Vulnerable version of glibc detected: $glibc_version${RESET}"
 

Tehát ha a glibc version >= 2.34, akkor affected. Nekem 2.38 van, vulnerable-nek írja, de nem működik rajta az exploit, pedig órákig futtattam.