Qualys á០áá¯á¶ááŒá¯á¶áá±ážáá¯áá±áá®áá»á¬ážááẠLinux kernel ááŸáá·áº systemd system manager ááá¯ááááá¯ááºá á±áá±á¬ á¡á¬ážáááºážáá»ááºááŸá áºáá¯áá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááá¯áá±á¬áºááŒáá²á·áááºá kernel ááŸá á¡á¬ážáááºážáá»ááºáá áºáᯠ(CVE-2021-33909) ááẠáá±ááá¶á¡áá¯á¶ážááŒá¯áá°áá áºáŠážá¡á¬áž á¡ááœááºá¡ááá¯ááºá¡ááŒá¯á¶ááŸááá±á¬ áááºážááŒá±á¬ááºážáá»á¬ážááᯠááá¯ááºááœááºááŒááºážááŒáá·áº á¡ááŒá áºá¡ááœáá·áºá¡áá±ážááŒáá·áº áá¯ááºáá¯ááºáá±á¬ááºááŸá¯ááᯠá¡á±á¬ááºááŒááºá á±áááºá
áá¯áá±áá®áá»á¬ážááẠUbuntu 20.04/20.10/21.04á Debian 11 ááŸáá·áº Fedora 34 ááœáẠá¡áá¯ááºáá¯ááºáá±á¬ á¡áá¯ááºááá¯ááºáᬠá¡áá¯á¶ážáá»ááŸá¯áá»á¬ážááᯠááŒááºáááºááá¯ááºááŒááºážááŒá±á¬áá·áº á¡á¬ážáááºážáá»ááºá á¡áá¹ááá¬ááºááẠááá¯ááá¯ááá¯ážááœá¬ážáá¬áá«áááºá á¡ááŒá¬ážááŒáá·áºáá±ááŸá¯áá»á¬ážááᯠáá ááºážáááºááá±ážáá±á¬áºáááºáž áá®á¡áá¯áá®á¡ááááºáž ááŒá¿áá¬ááŒá áºááá¯ááºáá»á±ááŸáááŒá®áž ááá¯ááºááá¯ááºááá¯ááºááŒá±á¬ááºáž ááŸááºáá¬ážáá¬ážáááºá ááŒá¿áá¬ááᯠáá±áá¬ááá¯ááºážááœáẠáááºááŸá¬ážááŒá®ážáá±á¬áẠexploits á áá¯ááºá¡ááŒáá·áºá¡á á¯á¶ááᯠáá¯ááºáá±áááºáᯠáááááŒá¯áá¬ážáá±á¬áºáááºáž ááá¯á¡áá«ááœáẠá¡ááá·áºá¡áááºááŸááá±á¬ áá¯ááºáá±á¬ááºááá¯ááºá áœááºážá ááŸá±á·ááŒá±ážáá¯á¶á á¶ááá¯áᬠáááŸááá¬ážááŒá®ážá á áá áºáá»ááºááœá¬ážá á±áááºá ááŒá¿áá¬ááẠáá°ááá¯ááºá 2014 ááááºážá ááŸááá±áá²á·ááŒá®áž 3.16 á០á áááºááá·áº kernel áá»á¬ážááᯠáááºáá±á¬ááºááŸá¯ááŸááááºá á¡á¬ážáááºážáá»ááºááŒááºáááºááŸá¯ááᯠáááºááœá¬ááŸáá·áºááŸáááŸáá¯ááºážááŒá®áž áá°ááá¯ááºá 19 áááºáá±á·ááœáẠkernel ááá¯á·áááºáá¶áá²á·áááºá áááºáááŒáá·áºáá±ááŸá¯áá»á¬ážááẠáááºážááá¯á·á kernel áááºáá±á·áá»áºáá»á¬áž (Debianá Ubuntuá Fedoraá RHELá SUSEá Arch) á¡ááœáẠá¡ááºááááºáá»á¬ážááᯠáá¯ááºáá±ážáá¬ážááŒá®ážááŒá áºáááºá
á¡á¬ážáááºážáá»ááºááẠseq_file áá¯ááºááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž ááá¯ááºáá±á¬ááºáá® size_t ááá¯á· int ááŒá±á¬ááºážáá²ááŒááºážá ááááºááᯠá á áºáá±ážááẠáá»ááºááœááºááŒááºážááŒá±á¬áá·áºááŒá áºááŒá®ážá ááá¯ááºáá»á¬ážááᯠááŸááºáááºážáá áºáá¯á á®á០áááºáá®ážáá±ážááá·áº seq_file áá¯ááºááœáẠááŒá áºáááºá á á áºáá±ážááẠáá»ááºááœááºáá«á á¡ááœááºá¡ááá¯ááºá¡ááŒá¯á¶ááŸááá±á¬ áááºážááœáŸááºááœá²á·á ááºážáá¯á¶ (áááºážááŒá±á¬ááºáž á¡ááœááºá¡á á¬áž 1 GB áááºááŒá®ážáá±á¬) ááᯠáááºáá®ážááŒááºážá áááºáááºááŒááºážááŸáá·áº áá»ááºááŒááºážááá¯á· ááŒá¯áá¯ááºááá·áºá¡áá« ááŒá¬ážáá¶áᶠá á¬áá±ážááŒááºážáá»á¬áž ááŒá áºáá±á«áºááá¯ááºáááºá ááááºá¡áá±ááŒáá·áºá ááá¯ááºááá¯ááºáá°ááẠááœá²áá±áá»áá¬ážáá±ážááá·áºááŒá¬ážáá¶áááá¯ááºáá® á§áááá¬ááᯠáá»ááºáá»ááºážááœáŸááºááŒááá·áº "-10 GB - 2 bytes" á offset ááŒáá·áº áá±ážáá¬ážáá±á¬ 10-byte á á¬ááŒá±á¬ááºážááᯠáááŸáááá¯ááºáááºá
ááŒááºáááºáá¬ážáá±á¬ exploit ááẠáááºáááºáááºá¡ááœáẠ5 GB memory ááŸáá·áº 1 million free inodes ááá¯á¡ááºáááºá exploit ááẠ1 GB áááºáá»á±á¬áºááœááºáá±á¬ ááá¯ááºáááºážááŒá±á¬ááºážá¡ááœááºá¡á á¬ážááá¯áááŸáááẠmkdir() ááá¯áá±á«áºááá¯ááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºáááºá á€áááºážááœáŸááºááᯠáá®ážááŒá¬ážá¡áá¯á¶ážááŒá¯áá°á¡áááºááœááºáááºáá áºáá¯ááœáẠbind-mount ááŸáá áºááá·áºáááºáááºáá¬ážááŒá®ážá ááá¯á·áá±á¬áẠáááºážááá¯áááºááŸá¬ážááẠrmdir() áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáááºá ááááºáááºážááœááºá eBPF pseudocode ááá¯á á áºáá±ážááŒá®ážáá±á¬áẠá¡ááá·áºááœáẠááááºááá¯á·áá¬ážááá·áº eBPF áááá¯ááááºáááºáá áºáá¯ááᯠáááºáá±á¬ááºááá·áº áá»ááºáá»áŸááºáá áºáá¯ááᯠáááºáá®ážáá¬ážáááºá ááá¯á·áá±á¬áº áááºážá JIT á á¯á ááºážááŸá¯áááŒá¯áá®á
á¡ááœáá·áºáá°ážááá¶áá±á¬ userrid namespace ááœááºá ááá¯áẠ/proc/self/mountinfo ááá¯ááœáá·áºááŒá®áž bind-mounted directory áááŸááºáá»á¬ážáá±á¬áááºážááŒá±á¬ááºážá¡áááºááá¯áááºááŒá®áž ááááºá¡áá±ááŒáá·áº ááŒá¬ážáá¶áá áááºáá®ááœáẠ"//deleted" á á¬áááºážááᯠá§áááá¬ááá¯á·áá±ážááŸááºááœá¬ážáááºááŒá áºáááºá á ááºážáááºááŒá®ážáá¬áž eBPF áááá¯ááááºááœáẠááœáŸááºááŒá¬ážáá»ááºááᯠááá±ážááá¯ááºá á±ááẠá á¬ááŒá±á¬ááºážáá±ážáá¬ážááẠá¡áá±á¡áá¬ážááᯠááœá±ážáá»ááºáá¬ážáááºá
ááá¯á·áá±á¬ááºá eBPF áááá¯ááááºá¡ááá·áºááœááºá á¡ááááºážá¡ááœááºáá²á· ááŒááºáááŒá¬ážáá¶á¡áá±ážá¡áá¬ážááẠbtf ááŸáá·áº map_push_elem áááºáá±á¬ááºáá¯á¶áá»á¬ážááᯠááŒááºááŸááºááŒááºážááŒáá·áº á¡ááŒá¬áž kernel áááºáá±á¬ááºáá¯á¶áá»á¬ážááá¯á· áááºááŸá¯ááŒááºážááŸáá·áº á á¬áá±ážááŒááºážá¡á¬áž ááááºážáá»á¯ááºááá¯ááºááŸá¯á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºá ááááºá¡áá±ááŒáá·áºá exploit ááẠkernel memory ááŸá modprobe_path[] buffer ááááºáá±áá¬ááá¯áá¯á¶ážááŒááºááŒá®áž áááºážááŸá â/sbin/modprobeâ áááºážááŒá±á¬ááºážááᯠoverwrite áá¯ááºáá±ážááŒá®ážá áááºážááẠáááºá áááºáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áááºááá·áºááá¯ááºááá¯áááᯠroot áá¯ááºááá¯ááºááœáá·áºááŒáá·áº á áááºáá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº ááááºáá áºáá¯ááŒá áºáááºá netlink socket ááá¯áááºáá®ážáá±á¬á¡áá«á á¥ááá¬á¡á¬ážááŒáá·áºá request_module() áá±á«áºááá¯ááŸá¯á
áá¯áá±áá®áá»á¬ážááẠáááá»áá±á¬á¡ááŒááºáá¯ááºááŸá¯áá áºáá¯á¡ááœááºáᬠáááá±á¬ááºáá±á¬ ááŒá±ááŸááºážáááºážáá»á¬ážá áœá¬ááᯠáá±ážá áœááºážáá±á¬áºáááºáž ááŒá¿áá¬ááᯠáááºážááá¯ááºááá¯áẠááááºááŸá¬ážáá«á áá®ážááŒá¬ážá¡áá¯á¶ážááŒá¯áá° ID namespace ááœáẠáááºáááºááŒááºážáááºážááŒá±á¬ááºážáá»á¬ážááᯠááááºááẠ"/proc/sys/kernel/unprivileged_userns_clone" ááᯠ0 á¡ááŒá ẠáááºááŸááºáááºááŸáá·áº kernel áá²ááá¯á· eBPF áááá¯ááááºáá»á¬ážáááºááŒááºážááᯠááááºááẠ1 á¡ááŒá ẠáááºááŸááºááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá
ááŒá®ážáá¬ážáá±á¬áááºážááœáŸááºááá¯áááºáááºááẠFUSE ááá¹ááá¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá¡á á¬áž FUSE ááá¹ááá¬ážá¡áá¯á¶ážááŒá¯ááŒááºážáá« á ááºááá·áºá¡á á¬ážááá¯ážááá¯ááºááá¯ááºááŸá¯áá áºáá¯á¡á¬ážááœá²ááŒááºážá áááºááŒá¬á ááºááœááºáá¯áá±áá®áá»á¬ážááẠsystemd á áá áºáááºáá±áá»á¬ááá¯ááááá¯ááºá á±áá±á¬á¡ááŒá¬ážá¡á¬ážáááºážáá»áẠ(CVE-2021-33910) ááá¯ááœá±á·ááŸááá²á·áááºá FUSE ááŸáá áºááá·áº áááºážááŒá±á¬ááºážá¡ááœááºá¡á á¬áž 8 MB áááºáá»á±á¬áºááœááºáá±á¬ áááºážááŒá±á¬ááºážáá áºáá¯á¡á¬áž áááºáááºááẠááŒáá¯ážá á¬ážáá±á¬á¡áá«á ááááºážáá»á¯ááºááŸá¯á áááºááŒááºážáá¯ááºáááºážá áẠ(PID1) ááẠstack memory áá¯ááºáá¯á¶ážááœá¬ážááŒá®áž á áá áºá¡á¬áž "ááááºááá·áº" á á±ááá·áº á¡ááŒá±á¡áá±ááá¯á· áá±á¬ááºááŸáááœá¬ážááŒá±á¬ááºáž ááœá±á·ááŸáááá«áááºá
ááŒá¿áá¬ááŸá¬ systemd ááẠ/proc/self/mountinfo á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠááŒá±áá¬áá¶ááŒá®áž ááœá²ááŒááºážá áááºááŒá¬áᬠunit_name_path_escape() áá¯ááºáá±á¬ááºáá»ááºááœáẠmount point áá áºáá¯á á®ááᯠáá¯ááºáá±á¬ááºáá±ážááá·áº strdupa() áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºááŒááºážááŒá áºááŒá®ážá áá±áá¬áá»á¬ážááᯠstack áá±á«áºááœáẠáá±áá¬áá»áá±ážááá·áºá¡á á¬áž ááá¯ááºážááá áºááŒáá·áº ááœá²áá±áá»áá¬ážáá±ážáá±á¬ áááºááá¯áá®ááœáẠáá±áá¬áá»áá±ážáá±á¬ strdupa() áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáá«áááºá . á¡áá»á¬ážáá¯á¶áž stack á¡ááœááºá¡á á¬ážááᯠRLIMIT_STACK ááŸáá áºááá·áº ááá·áºáááºáá¬ážáá±á¬ááŒá±á¬áá·áº mount point ááá¯á· áááºážááŒá±á¬ááºážá¡ááœááºááŒá®ážáá±á¬ áá¯ááºáá±á¬ááºááŒááºážááẠPID1 áá¯ááºáááºážá ááºááᯠáá»ááºá á®ážá á±ááŒá®áž á áá áºá¡á¬áž áááºááá·áºá á±áá«áááºá ááá¯ááºááá¯ááºááŸá¯áá áºáá¯á¡ááœááºá áááºááẠ8 MB áááºáá»á±á¬áºááœááºáá±á¬ áááºážááŒá±á¬ááºážá¡ááœááºá¡á á¬ážááᯠmount point á¡ááŒá Ạá¡ááœááºá¡ááá¯ááºá¡ááŒá¯á¶ááŒá¯áá¬ážáá±á¬ áááºážááœáŸááºááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯ážááŸááºážáá¯á¶áž FUSE áá±á¬áºáá»á°ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
systemd 220 (á§ááŒá® 2015) ááœáẠáááºá systemd repository ááœáẠfixed áá¯ááºááŒá®áž distribution (Debianá Ubuntu, Fedora, RHEL, SUSE, Arch) ááááºážá ááŒá¿áá¬áá±á«áºáá¬áá²á·áááºá ááŸááºáá¬ážá
áá¬ááŸá¬á systemd release 248 ááœáẠ/proc/self/mountinfo ááá¯ááºáá±á¬ááºááŸá¯ááᯠáá»ááŸá¯á¶ážá
á±ááá·áº systemd code ááœáẠbug áá
áºáá¯ááŒá±á¬áá·áº exploit ááẠá¡áá¯ááºááá¯ááºáá«á 2018 ááœáẠá¡áá¬ážáá°á¡ááŒá±á¡áá±áá
áºáá¯áá±á«áºáá±á«ááºáá¬ááŒá®áž Linux kernel ááŸá CVE-2018-14634 á¡á¬ážáááºážáá»ááºá¡ááœáẠexploit áá
áºáá¯ááá¯áá±ážáááºááŒáá¯ážá
á¬ážáá±á¬á¡áá« Qualys áá¯áá±áá®áá»á¬ážááẠsystemd ááœáẠá¡áá±ážááŒá®ážáá±á¬á¡á¬ážáááºážáá»ááºáá¯á¶ážáá¯ááá¯ááœá±á·áá¬ááááºááŸá¬áááºáž á
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážáá«áááºá
source: opennet.ru