Vulnerabbiltà tal-għeruq fil-kernel tal-Linux u ċaħda tas-servizz fis-systemd

Riċerkaturi tas-sigurtà minn Qualys żvelaw dettalji ta 'żewġ vulnerabbiltajiet li jaffettwaw il-kernel Linux u l-maniġer tas-sistema systemd. Vulnerabilità fil-kernel (CVE-2021-33909) tippermetti utent lokali biex jikseb eżekuzzjoni ta 'kodiċi bi drittijiet ta' l-għeruq permezz ta 'manipulazzjoni ta' direttorji ibbed ħafna.

Il-periklu tal-vulnerabbiltà huwa aggravat mill-fatt li r-riċerkaturi kienu kapaċi jħejju sfruttamenti tax-xogħol li jaħdmu fuq Ubuntu 20.04/20.10/21.04, Debian 11 u Fedora 34 fil-konfigurazzjoni default. Huwa nnutat li distribuzzjonijiet oħra ma ġewx ittestjati, iżda teoretikament huma wkoll suxxettibbli għall-problema u jistgħu jiġu attakkati. Il-kodiċi sħiħ tal-isfrutta huwa wiegħed li jiġi ppubblikat wara li l-problema tiġi eliminata kullimkien, iżda għalissa huwa disponibbli biss prototip ta 'funzjonalità limitata, li jikkawża li s-sistema tiġġarraf. Il-problema ilha preżenti minn Lulju 2014 u taffettwa r-rilaxxi tal-qalba li jibdew minn 3.16. It-tiswija tal-vulnerabbiltà ġiet ikkoordinata mal-komunità u aċċettata fil-qalba fid-19 ta 'Lulju. Id-distribuzzjonijiet ewlenin diġà ġġeneraw aġġornamenti għall-pakketti tal-kernel tagħhom (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

Il-vulnerabbiltà hija kkawżata minn nuqqas ta 'verifika tar-riżultat ta' konverżjoni size_t għal int qabel ma twettaq operazzjonijiet fil-kodiċi seq_file, li joħloq fajls minn sekwenza ta 'rekords. In-nuqqas ta' verifika jista' jirriżulta f'kitbiet barra mill-limiti fil-buffer meta tinħoloq, immuntat, u tħassar struttura ta' direttorju imnaqqsa ħafna (daqs tal-passaġġ akbar minn 1 GB). Bħala riżultat, attakkant jista 'jikseb string ta' 10 bytes "//deleted" miktuba b'offset ta '"-2 GB - 10 bytes" li tipponta lejn iż-żona immedjatament qabel il-buffer allokat.

L-isfruttament ippreparat jeħtieġ 5 GB ta 'memorja u 1 miljun inode b'xejn biex jopera. L-isfruttament jaħdem billi jsejjaħ mkdir() biex joħloq ġerarkija ta' madwar miljun subdirettorju biex jinkiseb daqs tal-mogħdija tal-fajl li jaqbeż 1 GB. Dan id-direttorju huwa mmuntat permezz ta 'bind-mount fi spazju tal-isem tal-utent separat, u wara titħaddem il-funzjoni rmdir() biex titneħħa. B'mod parallel, jinħoloq ħajt li jgħabbi programm eBPF żgħir, li huwa mblukkat fl-istadju wara li jiċċekkja l-psewdocode eBPF, iżda qabel il-kumpilazzjoni JIT tiegħu.

Fl-ispazju tal-isem tal-utent mhux privileġġjat, jinfetaħ il-fajl /proc/self/mountinfo u jinqara l-pathname twil tad-direttorju immuntat fuq il-bind, li jirriżulta fis-sekwenza "//deleted" li tinkiteb fiż-żona qabel il-bidu tal-buffer. Il-pożizzjoni għall-kitba tal-linja tintgħażel sabiex tissostitwixxi l-istruzzjoni fil-programm eBPF diġà ttestjat iżda li għadu mhux ikkumpilat.

Sussegwentement, fil-livell tal-programm eBPF, kitba mhux ikkontrollata barra mill-buffer tiġi trasformata f'kapaċità kkontrollata li taqra u tikteb fi strutturi oħra tal-kernel permezz tal-manipulazzjoni tal-istrutturi btf u map_push_elem. Bħala riżultat, l-isfruttament jiddetermina l-post tal-buffer modprobe_path[] fil-memorja tal-qalba u jikteb fuqha l-mogħdija "/sbin/modprobe" fiha, li tippermettilek tibda t-tnedija ta 'kwalunkwe fajl eżekutibbli bi drittijiet tal-għeruq fil-każ ta' sejħa request_module(), li tiġi eżegwita, pereżempju, meta toħloq socket netlink.

Ir-riċerkaturi jipprovdu diversi soluzzjonijiet li huma effettivi biss għal sfruttament speċifiku, iżda ma jeliminawx il-problema nnifisha. Huwa rrakkomandat li tissettja "/proc/sys/kernel/unprivileged_userns_clone" għal 0 biex tiddiżattiva direttorji tal-immuntar fi spazju tal-isem tal-ID tal-utent separat, u "/proc/sys/kernel/unprivileged_bpf_disabled" għal 1 biex tiddiżattiva t-tagħbija tal-programmi eBPF fil-kernel.

Ta 'min jinnota li filwaqt li janalizzaw attakk alternattiv li jinvolvi l-użu tal-mekkaniżmu FUSE minflok bind-mound biex jintramaw direttorju kbir, ir-riċerkaturi ltaqgħu ma' vulnerabbiltà oħra (CVE-2021-33910) li taffettwa l-maniġer tas-sistema systemd. Irriżulta li meta tipprova timmonta direttorju b'daqs ta 'passaġġ li jaqbeż it-8 MB permezz tal-FUSE, il-proċess tal-inizjalizzazzjoni tal-kontroll (PID1) jispiċċa mill-memorja tal-munzell u jiġġarraf, li jpoġġi s-sistema fi stat ta' "paniku".

Il-problema hija li systemd isegwi u janalizza l-kontenut ta '/proc/self/mountinfo, u jipproċessa kull punt ta' muntaġġ fil-funzjoni unit_name_path_escape(), li twettaq operazzjoni strdupa() li tpoġġi d-data fuq il-munzell aktar milli fil-memorja allokata dinamikament . Peress li d-daqs massimu tal-munzell huwa limitat permezz ta 'RLIMIT_STACK, l-ipproċessar ta' passaġġ kbir wisq għall-punt tal-muntaġġ jikkawża li l-proċess PID1 jikkraxxja u jwaqqaf is-sistema. Għal attakk, tista 'tuża l-aktar modulu FUSE sempliċi flimkien ma' l-użu ta 'direttorju ibbed ħafna bħala punt ta' muntaġġ, li d-daqs tal-passaġġ tiegħu jaqbeż it-8 MB.

Il-problema ilha tidher minn systemd 220 (April 2015), diġà ġiet iffissata fir-repożitorju tas-systemd prinċipali u ffissata fid-distribuzzjonijiet (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). Notevolment, fir-rilaxx systemd 248 l-isfruttament ma jaħdimx minħabba bug fil-kodiċi systemd li jikkawża li l-ipproċessar ta '/proc/self/mountinfo ifalli. Huwa interessanti wkoll li fl-2018, qamet sitwazzjoni simili u meta ppruvaw jikteb sfruttament għall-vulnerabbiltà CVE-2018-14634 fil-kernel Linux, ir-riċerkaturi Qualys iltaqgħu ma 'tliet vulnerabbiltajiet kritiċi fis-systemd.

Sors: opennet.ru

Żid kumment