Раскрыта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° эксплуатации уязвимости Π² tty-подсистСмС ядра Linux

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