ืคื’ื™ืขื•ืช ืงืจื™ื˜ื™ืช ื‘-PolKit ื”ืžืืคืฉืจืช ื’ื™ืฉื” ืœืฉื•ืจืฉ ื‘ืจื•ื‘ ื”ื”ืคืฆื•ืช ืฉืœ ืœื™ื ื•ืงืก

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

ื”ื‘ืขื™ื” ืงื™ื™ืžืช ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช pkexec ืฉืœ PolKit, ืฉืžื’ื™ืข ืขื ื“ื’ืœ ื”ืฉื•ืจืฉ ืฉืœ SUID ื•ื ื•ืขื“ ืœื”ืจื™ืฅ ืคืงื•ื“ื•ืช ืขื ื”ืจืฉืื•ืช ืฉืœ ืžืฉืชืžืฉ ืื—ืจ ื‘ื”ืชืื ืœื›ืœืœื™ PolKit ืฉืฆื•ื™ื ื•. ืขืงื‘ ื˜ื™ืคื•ืœ ืฉื’ื•ื™ ื‘ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉื”ื•ืขื‘ืจื• ืœ-pkexec, ืžืฉืชืžืฉ ื—ืกืจ ื”ืจืฉืื•ืช ื™ื›ื•ืœ ืœืขืงื•ืฃ ืืช ื”ืื™ืžื•ืช ื•ืœื”ืจื™ืฅ ืืช ื”ืงื•ื“ ืฉืœื• ื›-root, ืœืœื ืงืฉืจ ืœื›ืœืœื™ ื”ื’ื™ืฉื” ืฉื ืงื‘ืขื•. ืขื‘ื•ืจ ื”ืชืงืคื”, ื–ื” ืœื ืžืฉื ื” ืื™ืœื• ื”ื’ื“ืจื•ืช ื•ื”ื’ื‘ืœื•ืช ืžืฆื•ื™ื ื•ืช ื‘-PolKit, ืžืกืคื™ืง ืฉืชื›ื•ื ืช ื”ืฉื•ืจืฉ SUID ืžื•ื’ื“ืจืช ืขื‘ื•ืจ ืงื•ื‘ืฅ ื”ื”ืคืขืœื” ืขื ื›ืœื™ ื”ืฉื™ืจื•ืช pkexec.

Pkexec ืื™ื ื• ื‘ื•ื“ืง ืืช ืชืงืคื•ืช ืกืคื™ืจืช ื”ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” (argc) ืฉื”ื•ืขื‘ืจื” ื‘ืขืช ื”ืชื—ืœืช ืชื”ืœื™ืš. ื”ืžืคืชื—ื™ื ืฉืœ pkexec ื”ื ื™ื—ื• ืฉื”ืขืจืš ื”ืจืืฉื•ืŸ ื‘ืžืขืจืš argv ืžื›ื™ืœ ืชืžื™ื“ ืืช ืฉื ื”ืชื”ืœื™ืš (pkexec), ื•ื”ืฉื ื™ ืื• ืขืจืš NULL ืื• ืืช ืฉื ื”ืคืงื•ื“ื” ื”ืžื•ืคืขืœืช ื‘ืืžืฆืขื•ืช pkexec. ืžื›ื™ื•ื•ืŸ ืฉืกืคื™ืจืช ื”ืืจื’ื•ืžื ื˜ื™ื ืœื ื ื‘ื“ืงื” ืžื•ืœ ื”ืชื•ื›ืŸ ื”ืืžื™ืชื™ ืฉืœ ื”ืžืขืจืš ื•ื”ื ื—ื” ื”ื™ื ืฉื”ื™ื ืชืžื™ื“ ื’ื“ื•ืœื” ืž-1, ืื ืชื”ืœื™ืš ืขื‘ืจ ืžืขืจืš argv ืจื™ืง, ื›ืคื™ ืฉืžืืคืฉืจืช ืคื•ื ืงืฆื™ื™ืช Linux execve, pkexec ื™ืชื™ื™ื—ืก ืœ-NULL ื›ืืจื’ื•ืžื ื˜ ื”ืจืืฉื•ืŸ ( ืฉื ื”ืชื”ืœื™ืš) ื•ื”ื‘ื ื›ืžื• ืžื—ื•ืฅ ืœื–ื™ื›ืจื•ืŸ ื”ืžืื’ืจ, ื›ืžื• ื”ืชื•ื›ืŸ ื”ื‘ื ืฉืœ ื”ืžืขืจืš. |โ€”โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”+โ€”โ€”โ€”โ€”|โ€”โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”+โ€”โ€”โ€”โ€”| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |โ€”-|โ€”-+โ€”-|โ€”-+โ€”โ€”+โ€”โ€”|โ€”โ€”|โ€”-|โ€”-+โ€”-|โ€”-+โ€”โ€”+โ€”โ€”|โ€”โ€”| VVVVVV "ืชื•ื›ื ื™ืช" "-ืื•ืคืฆื™ื”" NULL "ืขืจืš" "PATH=ืฉื" NULL

