Π ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ systemd
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡΠΆΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄ΡΠ½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ (use-after-free), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅ΠΌ ΠΏΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Polkit Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ DBus-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ DBus-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΎΡΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΡΡΠ° ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½Π° DBus ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ DBus-ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ bus_verify_polkit_async(), Π΅ΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Polkit. ΠΠΎΡΠ»Π΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Polkit ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΆΠ΅ ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΊ Polkit Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΡΡΠ΅ ΡΡΠΏΠ΅Π²Π°ΡΡ ΠΎΡΠΈΡΡΠΈΡΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ DBus-ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π·.
Π‘ΡΠ΅Π΄ ΡΡΠ»ΡΠ³ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°, ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° systemd-machined, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ DBus API org.freedesktop.machine1.Image.Clone, Π²ΠΎΠ΄Π΅Ρ Π΄ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΊΠ΅ΡΠ° ΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Polkit. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
org.freedesktop.machine1.Image.Clone Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΈΠ² Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΊΠ°ΡΠΎ root (ΠΏΡΠΎΡΠΎΡΠΈΠΏΡΡ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½). ΠΠΎΠ΄ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°, Π±Π΅ΡΠ΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru