Mgbọrọgwụ adịghị ike na kernel Linux yana ịgọnarị ọrụ na sistemu

Ndị nyocha nchekwa sitere na Qualys ekpughere nkọwa nke adịghị ike abụọ na-emetụta kernel Linux na onye njikwa sistemu sistemu. Ọdịmma dị na kernel (CVE-2021-33909) na-enye onye ọrụ mpaghara ohere iji nweta mmebe koodu na ikike mgbọrọgwụ site na iji njikwa akwụkwọ ndekọ aha nwere oke.

Ihe ize ndụ nke adịghị ike na-akawanye njọ site n'eziokwu ahụ bụ na ndị nchọpụta ahụ nwere ike ịkwado ọrụ arụ ọrụ na-arụ ọrụ na Ubuntu 20.04/20.10/21.04, Debian 11 na Fedora 34 na nhazi ndabara. Achọpụtara na a nwalebeghị nkesa ndị ọzọ, mana ọ na-enwekwa ike ibute nsogbu ahụ ma nwee ike ịwakpo ya. A na-ekwe nkwa na a ga-ebipụta koodu zuru oke nke ihe ndị ahụ mgbe a kpochapụrụ nsogbu ahụ n'ebe niile, ma ugbu a, ọ bụ naanị ihe ngosi nke arụmọrụ dị oke, na-eme ka usoro ahụ daa. Nsogbu a dị kemgbe Julaị 2014 ma na-emetụta mwepụta kernel malite na 3.16. Ejikọtara ndozi adịghị ike ahụ na ndị obodo wee nabata n'ime kernel na Julaị 19th. Nkesa isi ewepụtala mmelite na ngwugwu kernel ha (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

A na-akpata adịghị ike ahụ site na ịghara ịlele nsonaazụ nke size_t na ntụgharị int tupu arụ ọrụ na koodu seq_file, nke na-emepụta faịlụ site na usoro ndekọ. Ọdịda ịlele nwere ike ime ka ịpụ na-edegara ebe nchekwa akwụkwọ mgbe ị na-eke, na-arị elu, na ihichapụ usoro ndekọ aha akwụghị ọtọ (nha ụzọ karịrị 1 GB). N'ihi nke a, onye na-awakpo nwere ike nweta eriri 10-byte "// ehichapụ" nke edere na nkwụsị nke "-2 GB - 10 bytes" na-atụ aka na mpaghara ozugbo tupu ebe nchekwa ekenyela.

Nrigbu akwadoro chọrọ 5 GB nke ebe nchekwa yana 1 nde inodes efu iji rụọ ọrụ. Nrigbu a na-arụ ọrụ site n'ịkpọ mkdir() iji mepụta ọkwa nke ihe dị ka otu nde subdirectories iji nweta nha faịlụ karịrị 1 GB. A na-agbanye ndekọ a site na bind-mount na oghere aha njirimara dị iche, emesịa arụ ọrụ rmdir() na-agba ọsọ iji wepụ ya. N'otu aka ahụ, a na-emepụta eri nke na-ebu obere mmemme eBPF, nke a na-egbochi na ogbo mgbe ịlele eBPF pseudocode, mana tupu nchịkọta JIT ya.

N'ime oghere aha njirimara na-enweghị ohere, faịlụ / proc / onwe / mountinfo na-emeghe wee gụọ ogologo aha ndekọ ndekọ aha, na-ebute eriri "// ehichapụ" na mpaghara ahụ tupu mmalite nke ihe nchekwa ahụ. A na-ahọrọ ọnọdụ maka ide ahịrị ahụ n'ụzọ ga-eme ka ọ degharịa ntuziaka na mmemme eBPF nke anwalelarị mana achịkọtabeghị ya.

Na-esote, na ọkwa mmemme eBPF, a na-agbanwe ide ihe na-enweghị nchịkwa ka ọ bụrụ ikike a na-achịkwa ịgụ na ide n'ụdị kernel ndị ọzọ site na iji usoro btf na map_push_elem. N'ihi ya, nrigbu ahụ na-ekpebi ọnọdụ nke modprobe_path [] buffer na kernel memory ma degharịa ụzọ "/ sbin / modprobe" na ya, nke na-enye gị ohere ịmalite mmalite nke faịlụ ọ bụla nwere ike ime ya na ikike mgbọrọgwụ n'ọnọdụ nke a. request_module() oku, nke a na-eme, dịka ọmụmaatụ, mgbe ị na-emepụta oghere netlink.

Ndị na-eme nchọpụta na-enye ọtụtụ ihe ngwọta dị irè naanị maka nrigbu a kapịrị ọnụ, mana anaghị ewepụ nsogbu ahụ n'onwe ya. A na-atụ aro ka ịtọ "/ proc / sys / kernel / unprivileged_userns_clone" na 0 iji gbanyụọ ndekọ ndekọ na-arị elu na aha njirimara njirimara dị iche, yana "/proc/sys/kernel/unprivileged_bpf_disabled" na 1 iji gbanyụọ mmemme eBPF n'ime kernel.

Ọ bụ ihe kwesịrị ịrịba ama na mgbe ị na-enyocha ọgụ ọzọ metụtara iji usoro FUSE kama ijikọta-mkpọtụ iji bulie nnukwu akwụkwọ ndekọ aha, ndị nyocha ahụ nwetara ihe ọghọm ọzọ (CVE-2021-33910) na-emetụta onye njikwa sistemụ. Ọ tụgharịrị na mgbe ị na-agbalị ịkwanye ndekọ nke nwere oke ụzọ karịrị 8 MB site na FUSE, usoro nchịkwa nchịkwa (PID1) na-agwụ na ebe nchekwa nchekwa na mkpọka, nke na-etinye usoro ahụ na ọnọdụ "egwu".

Nsogbu bụ na usoro egwu na-atụgharị ma na-atụgharị ọdịnaya nke / proc / onwe / mountinfo, ma na-ahazi ebe ọ bụla na-arụ ọrụ na unit_name_path_escape () ọrụ, nke na-arụ ọrụ strdupa () nke na-etinye data na nchịkọta kama ịbụ ebe nchekwa dị ike ekenye. . Ebe ọ bụ na oke nchịkọta nke oke na-ejedebe site na RLIMIT_STACK, nhazi nnukwu ụzọ na ebe ugwu na-eme ka usoro PID1 daa ma kwụsị usoro ahụ. Maka mbuso agha, ị nwere ike iji modul FUSE kachasị mfe yana iji akwụkwọ ndekọ aha akwụghị ụgwọ dị ka ebe ugwu, nha ụzọ ya karịrị 8 MB.

Nsogbu a na-apụta kemgbe systemd 220 (Eprel 2015), edozilarị na ebe nchekwa sistemụ ma dozie na nkesa (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). Ọ kachasị, na ntọhapụ sistemu 248 nrigbu anaghị arụ ọrụ n'ihi ahụhụ dị na koodu sistemụ na-eme ka nhazi /proc/self/mountinfo daa. Ọ bụkwa ihe na-adọrọ mmasị na na 2018, ọnọdụ yiri nke ahụ bilitere na mgbe ị na-agbalị ịde nrigbu maka adịghị ike CVE-2018-14634 na Linux kernel, ndị nchọpụta Qualys zutere adịghị ike atọ dị egwu na systemd.

isi: opennet.ru

Tinye a comment