ื”ื‘ืขื™ื” ื”ื™ื ืฉืื—ืจื™ ืžืขืจืš argv ื™ืฉ ืžืขืจืš envp ื‘ื–ื™ื›ืจื•ืŸ ื”ืžื›ื™ืœ ืžืฉืชื ื™ ืกื‘ื™ื‘ื”. ืœืคื™ื›ืš, ืื ืžืขืจืš argv ืจื™ืง, pkexec ืžื—ืœืฅ ื ืชื•ื ื™ื ืขืœ ื”ืคืงื•ื“ื” ืขื ื”ืจืฉืื•ืช ื’ื‘ื•ื”ื•ืช ืžื”ืืœืžื ื˜ ื”ืจืืฉื•ืŸ ืฉืœ ื”ืžืขืจืš ืขื ืžืฉืชื ื™ ืกื‘ื™ื‘ื” (argv[1] ื”ืคืš ื–ื”ื” ืœ-envp[0]), ืฉืชื•ื›ื ื ื ื™ืชืŸ ืœืฉืœื•ื˜ ืขืœ ื™ื“ื™ ื”ืชื•ืงืฃ.

ืœืื—ืจ ืงื‘ืœืช ื”ืขืจืš ืฉืœ argv[1], pkexec ืžื ืกื”, ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื ืชื™ื‘ื™ ื”ืงื•ื‘ืฅ ื‘-PATH, ืœืงื‘ื•ืข ืืช ื”ื ืชื™ื‘ ื”ืžืœื ืœืงื•ื‘ืฅ ื”ื”ืคืขืœื” ื•ื›ื•ืชื‘ืช ืžืฆื‘ื™ืข ืœืžื—ืจื•ื–ืช ืขื ื”ื ืชื™ื‘ ื”ืžืœื ื‘ื—ื–ืจื” ืœ-argv[1], ืืฉืจ ืžื•ื‘ื™ืœ ืœื”ื—ืœืคืช ื”ืขืจืš ืฉืœ ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ื”ืจืืฉื•ืŸ, ืฉื›ืŸ argv[1] ื–ื”ื” ืœ-envp[0]. ืขืœ ื™ื“ื™ ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื”ืฉื ืฉืœ ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ื”ืจืืฉื•ืŸ, ืชื•ืงืฃ ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืžืฉืชื ื” ืกื‘ื™ื‘ื” ืื—ืจ ื‘-pkexec, ืœืžืฉืœ, ืœื”ื—ืœื™ืฃ ืืช ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” "LD_PRELOAD", ืฉืื™ื ื• ืžื•ืชืจ ื‘ืชื•ื›ื ื™ื•ืช suid, ื•ืœืืจื’ืŸ ืืช ื˜ืขื™ื ืช ื”ืกืคืจื™ื™ื” ื”ืžืฉื•ืชืคืช ืฉืœื”ื ืœ- ืชื”ืœื™ืš.

ื ื™ืฆื•ืœ ื”ืขื‘ื•ื“ื” ื›ื•ืœืœ ื”ื—ืœืคืช ื”ืžืฉืชื ื” GCONV_PATH, ื”ืžืฉืžืฉ ืœืงื‘ื™ืขืช ื”ื ืชื™ื‘ ืœืกืคืจื™ื™ืช ื”ื”ืžืจื” ืฉืœ ื”ืกืžืœื™ื, ื”ื ื˜ืขืŸ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ื‘ืขืช ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” g_printerr(), ืฉื”ืงื•ื“ ืฉืœื” ืžืฉืชืžืฉ ื‘- iconv_open(). ืขืœ ื™ื“ื™ ื”ื’ื“ืจื” ืžื—ื“ืฉ ืฉืœ ื”ื ืชื™ื‘ ื‘-GCONV_PATH, ืชื•ืงืฃ ื™ื›ื•ืœ ืœื”ื‘ื˜ื™ื— ืฉื–ื• ืœื ืกืคืจื™ื™ืช iconv ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉื ื˜ืขื ืช, ืืœื ืกืคืจื™ื” ืžืฉืœื•, ืฉื”ืžื˜ืคืœื™ื ืžืžื ื” ื™ื‘ื•ืฆืขื• ื›ืืฉืจ ื”ื•ื“ืขืช ืฉื’ื™ืื” ืžื•ืฆื’ืช ื‘ืฉืœื‘ ืฉื‘ื• pkexec ืขื“ื™ื™ืŸ ืคื•ืขืœ ืขื ื–ื›ื•ื™ื•ืช ื”ืฉื•ืจืฉ ื•ืœืคื ื™ ื”ื”ืฉืงื” ื ื‘ื“ืงื•ืช.

