ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся LinuxTL;DR. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ исслСдуСм Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Π΅ схСмы (hardening schemes), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² пяти популярных дистрибутивах Linux. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΡ‹ взяли ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ядра ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ схСмы Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ дистрибутивы OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 ΠΈ 7, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ubuntu 14.04, 12.04 ΠΈ 18.04 LTS.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ основныС схСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ стСковыС ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠΈ ΠΈ нСзависимый ΠΎΡ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠΎΠ΄, Π΅Ρ‰Ρ‘ Π½Π΅ всСми ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Битуация Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅ Ρƒ компиляторов, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ ΠΎΡ‚ уязвимостСй Π²Ρ€ΠΎΠ΄Π΅ столкновСния стСка (stack clash), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Ρ†Π΅Π½Ρ‚Ρ€ внимания Π² январС послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± уязвимостях Π² systemd. Но Π½Π΅ всё Ρ‚Π°ΠΊ Π±Π΅Π·Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ. Π’ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ части Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΈ ΠΈΡ… число растёт ΠΎΡ‚ вСрсии ΠΊ вСрсии.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, Ρ‡Ρ‚ΠΎ наибольшСС количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Ubuntu 18.04 Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°Ρ‚Π΅ΠΌ слСдуСт Debian 9. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² OpenSUSE 12.4, CentOS 7 ΠΈ RHEL 7 Ρ‚ΠΎΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ схСмы Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ столкновСния стСка примСняСтся Π΅Ρ‰Ρ‘ ΡˆΠΈΡ€Π΅ ΠΏΡ€ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡ‚Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ высокоС качСство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. НСсмотря Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… инструмСнтов для статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈ динамичСского Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΎ врСмя выполнСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ прогрСсс Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ компиляторов ΠΈ языков программирования, соврСмСнноС ПО ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ страдаСт ΠΎΡ‚ уязвимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ. Битуация Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅ Π² экосистСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΊΠΎΠ΄. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сталкиваСмся с Π²Π΅Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ поиска Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… эксплуатируСмых ошибок, Π½ΠΎ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Тёсткими Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ, Π° Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅ уязвимый ΠΈΠ»ΠΈ Π³Π»ΡŽΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π—Π΄Π΅ΡΡŒ Π² ΠΈΠ³Ρ€Ρƒ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ»ΠΈ усилСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (hardening). НСкоторыС Ρ‚ΠΈΠΏΡ‹ ошибок ΠΌΡ‹ Π½Π΅ Π² силах ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ, Π·Π°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Тизнь Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° слоТнСС ΠΈ частично Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ² ΠΈΠ»ΠΈ помСшав эксплуатации этих ошибок. Вакая Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ всСх соврСмСнных ОБ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ слоТности, эффСктивности ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: ΠΎΡ‚ стСковых ΠΊΠ°Π½Π°Ρ€Π΅Π΅ΠΊ (stack canaries) ΠΈ ASLR Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‰ΠΈΡ‚ CFI ΠΈ ROP. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² самых популярных дистрибутивах Linux Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ свойства Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· систСмы управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дистрибутива.

CVE ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

ВсС ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ с названиями Π²Ρ€ΠΎΠ΄Π΅ Β«Π‘Π°ΠΌΡ‹Π΅ уязвимыС прилоТСния Π³ΠΎΠ΄Π°Β» ΠΈΠ»ΠΈ Β«Π‘Π°ΠΌΡ‹Π΅ уязвимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы». ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΌ приводят статистику ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ количСству записСй ΠΎΠ± уязвимостях Ρ‚ΠΈΠΏΠ° CVE (Common Vulnerability and Exposures), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ· ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Ρ‹ уязвимости (NVD) ΠΎΡ‚ NIST ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… источников. ВпослСдствии эти прилоТСния ΠΈΠ»ΠΈ ОБ Ρ€Π°Π½ΠΆΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ количСству CVE. К соТалСнию, хотя CVE ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ информирования поставщиков ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΠ½ΠΈ ΠΌΠ°Π»ΠΎ говорят ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ бСзопасности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, рассмотрим ΠΎΠ±Ρ‰Π΅Π΅ количСство CVE Π·Π° послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π° для ядра Linux ΠΈ пяти Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных сСрвСрных дистрибутивов, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ubuntu, Debian, Red Hat Enterprise Linux ΠΈ OpenSUSE.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 1

