ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ 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), ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ioct-Π²ΡΠ·ΠΎΠ²ΠΎΠΌ TIOCSPGRP. Π Π°Π±ΠΎΡΠΈΠΉ ΡΠΊΡΠΏΠ»ΠΎΠΈΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² Debian 10 Ρ ΡΠ΄ΡΠΎΠΌ 4.19.0-13-amd64.
ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π°ΠΊΡΠ΅Π½Ρ ΡΡΠ°Π²ΠΈΡΡΡ Π½Π΅ ΡΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ°, ΡΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π² ΡΠ΄ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΠ²ΠΎΠ΄ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π΅ ΡΡΠ΅ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠΏΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΊΡΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ CFI (Control Flow Integrity), Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΡ Π½Π° ΠΏΠΎΠ·Π΄Π½ΠΈΡ ΡΡΠ°Π΄ΠΈΡΡ Π°ΡΠ°ΠΊΠΈ, ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅, Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Rust ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΡ ΡΠ·ΡΠΊΠ° Π‘ΠΈ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Checked C), Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π·Π°ΡΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° panic_on_oops, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΡΠΊΡΡΡ ΡΠ΄ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°ΠΊΠΈΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠ°ΠΊ seccomp.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru