Rasin vilnerabilite nan nwayo Linux ak refi sèvis nan systemd

Chèchè sekirite ki soti nan Qualys te revele detay sou de frajilite ki afekte nwayo Linux la ak manadjè sistèm systemd la. Yon vilnerabilite nan nwayo a (CVE-2021-33909) pèmèt yon itilizatè lokal reyalize ekzekisyon kòd ak dwa rasin atravè manipilasyon anyè ki trè anbrike.

Danje vilnerabilite a vin pi grav pa lefèt ke chèchè yo te kapab prepare èksplwatasyon travay ki travay sou Ubuntu 20.04/20.10/21.04, Debian 11 ak Fedora 34 nan konfigirasyon default la. Li te note ke lòt distribisyon yo pa te teste, men yo teyorikman tou sansib a pwoblèm nan epi yo ka atake. Tout kòd eksplwatasyon yo te pwomèt yo dwe pibliye apre pwoblèm nan elimine toupatou, men pou kounye a se sèlman yon pwototip nan fonksyonalite limite ki disponib, sa ki lakòz sistèm nan aksidan. Pwoblèm nan te prezan depi jiyè 2014 e li afekte degaje nwayo apati 3.16. Te ranje vilnerabilite a kowòdone ak kominote a epi li te aksepte nan nwayo a sou 19 jiyè. Distribisyon prensipal yo te deja pwodwi mizajou nan pakè nwayo yo (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

Se vilnerabilite a ki te koze pa echèk yo tcheke rezilta a nan yon size_t konvèsyon int anvan ou fè operasyon nan kòd la seq_file, ki kreye dosye ki soti nan yon sekans nan dosye. Si w pa tcheke, sa ka lakòz ekri nan tanpon an andeyò lè w ap kreye, monte ak efase yon estrikti anyè trè anbrike (gwosè chemen ki pi gran pase 1 GB). Kòm yon rezilta, yon atakè ka reyalize yon fisèl 10-byte "//deleted" ekri nan yon konpanse nan "-2 GB - 10 bytes" lonje dwèt sou zòn nan imedyatman anvan tanpon atribye ba a.

Eksplwatasyon an prepare mande pou 5 GB memwa ak 1 milyon inodes gratis pou opere. Eksplwatasyon an ap travay lè w rele mkdir() pou kreye yon yerachi apeprè yon milyon sous-répertoires pou reyalize yon gwosè chemen fichye ki depase 1 GB. Anyè sa a monte atravè bind-mount nan yon espas non itilizatè apa, apre sa fonksyon rmdir() yo kouri pou retire li. An paralèl, yo kreye yon fil ki chaje yon ti pwogram eBPF, ki bloke nan etap apre tcheke pseudocode eBPF la, men anvan konpilasyon JIT li yo.

Nan espas non itilizatè ki pa gen privilèj la, dosye /proc/self/mountinfo la louvri epi yo li non chemen an long nan anyè ki monte sou lyen an, sa ki lakòz fisèl "//deleted" yo te ekri nan zòn nan anvan kòmansman tanpon an. Yo chwazi pozisyon pou ekri liy lan pou li ranplase enstriksyon ki nan pwogram eBPF ki deja teste men ki poko konpile a.

Apre sa, nan nivo pwogram eBPF, ekriti san kontwòl ki pa nan tanpon transfòme nan kapasite kontwole pou li ak ekri nan lòt estrikti nwayo atravè manipilasyon estrikti btf ak map_push_elem. Kòm yon rezilta, eksplwatasyon an detèmine kote tanpon modprobe_path[] la nan memwa nwayo a epi ranplase chemen "/sbin/modprobe" ladan l, ki pèmèt ou kòmanse lansman nenpòt dosye ègzèkutabl ki gen dwa rasin nan ka yon request_module() apèl, ki egzekite, pou egzanp, lè w ap kreye priz netlink.

Chèchè yo bay plizyè solisyon ki efikas sèlman pou yon eksplwatasyon espesifik, men yo pa elimine pwoblèm nan tèt li. Li rekòmande pou mete "/proc/sys/kernel/unprivileged_userns_clone" a 0 pou enfim aliye repèrtwar yo nan yon espas non ID itilizatè apa, ak "/proc/sys/kernel/unprivileged_bpf_disabled" a 1 pou enfim chaje pwogram eBPF nan nwayo a.

Li enpòtan pou remake ke pandan y ap analize yon atak altènatif ki enplike itilizasyon mekanis FUSE olye pou yo monte yon gwo anyè, chèchè yo te rankontre yon lòt vilnerabilite (CVE-2021-33910) ki afekte manadjè sistèm systemd la. Li te tounen soti ke lè w ap eseye monte yon anyè ak yon gwosè chemen ki depase 8 MB atravè FUSE, pwosesis inisyalizasyon kontwòl la (PID1) kouri soti nan memwa pil ak aksidan, ki mete sistèm nan nan yon eta "panik".

Pwoblèm lan se ke systemd swiv ak analize sa ki nan /proc/self/mountinfo, epi trete chak pwen mòn nan fonksyon unit_name_path_escape() , ki fè yon operasyon strdupa() ki mete done yo sou pil la olye ke nan memwa ki afekte dinamik. . Piske gwosè maksimòm pile a limite atravè RLIMIT_STACK, tretman yon chemen ki twò gwo nan pwen mòn lan lakòz pwosesis PID1 la fè aksidan epi sispann sistèm nan. Pou yon atak, ou ka itilize modil FUSE ki pi senp lan ansanm ak lè l sèvi avèk yon anyè trè anbrike kòm yon pwen mòn, gwosè chemen an ki depase 8 MB.

Pwoblèm nan te parèt depi systemd 220 (avril 2015), te deja fiks nan depo prensipal systemd ak fiks nan distribisyon (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). Miyò, nan systemd version 248 exploit la pa travay akòz yon ensèk nan kòd systemd ki lakòz pwosesis /proc/self/mountinfo echwe. Li enteresan tou ke nan 2018, yon sitiyasyon menm jan an te parèt epi lè yo te eseye ekri yon eksplwate pou vilnerabilite CVE-2018-14634 nan nwayo Linux la, chèchè Qualys te rankontre twa frajilite kritik nan systemd.

Sous: opennet.ru

Add nouvo kòmantè