Π§Ρ‚ΠΎ Π½Π°ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ этот Π³Ρ€Π°Ρ„ΠΈΠΊ? ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΠΈ большСС количСство CVE, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ дистрибутив Π±ΠΎΠ»Π΅Π΅ уязвим, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ? ΠžΡ‚Π²Π΅Ρ‚Π° Π½Π΅Ρ‚. НапримСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Debian Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ТёсткиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, скаТСм, с OpenSUSE ΠΈΠ»ΠΈ RedHat Linux, ΠΈ всё ΠΆΠ΅ Ρƒ Debian большС CVE. Однако ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΡΠ»Π°Π±Π»Π΅Π½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π΄Π°ΠΆΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ CVE Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, являСтся Π»ΠΈ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ эксплуатируСмой. Π‘Π°Π»Π»Ρ‹ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΡΡ‚ΠΈ Π΄Π°ΡŽΡ‚ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, насколько вСроятно использованиС уязвимости, Π½ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни зависит ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π² Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… систСмах, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ рСсурсов ΠΈ возмоТностСй Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, отсутствиС ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² CVE Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… нСзарСгистрированных ΠΈΠ»ΠΈ нСизвСстных уязвимостях. Π Π°Π·Π½ΠΈΡ†Π° Π² CVE ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒΡΡ Π½Π΅ качСством ПО, Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ рСсурсы, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° тСстированиС, ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π±Π°Π·Ρ‹. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ большСС количСство CVE Ρƒ Debian ΠΌΠΎΠΆΠ΅Ρ‚ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Debian поставляСт большС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

РазумССтся, систСма CVE Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Π§Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ сбоя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы эксплуатации ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ обнаруТСния ΠΈ рСагирования. На рис.Β 2 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ уязвимостСй для всСх дистрибутивов Π·Π° послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π° (источник). Π‘Ρ€Π°Π·Ρƒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ CVE ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании (DoS), Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ памяти, ΡƒΡ‚Π΅Ρ‡ΠΊΠ° (ΡΠΊΡΡ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ эскалация ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ. Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ CVE ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ нСсколько Ρ€Π°Π· Π² Ρ€Π°Π·Π½Ρ‹Ρ… катСгориях, Π² Ρ†Π΅Π»ΠΎΠΌ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΈΠ· Π³ΠΎΠ΄Π° Π² Π³ΠΎΠ΄. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ ΠΎΡ†Π΅Π½ΠΈΠΌ использованиС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… схСм Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для прСдотвращСния эксплуатации ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… уязвимостСй.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 2

Π—Π°Π΄Π°Ρ‡ΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

  • Какова Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивов Linux? КакиС Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ядрС ΠΈ прилоТСниях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства?
  • Как со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ измСнилось принятиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивов?
  • ΠšΠ°ΠΊΠΎΠ²Ρ‹ срСдниС зависимости ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дистрибутива?
  • КакиС Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°?

Π’Ρ‹Π±ΠΎΡ€ дистрибутивов

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, слоТно Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ статистику ΠΏΠΎ установкам дистрибутивов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв количСство Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° количСство Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… установок. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Unix ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСрных систСм (Π½Π° Π²Π΅Π±-сСрвСрах 69,2%, ΠΏΠΎ статистикС W3techs ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… источников), ΠΈ ΠΈΡ… доля постоянно растёт. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для нашСго исслСдования ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° дистрибутивах, доступных ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Google Cloud. Π’ частности, ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ОБ:

Дистрибутив/вСрсия
Π―Π΄Ρ€ΠΎ
Π‘ΠΈΠ»Π΄

OpenSUSE 12.4
4.12.14-95.3-default
#1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)

Debian 9 (stretch)
4.9.0-8-amd64
#1 SMP Debian 4.9.130-2 (2018-10-27)

CentOS 6.10
2.6.32-754.10.1.el6.x86_64
#1 SMP Tue Jan 15 17:07:28 UTC 2019

CentOS 7
3.10.0-957.5.1.el7.x86_64
#1 SMP Fri Feb 1 14:54:57 UTC 2019

Red Hat Enterprise Linux Server 6.10 (Santiago)
2.6.32-754.9.1.el6.x86_64
#1 SMP Wed Nov 21 15:08:21 EST 2018

Red Hat Enterprise Linux Server 7.6 (Maipo)
3.10.0-957.1.3.el7.x86_64
#1 SMP Thu Nov 15 17:36:42 UTC 2018

Ubuntu 14.04 (Trusty Tahr)
4.4.0–140-generic

#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20…

Ubuntu 16.04 (Xenial Xerus)
4.15.0–1026-gcp
#27~16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018

Ubuntu 18.04 (Bionic Beaver)
4.15.0–1026-gcp
#27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018

Π’Π°Π±Π»ΠΈΡ†Π° 1

Анализ

Π˜Π·ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ядра ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ свойства ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², доступных Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дистрибутива ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ рассматриваСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· Π·Π΅Ρ€ΠΊΠ°Π» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дистрибутива, игнорируя ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π΅Ρ€ΠΊΠ°Π» β€˜testing’ Π² Debian) ΠΈ сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Nvidia со стандартных Π·Π΅Ρ€ΠΊΠ°Π»). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π½Π΅ рассматриваСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ компиляции ядра ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ.

Анализ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра

ΠœΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ скрипт Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° основС свободного Ρ‡Π΅ΠΊΠ΅Ρ€Π° kconfig. РассматриваСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Ρƒ Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… дистрибутивов ΠΈ сравниваСм ΠΈΡ… со списком ΠΎΡ‚ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π° самозащиты ядра (KSPP). Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°Β 2 описываСт ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ настройку: Π³Π°Π»ΠΎΡ‡ΠΊΠ° стоит для дистрибутивов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ рСкомСндациям KSSP (Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² см. здСсь; Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ появились ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊ Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ систСму Π² ΠΈΡ… отсутствиС).

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux

Π’ Ρ†Π΅Π»ΠΎΠΌ, Π² Π½ΠΎΠ²Ρ‹Ρ… ядрах Π±ΠΎΠ»Π΅Π΅ строгиС настройки ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. НапримСр, Ρƒ CentOS 6.10 ΠΈ RHEL 6.10 Π½Π° ядрС 2.6.32 Π½Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° критичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π½ΠΎΠ²Ρ‹Ρ… ядрах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SMAP, строгиС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ RWX, рандомизация адрСсов ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° copy2usr. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π±ΠΎΠ»Π΅Π΅ старых вСрсиях ядра ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ β€” Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ это всё Ρ€Π°Π²Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ отсутствиС Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Аналогично, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ отсутствуСт Π² Π΄Π°Π½Π½ΠΎΠΉ вСрсии, Π° для бСзопасности этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, это считаСтся Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для бСзопасности. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ uprobes ΠΈ kprobes, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ядра ΠΈ BPF/eBPF. Наша рСкомСндация состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для обСспСчСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ для использования, Π° ΠΈΡ… эксплуатация ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСдоносныС ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ»ΠΈΡΡŒ Π² систСмС. Но Ссли эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, систСмный администратор Π΄ΠΎΠ»ΠΆΠ΅Π½ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° злоупотрСблСниями.

Π˜Π·ΡƒΡ‡Π°Ρ Π΄Π°Π»Π΅Π΅ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 2, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ соврСмСнныС ядра ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ эксплуатации Ρ‚Π°ΠΊΠΈΡ… уязвимостСй, ΠΊΠ°ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка/ΠΊΡƒΡ‡ΠΈ. Однако ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ самыС послСдниС популярныС дистрибутивы Π΅Ρ‰Ρ‘ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ grsecurity) ΠΈΠ»ΠΈ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сочСтаниС Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ со схСмами Ρ‚ΠΈΠΏΠ° R^X для ΠΊΠΎΠ΄Π°). Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅, Π΄Π°ΠΆΠ΅ эти Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ спСктра Π°Ρ‚Π°ΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, систСмным администраторам ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ эксплойтов Π²ΠΎ врСмя выполнСния.

Анализ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… дистрибутивов Ρ€Π°Π·Π½Ρ‹Π΅ характСристики ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции, зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ‚.Β Π΄. Различия ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°ΠΆΠ΅ для родствСнных дистрибутивов ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с нСбольшим количСством зависимостСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, coreutils Π² Ubuntu ΠΈΠ»ΠΈ Debian). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ различия, ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ всС доступныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ΠΈΡ… содСрТимоС ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ зависимости. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΡ‹ отслСТивали Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ зависит, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° отслСТивали Π΅Π³ΠΎ зависимости. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈΠ·Π»ΠΎΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄Ρ‹.

Дистрибутивы

Π’ ΠΎΠ±Ρ‰Π΅ΠΉ слоТности ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ 361Β 556 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для всСх дистрибутивов, извлСкая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с Π·Π΅Ρ€ΠΊΠ°Π» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠœΡ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±Π΅Π· исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ELF, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ исходныС ΠΊΠΎΠ΄Ρ‹, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ Ρ‚.Β Π΄. ПослС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ 129Β 569 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², содСрТащих Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности 584Β 457 Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². РаспрСдСлСниС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ дистрибутивам ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис.Β 3.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 3

МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ соврСмСннСС дистрибутив, Ρ‚Π΅ΠΌ большС Π² Π½Ρ‘ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. ΠŸΡ€ΠΈ этом ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ubuntu ΠΈ Debian Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΊΠ°ΠΊ исполняСмых, Ρ‚Π°ΠΊ ΠΈ динамичСских ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ), Ρ‡Π΅ΠΌ CentOS, SUSE ΠΈ RHEL, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ влияСт Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ Ubuntu ΠΈ Debian (Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ всС Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ всСх вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ нСсколько Ρ€Π°Π·). Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ, Ссли ΡƒΡ‡Π΅ΡΡ‚ΡŒ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ части экосистСмы, ΠΊΠ°ΠΊ уязвимая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° всС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΅Ρ‘. Π’ качСствС Ρ‚ΠΎΡ‡ΠΊΠΈ отсчёта посмотрим Π½Π° распрСдСлСниС числа зависимостСй ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ОБ:

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 4

ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх дистрибутивах Ρƒ 60% ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎ 10 зависимостСй. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² количСство зависимостСй Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС (Π±ΠΎΠ»Π΅Π΅ 100). Π’ΠΎ ΠΆΠ΅ самоС относится ΠΈ ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ зависимостям ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: ΠΊΠ°ΠΊ ΠΈ оТидалось, нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π² дистрибутивС, поэтому уязвимости Π² этих Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ·Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ высокий риск. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ пСрСчислСны 20 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… зависимостями Π² SLES, Centos 7, Debian 9 ΠΈ Ubuntu 18.04 (Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС ΡƒΠΊΠ°Π·Π°Π½ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ количСство ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… зависимостСй).

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Π’Π°Π±Π»ΠΈΡ†Π° 3

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚. Π₯отя всС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ОБ построСны для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64, Π° Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ x86_64 ΠΈ x86, Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ часто содСрТат Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис.Β 5.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 5

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ углубимся Π² характСристики Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ².

Бтатистика Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Как Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². НСсколько дистрибутивов Linux ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ со скриптами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. НапримСр, Π² Debian/Ubuntu Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ скрипт. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

$ hardening-check $(which docker)
/usr/bin/docker:
 Position Independent Executable: yes
 Stack protected: yes
 Fortify Source functions: no, only unprotected functions found!
 Read-only relocations: yes
 Immediate binding: yes

Π‘ΠΊΡ€ΠΈΠΏΡ‚ провСряСт ΠΏΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹:

  • Position Independent Executable (PIE): ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² памяти тСкстовый Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ссли Π² ядрС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ASLR.
  • Stack Protected: Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π»ΠΈ стСковыС ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠΈ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Π½Π° столкновСниС стСка.
  • Fortify Source: Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π»ΠΈ нСбСзопасныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, strcpy) ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ бСзопасными Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ, Π° провСряСмыС Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹Β β€” ΠΈΡ… Π½Π΅ провСряСмыми Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, memcpy вмСсто __memcpy_chk).
  • Read-only relocations (RELRO): ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π»ΠΈ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ пСрСмСщСния ΠΊΠ°ΠΊ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния», Ссли ΠΎΠ½ΠΈ сработали Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния.
  • Immediate binding (нСмСдлСнная привязка): Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ срСды выполнСния всС пСрСмСщСния ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (это эквивалСнтно ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ RELRO).

Достаточно Π»ΠΈ Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²? К соТалСнию, Π½Π΅Ρ‚. Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ способы ΠΎΠ±Ρ…ΠΎΠ΄Π° всСх Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‰ΠΈΡ‚, Π½ΠΎ Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Тёсткая Π·Π°Ρ‰ΠΈΡ‚Π°, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΠ»Π°Π½ΠΊΠ° для Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° RELRO Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ссли дСйствуСт PIE ΠΈ нСмСдлСнная привязка. Аналогично, ΠΏΠΎΠ»Π½Ρ‹ΠΉ ASLR Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для создания Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ эксплойта. Однако ΠΈΠ·ΠΎΡ‰Ρ€Ρ‘Π½Π½Ρ‹Π΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹: ΠΈΡ… отсутствиС ΠΏΠΎ сути ускорит Π²Π·Π»ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΌΠ΅Ρ€Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ.

ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² рассматриваСмых дистрибутивах Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ этими, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Ρ‰Ρ‘ трСмя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:

  • НСисполняСмый Π±ΠΈΡ‚ (NX) ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² любом Ρ€Π΅Π³ΠΈΠΎΠ½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ исполняСмым, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΡƒΡ‡Π΅ стСка ΠΈ Ρ‚.Β Π΄.
  • RPATH/RUNPATH ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ выполнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ динамичСским Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ для поиска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для любой соврСмСнной систСмы: Π΅Π³ΠΎ отсутствиС позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ выполнСния ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ряду ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эскалация ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹).
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ столкновСния стСка обСспСчиваСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ стСк Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ области памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΊΡƒΡ‡Ρƒ). Учитывая Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ эксплойты, Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰ΠΈΠ΅ уязвимостями со столкновСниСм ΠΊΡƒΡ‡ΠΈ Π² systemd, ΠΌΡ‹ сочли умСстным Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π² наш Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Ρ‚Π°ΠΊ, Π±Π΅Π· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… Ρ†Π΅Ρ€Π΅ΠΌΠΎΠ½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ числам. Π’Π°Π±Π»ΠΈΡ†Ρ‹ 4 ΠΈ 5 содСрТат Π²Ρ‹ΠΆΠΈΠΌΠΊΡƒ Π°Π½Π°Π»ΠΈΠ·Π° исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивов, соотвСтствСнно.

  • Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π·Π°Ρ‰ΠΈΡ‚Π° NX Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²Π΅Π·Π΄Π΅, Π·Π° Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. Π’ частности, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ нСсколько Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π΅Ρ‘ использованиС Π² дистрибутивах Ubuntu ΠΈ Debian ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с CentOS, RHEL ΠΈ OpenSUSE.
  • Π‘Ρ‚Π΅ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³Π΄Π΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, особСнно Π² дистрибутивах со старыми ядрами. НСкоторый прогрСсс Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² послСдних дистрибутивах Centos, RHEL, Debian ΠΈ Ubuntu.
  • Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Debian ΠΈ Ubuntu 18.04, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ дистрибутивов плохая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° PIE.
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ столкновСний стСка слабо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² OpenSUSE, Centos 7 ΠΈ RHEL 7 ΠΈ практичСски отсутствуСт Ρƒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ….
  • ВсС дистрибутивы с соврСмСнными ядрами ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ RELRO, ΠΏΡ€ΠΈ этом Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Ubuntu 18.04, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ мСсто Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Debian.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅Β β€” срСдниС ΠΏΠΎ всСм вСрсиям Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Если ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдниС вСрсии Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚ΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, см. прогрСсс Debian с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ PIE). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дистрибутивов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ подсчётС статистики ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π° Π² нашСм Π°Π½Π°Π»ΠΈΠ·Π΅ ΡƒΠΊΠ°Π·Π°Π½ истинный ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΡƒΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ 5 ΠΈΠ· 50 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π΅ΠΌΡƒ ΠΎΡ†Π΅Π½ΠΊΡƒ 0,1, Ρ‡Ρ‚ΠΎ соотвСтствуСт 10% ΡƒΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Π’Π°Π±Π»ΠΈΡ†Π° 4. Π₯арактСристики Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½Π° рис.Β 3 (рСализация ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ²)

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Π’Π°Π±Π»ΠΈΡ†Π° 5. Π₯арактСристики Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½Π° рис.Β 3 (рСализация ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ)

Π’Π°ΠΊ прогрСсс Π΅ΡΡ‚ΡŒ? ΠžΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ Π΅ΡΡ‚ΡŒ: это Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· статистики ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ дистрибутивам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Debian), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² рис.Β 6 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π² Ρ‚Ρ€Ρ‘Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дистрибутивах Ubuntu LTS 5 (ΠΌΡ‹ опустили статистику Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ столкновСния стСка). ΠœΡ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ вСрсии ΠΊ вСрсии всё большС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ стСковых ΠΊΠ°Π½Π°Ρ€Π΅Π΅ΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ всё большС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ RELRO.

ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² спустя. Как укрСплялся Linux
Рис. 6

К соТалСнию, ряд исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π°Π·Π½Ρ‹Ρ… дистрибутивах ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ‰ΠΈΡ‚. НапримСр, взглянув Π½Π° Ubuntu 18.04, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ ngetty (Π·Π°ΠΌΠ΅Π½Π° getty), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ mksh ΠΈ lksh, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ picolisp, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ nvidia-cuda-toolkit (популярный ΠΏΠ°ΠΊΠ΅Ρ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с GPU-ускорСниСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ машинного обучСния) ΠΈ klibc-utils. Аналогично, Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ mandos-client (административный инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ автоматичСски ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами), Π° Ρ‚Π°ΠΊΠΆΠ΅ rsh-redone-client (повторная рСализация rsh ΠΈ rlogin) ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π· Π·Π°Ρ‰ΠΈΡ‚Ρ‹ NX, хотя Ρƒ Π½ΠΈΡ… ΠΏΡ€Π°Π²Π° SUID :(. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… suid-Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°Ρ… Π½Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ стСковыС ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Xorg.wrap ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Xorg).

РСзюмС ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ замСчания

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ нСсколько свойств бСзопасности соврСмСнных дистрибутивов Linux. Анализ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π² послСднСм дистрибутивС Ubuntu LTS (18.04) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² срСднСм самая сильная Π·Π°Ρ‰ΠΈΡ‚Π° уровня ОБ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ срСди дистрибутивов с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΌΠΈ ядрами, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ubuntu 14.04, 12.04 ΠΈ Debian 9. Однако рассмотрСнныС дистрибутивы CentOS, RHEL ΠΈ OpenSUSE Π² нашСм Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Π² послСдних вСрсиях (CentOS ΠΈ RHEL) ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ столкновСния стСка, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° основС Debian (Debian ΠΈ Ubuntu). Бравнивая вСрсии CentOS ΠΈ RedHat, ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ большиС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π²ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ стСковых ΠΊΠ°Π½Π°Ρ€Π΅Π΅ΠΊ ΠΈ RELRO с вСрсий 6 Π΄ΠΎ 7, Π½ΠΎ Π² срСднСм Π² CentOS Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Π΅ΠΌ Π² RHEL. Π’ Ρ†Π΅Π»ΠΎΠΌ, всСм дистрибутивам слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Π΅ PIE, которая, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Debian 9 ΠΈ Ubuntu 18.04, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ Π² 10% Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· нашСго Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ….

НаконСц, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ: хотя ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ исслСдованиС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, сущСствуСт мноТСство инструмСнтов бСзопасности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Lynis, Tiger, Hubble), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСбСзопасных ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. К соТалСнию, Π΄Π°ΠΆΠ΅ сильная Π·Π°Ρ‰ΠΈΡ‚Π° Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… конфигурациях Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС эксплойтов. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ‚Π²Ρ‘Ρ€Π΄ΠΎ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сосрСдоточив Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° модСлях эксплуатации ΠΈ прСдотвращая ΠΈΡ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

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