Ny vulnerability root amin'ny kernel Linux sy ny fandavana ny serivisy amin'ny systemd

Ireo mpikaroka momba ny fiarovana avy amin'ny Qualys dia nanambara ny antsipirian'ny vulnerability roa misy fiantraikany amin'ny kernel Linux sy ny mpitantana ny rafitra systemd. Ny vulnerability ao amin'ny kernel (CVE-2021-33909) dia ahafahan'ny mpampiasa eo an-toerana hahatratra ny famonoana kaody miaraka amin'ny zon'ny faka amin'ny alΓ lan'ny fanodikodinana ny lahatahiry misy akany.

Ny loza ateraky ny vulnerability dia miharatsy noho ny hoe ny mpikaroka dia afaka nanomana ny fitrandrahana miasa izay miasa amin'ny Ubuntu 20.04 / 20.10 / 21.04, Debian 11 ary Fedora 34 ao amin'ny konfigurasi default. Marihina fa ny fizarana hafa dia tsy mbola nosedraina, fa ara-teorika ihany koa dia iharan'ny olana ary mety ho voatafika. Ny fehezan-dalΓ na feno amin'ny fanararaotana dia nampanantenaina fa havoaka aorian'ny famongorana ny olana eny rehetra eny, saingy amin'izao fotoana izao dia misy prototype misy fampiasa voafetra ihany no misy, ka mahatonga ny rafitra hianjera. Ny olana dia efa nanomboka tamin'ny Jolay 2014 ary misy fiantraikany amin'ny famoahana kernel manomboka amin'ny 3.16. Ny famahana ny vulnerability dia nifanaraka tamin'ny vondrom-piarahamonina ary nekena tao amin'ny kernel tamin'ny 19 Jolay. Ny fizarana lehibe dia efa namoaka fanavaozana ny fonosana kernel (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

Ny vulnerability dia vokatry ny tsy fanarahana ny vokatry ny fiovam-po size_t mankany int alohan'ny hanaovana asa ao amin'ny code seq_file, izay mamorona rakitra avy amin'ny filaharan'ny firaketana. Ny tsy fanarahana ny fanamarinana dia mety hiteraka fanoratana ivelan'ny sisin-tany amin'ny buffer rehefa mamorona, mametaka ary mamafa rafitra lahatahiry misy akany (lehibe kokoa noho ny 1 GB). Vokatr'izany, ny mpanafika dia afaka mahatratra 10-byte string "//deleted" nosoratana tamin'ny offset "-2 GB - 10 bytes" manondro ny faritra mialoha ny buffer natokana.

Ny fitrandrahana efa voaomana dia mitaky fitadidiana 5 GB ary inode maimaim-poana 1 tapitrisa mba hiasa. Ny fanararaotana dia miasa amin'ny fiantsoana mkdir() mba hamoronana ambaratongam-pizarana iray tapitrisa eo ho eo mba hahatratrarana ny haben'ny rakitra mihoatra ny 1 GB. Ity lahatahiry ity dia apetraka amin'ny alΓ lan'ny bind-mount amin'ny anaran'ny mpampiasa manokana, aorian'izay dia mihazakazaka ny rmdir() mba hanesorana azy. Mifanaraka amin'izany, misy kofehy iray noforonina izay mametaka programa eBPF kely, izay voasakana eo amin'ny sehatra rehefa avy nanamarina ny pseudocode eBPF, fa alohan'ny fanangonana JIT azy.

Ao amin'ny anaran'ny mpampiasa tsy manana tombontsoa, ​​dia misokatra ny rakitra / proc / self / mountinfo ary vakiana ny anaran-dΓ lana lava amin'ny lahatahiry voafatotra, ka ny tady "// voafafa" dia nosoratana tamin'ny faritra alohan'ny hanombohan'ny buffer. Ny toerana hanoratana ny tsipika dia nofantenana mba hanoratana ny toromarika ao amin'ny programa eBPF efa voasedra nefa tsy mbola natambatra.

Manaraka izany, eo amin'ny sehatry ny programa eBPF, ny fanoratana ivelan'ny buffer tsy voafehy dia ovaina ho fahaizana mifehy mamaky sy manoratra amin'ny rafitra kernel hafa amin'ny alΓ lan'ny fanodikodinana ny rafitra btf sy map_push_elem. Vokatr'izany, ny exploit dia mamaritra ny toerana misy ny modprobe_path [] buffer ao amin'ny fitadidiana kernel ary mametaka ny lalana "/ sbin / modprobe" ao anatiny, izay ahafahanao manomboka ny fandefasana rakitra azo tanterahana miaraka amin'ny zon'ny faka raha sendra misy a request_module() antso, izay tanterahina, ohatra, rehefa mamorona socket netlink.

Ny mpikaroka dia manome vahaolana maromaro izay tsy mahomby afa-tsy amin'ny fitrandrahana manokana, fa tsy manafoana ny olana mihitsy. Amporisihina ny hametraka "/proc/sys/kernel/unprivileged_userns_clone" ho 0 mba hanesorana ny lahatahiry fametrahana ao amin'ny anaran'ny mpampiasa ID misaraka, ary ny "/proc/sys/kernel/unprivileged_bpf_disabled" ho 1 hanesorana ny fandefasana programa eBPF ao anaty kernel.

Tsara homarihina fa raha nandinika fanafihana iray hafa mifandraika amin'ny fampiasana ny mekanika FUSE fa tsy ny bid-mound mba hametrahana lahatahiry lehibe, ny mpikaroka dia nahita vulnerable hafa (CVE-2021-33910) misy fiantraikany amin'ny mpitantana ny rafitra systemd. Hita fa rehefa manandrana mametraka lahatahiry manana habe mihoatra ny 8 MB amin'ny alΓ lan'ny FUSE, ny fizotran'ny fanombohana fanaraha-maso (PID1) dia lany amin'ny fitadidiana stack sy fianjerana, izay mametraka ny rafitra amin'ny fanjakana "sahiran-tsaina".

Ny olana dia ny systemd dia manara-maso sy manara-maso ny votoatin'ny / proc / self / mountinfo, ary manodina ny teboka tsirairay ao amin'ny unit_name_path_escape() asa, izay manao asa strdupa() izay mametraka ny angon-drakitra ao amin'ny stack fa tsy amin'ny fitadidiana dynamically. . Satria voafetra amin'ny alΓ lan'ny RLIMIT_STACK ny haben'ny stack ambony indrindra, ny fanodinana lalana lehibe loatra mankany amin'ny teboka tendrombohitra dia mahatonga ny fizotran'ny PID1 hianjera sy hampiato ny rafitra. Ho an'ny fanafihana, azonao atao ny mampiasa ny maody FUSE tsotra indrindra miaraka amin'ny fampiasana lahatahiry misy akany ho toy ny teboka tendrombohitra, ny haben'ny lalana izay mihoatra ny 8 MB.

Nipoitra ny olana nanomboka tamin'ny systemd 220 (Aprily 2015), efa napetraka tao amin'ny tahiry systemd lehibe ary napetraka amin'ny fizarana (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). Marihina fa ao amin'ny systemd release 248 dia tsy mandeha ny exploit noho ny bug ao amin'ny code systemd izay mahatonga ny fanodinana ny /proc/self/mountinfo tsy mahomby. Mahaliana ihany koa fa tamin'ny taona 2018 dia nisy toe-javatra mitovy amin'izany ary rehefa nanandrana nanoratra fanararaotana ho an'ny vulnerability CVE-2018-14634 ao amin'ny kernel Linux, ny mpikaroka Qualys dia nahita vulnerabilities telo tao amin'ny systemd.

Source: opennet.ru

Add a comment