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