ื™ืฆื•ื™ืŸ ื›ื™ ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉื”ื‘ืขื™ื” ื ื’ืจืžืช ื›ืชื•ืฆืื” ืžืฉื—ื™ืชื•ืช ื–ื™ื›ืจื•ืŸ, ื ื™ืชืŸ ืœื ืฆืœ ืื•ืชื” ื‘ืื•ืคืŸ ืืžื™ืŸ ื•ื—ื–ื•ืจ ืœืœื ืงืฉืจ ืœืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ื—ื•ืžืจื” ืฉื‘ื” ื ืขืฉื” ืฉื™ืžื•ืฉ. ื”ื ื™ืฆื•ืœ ื”ืžื•ื›ืŸ ื ื‘ื“ืง ื‘ื”ืฆืœื—ื” ื‘ืื•ื‘ื•ื ื˜ื•, ื“ื‘ื™ืืŸ, ืคื“ื•ืจื” ื•-CentOS, ืืš ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื’ื ื‘ื”ืคืฆื•ืช ืื—ืจื•ืช. ื”ื ื™ืฆื•ืœ ื”ืžืงื•ืจื™ ืขื“ื™ื™ืŸ ืœื ื–ืžื™ืŸ ืœืฆื™ื‘ื•ืจ, ืžื” ืฉืžืฆื‘ื™ืข ืขืœ ื›ืš ืฉื”ื•ื ื˜ืจื™ื•ื•ื™ืืœื™ ื•ื ื™ืชืŸ ืœืฉื—ื–ืจ ืื•ืชื• ื‘ืงืœื•ืช ืขืœ ื™ื“ื™ ื—ื•ืงืจื™ื ืื—ืจื™ื, ื•ืœื›ืŸ ื—ืฉื•ื‘ ืœื”ืชืงื™ืŸ ืืช ืขื“ื›ื•ืŸ ื”ืชื™ืงื•ืŸ ื‘ื”ืงื“ื ื”ืืคืฉืจื™ ื‘ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืžืฉืชืžืฉื™ื. Polkit ื–ืžื™ืŸ ื’ื ืขื‘ื•ืจ ืžืขืจื›ื•ืช BSD ื•- Solaris, ืืš ืœื ื ื—ืงืจ ืœืฉื™ืžื•ืฉ ื‘ื”ืŸ. ืžื” ืฉื™ื“ื•ืข ื”ื•ื ืฉืœื ื ื™ืชืŸ ืœื‘ืฆืข ืืช ื”ื”ืชืงืคื” ื‘-OpenBSD, ืžืื—ืจ ื”ืœื™ื‘ื” ืฉืœ OpenBSD ืื™ื ื” ืžืืคืฉืจืช ืœื”ืขื‘ื™ืจ ืขืจืš null argc ื›ืืฉืจ ืงื•ืจืื™ื execve() .

ื”ื‘ืขื™ื” ืงื™ื™ืžืช ืžืื– ืžืื™ 2009, ืžืื– ื”ื•ืกืคืช ื”ืคืงื•ื“ื” pkexec. ื”ืชื™ืงื•ืŸ ืœืคื’ื™ืขื•ืช ืฉืœ PolKit ื–ืžื™ืŸ ื›ืขืช ื›ืชื™ืงื•ืŸ (ืœื ืฉื•ื—ืจืจื” ืžื”ื“ื•ืจืช ืชื™ืงื•ืŸ), ืืš ืžื›ื™ื•ื•ืŸ ืฉืžืคืชื—ื™ ื”ืคืฆื” ืงื™ื‘ืœื• ื”ื•ื“ืขื” ืขืœ ื”ื‘ืขื™ื” ืžืจืืฉ, ืจื•ื‘ ื”ื”ืคืฆื•ืช ืคืจืกืžื• ืืช ื”ืขื“ื›ื•ืŸ ื‘ืžืงื‘ื™ืœ ืœื—ืฉื™ืคืช ื”ืžื™ื“ืข ืขืœ ื”ืคื’ื™ืขื•ืช. ื”ื‘ืขื™ื” ืชื•ืงื ื” ื‘-RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux ื•ืžื ื’'ืจื•. ื›ืืžืฆืขื™ ื–ืžื ื™ ืœื—ืกื™ืžืช ื”ืคื’ื™ืขื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืกื™ืจ ืืช ื“ื’ืœ ื”ืฉื•ืจืฉ ืฉืœ SUID ืžื”ืชื•ื›ื ื™ืช /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").



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

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