ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Π΅ΠΊΠΈΠΏΠ° Π½Π° Google Project Zero ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2020-29661) Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ioctl ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° TIOCSPGRP ΠΎΡ tty ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° Π·Π°ΡΠΈΡΠ°, ΠΊΠΎΠΈΡΠΎ Π±ΠΈΡ Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡΡ Π±ΡΠ³ Π±Π΅ΡΠ΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΎΡΠ΅ Π½Π° 3 Π΄Π΅ΠΊΠ΅ΠΌΠ²ΡΠΈ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° Π² ΡΠ΄ΡΠΎΡΠΎ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 5.9.13, Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π²Π΅ΡΠ΅ ΡΠ° ΠΎΡΡΡΡΠ°Π½ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Ρ ΡΠ΄ΡΠΎ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΎΡΠ΅ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). ΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (CVE-2020-29660) Π±ΡΡ Π° ΠΎΡΠΊΡΠΈΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ioctl ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ TIOCGSID, Π½ΠΎ ΠΈ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° ΡΠΈΡΠΎΠΊΠΎ ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΡΡΠ΅Π·Π°ΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π° drivers/tty/tty_jobctrl.c, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΏΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ (use-after-free), Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ioctl ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ TIOCSPGRP. Π Π°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡ Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅ Π² Debian 10 Ρ ΡΠ΄ΡΠΎ 4.19.0-13-amd64.
Π ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ Π°ΠΊΡΠ΅Π½ΡΡΡ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡ, Π° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΠ·Π²ΠΎΠ΄ΡΡ Π½Π΅ Π΅ ΡΡΠ΅ΡΠΈΡΠ΅Π»Π΅Π½, ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΠ°ΡΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΊΡΠΏΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ» Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° CFI (Control Flow Integrity), ΠΊΠΎΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠ° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠΈ Π½Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΈ Π΅ΡΠ°ΠΏΠΈ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ°, ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΡΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Π² Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ΅Π½ ΠΏΠ»Π°Π½, ΡΠ΅ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ ΠΈΠ»ΠΈ Π½Π° Π΅Π·ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΡΠΎ Rust ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Checked C), Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ±ΠΎΡΠΊΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡΡΠ°, ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΡΠ΅. Π‘ΡΠ΅Π΄ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° Π·Π°ΡΠΈΡΠ° ΡΡΡΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° panic_on_oops, ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π· ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ, ΠΊΠ°ΡΠΎ seccomp.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
