Qualys ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡ (CVE-2021-4034) Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Polkit (ΠΏΠΎΡΠ°Π½ΠΎ PolicyKit) ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ Π·Π° Π΄Π° ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π΄Π° Π²ΡΡΠ°Ρ Π΄Π΅ΡΡΡΠ²Π° Π·Π° ΠΊΠΎΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠ°Π²Π° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ. Π Π°Π½Π»ΠΈΠ²ΠΎΡΡΠ° ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈΠΎΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π΄Π° Π³ΠΈ Π΅ΡΠΊΠ°Π»ΠΈΡΠ° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° root ΠΈ Π΄Π° ΡΡΠ΅ΠΊΠ½Π΅ ΡΠ΅Π»ΠΎΡΠ½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π²ΡΠ· ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π±Π΅ΡΠ΅ ΡΠΎ ΠΊΠΎΠ΄Π½ΠΎ ΠΈΠΌΠ΅ PwnKit ΠΈ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ² Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ Π΅ΠΊΡΠΏΠ»ΠΎΠ°Ρ ΠΊΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° Linux.
ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π΅ ΠΏΡΠΈΡΡΡΠ΅Π½ Π²ΠΎ Π°Π»Π°ΡΠΊΠ°ΡΠ° pkexec Π½Π° PolKit, ΠΊΠΎΡΠ° Π΄ΠΎΠ°ΡΠ° ΡΠΎ ΠΊΠΎΡΠ΅Π½ΡΠΊΠΎΡΠΎ Π·Π½Π°ΠΌΠ΅Π½ΡΠ΅ SUID ΠΈ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠΎ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° Π΄ΡΡΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠΏΠΎΡΠ΅Π΄ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° PolKit. ΠΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° pkexec, Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ root, Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ. ΠΠ° Π½Π°ΠΏΠ°Π΄, Π½Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ° ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ PolKit, Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ ΠΊΠΎΡΠ΅Π½ΡΠΊΠΈΠΎΡ Π°ΡΡΠΈΠ±ΡΡ SUID Π·Π° ΠΈΠ·Π²ΡΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ Π°Π»Π°ΡΠΊΠ°ΡΠ° pkexec.
Pkexec Π½Π΅ ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠ° Π½Π° Π±ΡΠΎΠ΅ΡΠ΅ΡΠΎ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° (argc) ΠΏΠΎΠΌΠΈΠ½Π°ΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ. Π Π°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° pkexec ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°Π° Π΄Π΅ΠΊΠ° ΠΏΡΠ²ΠΈΠΎΡ Π·Π°ΠΏΠΈΡ Π²ΠΎ Π½ΠΈΠ·Π°ΡΠ° argv ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π³ΠΎ ΡΠΎΠ΄ΡΠΆΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ (pkexec), Π° Π²ΡΠΎΡΠΈΠΎΡ ΠΈΠ»ΠΈ NULL Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π»Π°Π½ΡΠΈΡΠ°Π½Π° ΠΏΡΠ΅ΠΊΡ pkexec. ΠΠΈΠ΄Π΅ΡΡΠΈ Π±ΡΠΎΠ΅ΡΠ΅ΡΠΎ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π½Π° Π½ΠΈΠ·Π°ΡΠ° ΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π΄Π΅ΠΊΠ° Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠ΄ 1, Π°ΠΊΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΌΡ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅ ΠΏΡΠ°Π·Π½Π° argv Π½ΠΈΠ·Π°, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Linux execve, pkexec ΡΠ΅ Π³ΠΎ ΡΡΠ΅ΡΠΈΡΠ° NULL ΠΊΠ°ΠΊΠΎ ΠΏΡΠ² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ( ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ) ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΊΠ°ΠΊΠΎ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΡΠ°ΠΌΠΏΠΎΠ½ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½ΠΈ Π½Π° Π½ΠΈΠ·Π°ΡΠ°. |βββ+βββ+ββ+ββββ|βββ+βββ+ββ+ββββ| | Π°ΡΠ³Π²[0] | Π°ΡΠ³Π²[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, Π½Π°ΠΏΠ°ΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠΈ Π΄Π° Π½Π΅ Π΅ Π²ΡΠΈΡΠ°Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΊΠΎΠ½ΠΎΠΏΠΈΡΠΈ, ΡΡΠΊΡ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΈΠ·Π²ΡΡΠ΅Π½ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ ΠΏΠΎΡΠ°ΠΊΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠ° Π²ΠΎ ΡΠ°Π·Π°ΡΠ° ΠΊΠΎΠ³Π° pkexec ΡΓ¨ ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° root ΠΈ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ°Ρ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π·Π° Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠ°Π½ΠΎ Π΅ Π΄Π΅ΠΊΠ° ΠΈ ΠΏΠΎΠΊΡΠ°Ρ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ ΠΎΠ΄ ΠΎΡΡΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΡΠΎΡ ΠΌΠΎΠΆΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΎ ΠΈ ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ° Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅Π½Π°ΡΠ° Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΠΎΡ Π΅ΠΊΡΠΏΠ»ΠΎΠ°Ρ Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠ°Π½ Π½Π° Ubuntu, Debian, Fedora ΠΈ 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 ΠΈ Manjaro. ΠΠ°ΠΊΠΎ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΊΠ° Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΡΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΡΠ΅Π½ΡΠΊΠΎΡΠΎ Π·Π½Π°ΠΌΠ΅Π½ΡΠ΅ SUID ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° /usr/bin/pkexec (βchmod 0755 /usr/bin/pkexecβ).
ΠΠ·Π²ΠΎΡ: opennet.ru