ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Qualys Π²ΡΡΠ²ΠΈΠ»Π° ΡΡΠ²Π·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2021-4034) Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Polkit (Π±ΡΠ²ΡΠΈΠΉ PolicyKit), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ°. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π΄ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ PwnKit ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π² PolKit ΡΡΠΈΠ»ΠΈΡΠ΅ pkexec, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Ρ ΡΠ»Π°Π³ΠΎΠΌ SUID root ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ PolKit. ΠΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² pkexec Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΎΠ±ΠΎΠΉΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ root, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π΄ΠΎΡΡΡΠΏΠ°. ΠΠ»Ρ Π°ΡΠ°ΠΊΠΈ Π½Π΅Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² PolKit Π·Π°Π΄Π°Π½Ρ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠΎΠ±Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ pkexec Π±ΡΠ» Π²ΡΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΈΠ·Π½Π°ΠΊ SUID root.
Pkexec Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΡΡΡΡΡΠΈΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (argc), ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ pkexec ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° argv Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° (pkexec), Π° Π²ΡΠΎΡΠ°Ρ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, Π»ΠΈΠ±ΠΎ ΠΈΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΠΉ ΡΠ΅ΡΠ΅Π· pkexec ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΡΡΠΈΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π±ΠΎΠ»ΡΡΠ΅ 1, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° argv, ΡΡΠΎ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ execve Π² Linux, pkexec Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ (ΠΈΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°), Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π±ΡΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΡ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΈΠ΄ΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°. |———+———+——+————|———+———+——+————| | argv[0] | argv[1] | … | argv[argc] | envp[0] | envp[1] | … | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| V V V V V V «program» «-option» NULL «value» «PATH=name» 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 Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ root ΠΈ Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ·Π²Π°Π½Π° ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΏΠ»ΠΎΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ Π² Ubuntu, Debian, Fedora ΠΈ CentOS, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ . ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ»ΠΎΠΈΡ ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ, ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. Polkit ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ BSD-ΡΠΈΡΡΠ΅ΠΌ ΠΈ Solaris, Π½ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π² Π½ΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ Π°ΡΠ°ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½Π° Π² OpenBSD, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΄ΡΠΎ OpenBSD Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ execve() Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ argc.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Ρ ΠΌΠ°Ρ 2009 Π³ΠΎΠ΄Π°, ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pkexec. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ²Π·ΠΈΠΌΠΎΡΡΠΈ Π² PolKit ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΡΠ° (ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΡΡΠΈΠΉ Π²ΡΠΏΡΡΠΊ Π½Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½), Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Π±ΡΠ»ΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡΡΠ°Π½Π΅Π½Π° Π² RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux ΠΈ Manjaro. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±ΡΠ°ΡΡ ΡΠ»Π°Π³ SUID root Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ /usr/bin/pkexec («chmod 0755 /usr/bin/pkexec»).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru