ืคื’ื™ืขื•ืช ืฉื•ืจืฉ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืžื ื™ืขืช ืฉื™ืจื•ืช ื‘-systemd

ื—ื•ืงืจื™ ืื‘ื˜ื—ื” ืž-Qualys ื—ืฉืคื• ืคืจื˜ื™ื ืขืœ ืฉืชื™ ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื”ืžืฉืคื™ืขื•ืช ืขืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืžื ื”ืœ ื”ืžืขืจื›ืช. ืคื’ื™ืขื•ืช ื‘ืงืจื ืœ (CVE-2021-33909) ืžืืคืฉืจืช ืœืžืฉืชืžืฉ ืžืงื•ืžื™ ืœื”ืฉื™ื’ ื‘ื™ืฆื•ืข ืงื•ื“ ืขื ื–ื›ื•ื™ื•ืช ืฉื•ืจืฉ ื‘ืืžืฆืขื•ืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืกืคืจื™ื•ืช ืžืงื•ื ื ื•ืช ืžืื•ื“.

ื”ืกื›ื ื” ืฉืœ ื”ืคื’ื™ืขื•ืช ืžื—ืžื™ืจื” ืขืœ ื™ื“ื™ ื”ืขื•ื‘ื“ื” ืฉื”ื—ื•ืงืจื™ื ื”ืฆืœื™ื—ื• ืœื”ื›ื™ืŸ ื ื™ืฆื•ืœ ืขื‘ื•ื“ื” ืฉืขื•ื‘ื“ ืขืœ ืื•ื‘ื•ื ื˜ื• 20.04/20.10/21.04, ื“ื‘ื™ืืŸ 11 ื•ืคื“ื•ืจื” 34 ื‘ืชืฆื•ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ. ื™ืฆื•ื™ืŸ ื›ื™ ื”ืคืฆื•ืช ืื—ืจื•ืช ืœื ื ื‘ื“ืงื•, ืืš ืชื™ืื•ืจื˜ื™ืช ื”ืŸ ื’ื ืจื’ื™ืฉื•ืช ืœื‘ืขื™ื” ื•ื ื™ืชื ื•ืช ืœืชืงื™ืคื”. ื”ืงื•ื“ ื”ืžืœื ืฉืœ ื”ื ื™ืฆื•ืœ ืžื•ื‘ื˜ื— ืœื”ืชืคืจืกื ืœืื—ืจ ืฉื”ื‘ืขื™ื” ืชื‘ื•ื˜ืœ ื‘ื›ืœ ืžืงื•ื, ืืš ืœืขืช ืขืชื” ื–ืžื™ืŸ ืจืง ืื‘ ื˜ื™ืคื•ืก ืฉืœ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžื•ื’ื‘ืœืช, ืžื” ืฉื’ื•ืจื ืœืžืขืจื›ืช ืœืงืจื•ืก. ื”ื‘ืขื™ื” ืงื™ื™ืžืช ืžืื– ื™ื•ืœื™ 2014 ื•ืžืฉืคื™ืขื” ืขืœ ืžื”ื“ื•ืจื•ืช ืœื™ื‘ื” ื”ื—ืœ ืž-3.16. ืชื™ืงื•ืŸ ื”ืคื’ื™ืขื•ืช ืชื•ืื ืขื ื”ืงื”ื™ืœื” ื•ื”ืชืงื‘ืœ ืœื’ืจืขื™ืŸ ื‘-19 ื‘ื™ื•ืœื™. ื”ื”ืคืฆื•ืช ื”ืขื™ืงืจื™ื•ืช ื›ื‘ืจ ื™ืฆืจื• ืขื“ื›ื•ื ื™ื ืœื—ื‘ื™ืœื•ืช ื”ืœื™ื‘ื” ืฉืœื”ืŸ (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

ื”ืคื’ื™ืขื•ืช ื ื’ืจืžืช ื›ืชื•ืฆืื” ืžืื™ ื‘ื“ื™ืงืช ื”ืชื•ืฆืื” ืฉืœ ื”ืžืจื” ืฉืœ size_t ืœ-int ืœืคื ื™ ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ื‘ืงื•ื“ seq_file, ืฉื™ื•ืฆืจ ืงื‘ืฆื™ื ืžืจืฆืฃ ืจืฉื•ืžื•ืช. ืื™ ื‘ื“ื™ืงื” ืขืœื•ืœื” ืœื’ืจื•ื ืœื›ืชื™ื‘ื” ืžื—ื•ืฅ ืœืชื—ื•ื ืœืžืื’ืจ ื‘ืขืช ื™ืฆื™ืจื”, ื”ืจื›ื‘ื” ื•ืžื—ื™ืงื” ืฉืœ ืžื‘ื ื” ืกืคืจื™ื•ืช ืžืงื•ื ืŸ ืžืื•ื“ (ื’ื•ื“ืœ ื ืชื™ื‘ ื’ื“ื•ืœ ืž-1 GB). ื›ืชื•ืฆืื” ืžื›ืš, ืชื•ืงืฃ ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืžื—ืจื•ื–ืช "//deleted" ืฉืœ 10 ื‘ืชื™ื ื”ื›ืชื•ื‘ื” ื‘ื”ื™ืกื˜ ืฉืœ "-2 GB - 10 ื‘ืชื™ื" ื”ืžืฆื‘ื™ืขื” ืขืœ ื”ืื–ื•ืจ ืฉืžื™ื“ ืœืคื ื™ ื”ืžืื’ืจ ื”ืžื•ืงืฆื”.

ื”ื ื™ืฆื•ืœ ื”ืžื•ื›ืŸ ื“ื•ืจืฉ 5 ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ ื•ืžื™ืœื™ื•ืŸ ืื™ื ื•ื“ื™ื ืคื ื•ื™ื™ื ื›ื“ื™ ืœืคืขื•ืœ. ื”ื ื™ืฆื•ืœ ืคื•ืขืœ ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœ-mkdir() ื›ื“ื™ ืœื™ืฆื•ืจ ื”ื™ืจืจื›ื™ื” ืฉืœ ื›ืžื™ืœื™ื•ืŸ ืกืคืจื™ื•ืช ืžืฉื ื” ื›ื“ื™ ืœื”ืฉื™ื’ ื’ื•ื“ืœ ื ืชื™ื‘ ืงื•ื‘ืฅ ื”ืขื•ืœื” ืขืœ 1 GB. ืกืคืจื™ื™ื” ื–ื• ื ื˜ืขื ืช ื‘ืืžืฆืขื•ืช bind-mount ื‘ืžืจื—ื‘ ืฉืžื•ืช ืžืฉืชืžืฉ ื ืคืจื“, ื•ืœืื—ืจ ืžื›ืŸ ืžื•ืคืขืœืช ื”ืคื•ื ืงืฆื™ื” rmdir() ื›ื“ื™ ืœื”ืกื™ืจ ืื•ืชื”. ื‘ืžืงื‘ื™ืœ, ื ื•ืฆืจ ืฉืจืฉื•ืจ ื”ื˜ื•ืขืŸ ืชื•ื›ื ื™ืช eBPF ืงื˜ื ื”, ืฉื ื—ืกืžืช ื‘ืฉืœื‘ ืฉืœืื—ืจ ื‘ื“ื™ืงืช ื”ืคืกืื•ื“ื•ืงื•ื“ eBPF, ืืš ืœืคื ื™ ื”ื™ื“ื•ืจ ื”-JIT ืฉืœื”.

ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ืœืœื ื”ืจืฉืื•ืช ืžืฉืชืžืฉ, ื”ืงื•ื‘ืฅ /proc/self/mountinfo ื ืคืชื— ื•ื ืงืจื ืฉื ื”ื ืชื™ื‘ ื”ืืจื•ืš ืฉืœ ืกืคืจื™ื™ืช ื”-bind-mounted, ื•ื›ืชื•ืฆืื” ืžื›ืš ื”ืžื—ืจื•ื–ืช "//deleted" ื ื›ืชื‘ืช ืœืื–ื•ืจ ืœืคื ื™ ืชื—ื™ืœืช ื”ืžืื’ืจ. ื”ืžื™ืงื•ื ืœื›ืชื™ื‘ืช ื”ืฉื•ืจื” ื ื‘ื—ืจ ื›ืš ืฉื”ื•ื ื™ื—ืœื™ืฃ ืืช ื”ื”ื•ืจืื” ื‘ืชื•ื›ื ื™ืช eBPF ืฉื›ื‘ืจ ื ื‘ื“ืงื” ืืš ืขื“ื™ื™ืŸ ืœื ื”ื™ื“ื•ืจ.

ื‘ืฉืœื‘ ื”ื‘ื, ื‘ืจืžืช ืชื•ื›ื ื™ืช eBPF, ื›ืชื™ื‘ื” ืœื ืžื‘ื•ืงืจืช ืžื—ื•ืฅ ืœืžืื’ืจ ื”ื•ืคื›ืช ืœื™ื›ื•ืœืช ืžื‘ื•ืงืจืช ืœืงืจื•ื ื•ืœื›ืชื•ื‘ ืœืžื‘ื ื™ ืงืจื ืœ ืื—ืจื™ื ื‘ืืžืฆืขื•ืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžื‘ื ื™ btf ื•-map_push_elem. ื›ืชื•ืฆืื” ืžื›ืš, ื”-exploit ืงื•ื‘ืข ืืช ืžื™ืงื•ืžื• ืฉืœ ืžืื’ืจ modprobe_path[] ื‘ื–ื™ื›ืจื•ืŸ ื”ืœื™ื‘ื” ื•ืžื—ืœื™ืฃ ืืช ื”ื ืชื™ื‘ "/sbin/modprobe" ื‘ื•, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื™ื–ื•ื ื”ืฉืงื” ืฉืœ ื›ืœ ืงื•ื‘ืฅ ื”ืคืขืœื” ืขื ื–ื›ื•ื™ื•ืช ืฉื•ืจืฉ ื‘ืžืงืจื” ืฉืœ request_module() call, ืืฉืจ ืžื‘ื•ืฆืขืช, ืœืžืฉืœ, ื‘ืขืช ื™ืฆื™ืจืช ืฉืงืข netlink.

ื”ื—ื•ืงืจื™ื ืžืกืคืงื™ื ืžืกืคืจ ื“ืจื›ื™ื ืœืขืงื™ืคืช ื”ื‘ืขื™ื” ืฉื™ืขื™ืœื•ืช ืจืง ืขื‘ื•ืจ ื ื™ืฆื•ืœ ืกืคืฆื™ืคื™, ืืš ืœื ืžื‘ื˜ืœืช ืืช ื”ื‘ืขื™ื” ืขืฆืžื”. ืžื•ืžืœืฅ ืœื”ื’ื“ื™ืจ ืืช "/proc/sys/kernel/unprivileged_userns_clone" ืœ-0 ื›ื“ื™ ืœื‘ื˜ืœ ืืช ื”ืขืœืืช ืกืคืจื™ื•ืช ื‘ืžืจื—ื‘ ืฉืžื•ืช ื ืคืจื“ ืฉืœ ืžื–ื”ื” ืžืฉืชืžืฉ, ื•ืืช "/proc/sys/kernel/unprivileged_bpf_disabled" ืœ-1 ื›ื“ื™ ืœื‘ื˜ืœ ื˜ืขื™ื ืช ืชื•ื›ื ื™ื•ืช eBPF ืœืชื•ืš ื”ืœื™ื‘ื”.

ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉื‘ื–ืžืŸ ื ื™ืชื•ื— ืžืชืงืคื” ื—ืœื•ืคื™ืช ื”ื›ื•ืœืœืช ืฉื™ืžื•ืฉ ื‘ืžื ื’ื ื•ืŸ FUSE ื‘ืžืงื•ื bind-mound ืœื”ืจื›ื‘ืช ืกืคืจื™ื™ื” ื’ื“ื•ืœื”, ื”ื—ื•ืงืจื™ื ื ืชืงืœื• ื‘ืคื’ื™ืขื•ืช ื ื•ืกืคืช (CVE-2021-33910) ื”ืžืฉืคื™ืขื” ืขืœ ืžื ื”ืœ ื”ืžืขืจื›ืช ืฉืœ ื”ืžืขืจื›ืช. ื”ืชื‘ืจืจ ืฉื›ืืฉืจ ืžื ืกื™ื ืœื”ืขืœื•ืช ืกืคืจื™ื” ื‘ื’ื•ื“ืœ ื ืชื™ื‘ ื”ืขื•ืœื” ืขืœ 8MB ื‘ืืžืฆืขื•ืช FUSE, ืชื”ืœื™ืš ืืชื—ื•ืœ ื”ื‘ืงืจื” (PID1) ืื•ื–ืœ ืžื–ื™ื›ืจื•ืŸ ื”ืžื—ืกื ื™ืช ื•ืงืจื™ืกื”, ืžื” ืฉืžื›ื ื™ืก ืืช ื”ืžืขืจื›ืช ืœืžืฆื‘ "ืคืื ื™ืงื”".

ื”ื‘ืขื™ื” ื”ื™ื ืฉ-systemd ืขื•ืงื‘ ื•ืžื ืชื— ืืช ื”ืชื•ื›ืŸ ืฉืœ /proc/self/mountinfo, ื•ืžืขื‘ื“ ื›ืœ ื ืงื•ื“ืช ื”ืจื›ื‘ื” ื‘ืคื•ื ืงืฆื™ื” unit_name_path_escape(), ืืฉืจ ืžื‘ืฆืขืช ืคืขื•ืœืช strdupa() ืฉืžืžืงืžืช ืืช ื”ื ืชื•ื ื™ื ืขืœ ื”ืžื—ืกื ื™ืช ื•ืœื ื‘ื–ื™ื›ืจื•ืŸ ืฉื”ื•ืงืฆื” ื“ื™ื ืžื™ืช . ืžื›ื™ื•ื•ืŸ ืฉื’ื•ื“ืœ ื”ืžื—ืกื ื™ืช ื”ืžืงืกื™ืžืœื™ ืžื•ื’ื‘ืœ ื‘ืืžืฆืขื•ืช RLIMIT_STACK, ืขื™ื‘ื•ื“ ื ืชื™ื‘ ื’ื“ื•ืœ ืžื“ื™ ืœื ืงื•ื“ืช ื”ื”ืจื›ื‘ื” ื’ื•ืจื ืœืชื”ืœื™ืš PID1 ืœืงืจื•ืก ื•ืœืขืฆื•ืจ ืืช ื”ืžืขืจื›ืช. ืขื‘ื•ืจ ื”ืชืงืคื”, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœ FUSE ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ื‘ืฉื™ืœื•ื‘ ืขื ืฉื™ืžื•ืฉ ื‘ืกืคืจื™ื™ื” ืžืงื•ื ื ืช ืžืื•ื“ ื›ื ืงื•ื“ืช ื”ืจื›ื‘ื”, ืฉื’ื•ื“ืœ ื”ื ืชื™ื‘ ืฉืœื” ืขื•ืœื” ืขืœ 8 MB.

ื”ื‘ืขื™ื” ืžื•ืคื™ืขื” ืžืื– systemd 220 (ืืคืจื™ืœ 2015), ื›ื‘ืจ ืชื•ืงื ื” ื‘ืžืื’ืจ systemd ื”ืจืืฉื™ ื•ืชื•ืงื ื” ื‘ื”ืคืฆื•ืช (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). ื™ืฉ ืœืฆื™ื™ืŸ ืฉื‘ืžื”ื“ื•ืจื” ืžืขืจื›ืชื™ืช 248 ื”ื ื™ืฆื•ืœ ืœื ืขื•ื‘ื“ ื‘ื’ืœืœ ื‘ืื’ ื‘ืงื•ื“ ื”ืžืขืจื›ืช ืฉื’ื•ืจื ืœืขื™ื‘ื•ื“ ืฉืœ /proc/self/mountinfo ืœื”ื™ื›ืฉืœ. ืžืขื ื™ื™ืŸ ื’ื ืฉื‘ืฉื ืช 2018, ื ื•ืฆืจ ืžืฆื‘ ื“ื•ืžื” ื•ื›ืืฉืจ ื ื™ืกื• ืœื›ืชื•ื‘ ื ื™ืฆื•ืœ ืœืคื’ื™ืขื•ืช CVE-2018-14634 ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก, ื—ื•ืงืจื™ Qualys ื ืชืงืœื• ื‘ืฉืœื•ืฉ ืคืจืฆื•ืช ืงืจื™ื˜ื™ื•ืช ื‘-systemd.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”