Π’ ядро Linux 5.4 приняты ΠΏΠ°Ρ‚Ρ‡ΠΈ для ограничСния доступа root ΠΊ внутрСнностям ядра

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ принял Π² состав Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ выпуска ядра Linux 5.4 Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ «lockdown«, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Дэвидом Π₯оуэллсом (David Howells, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Red Hat) ΠΈ ΠœΡΡ‚ΡŒΡŽ Π“Π°Ρ€Ρ€Π΅Ρ‚ΠΎΠΌ (Matthew Garrett, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Google) для ограничСния доступа ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root ΠΊ ядру. Бвязанная с «lockdown» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вынСсСна Π² ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ LSM-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Linux Security Module), ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π±Π°Ρ€ΡŒΠ΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ UID 0 ΠΈ ядром, ограничивая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Если Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Ρ‚Π°ΠΊΠΈ добился выполнСния ΠΊΠΎΠ΄Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΌΠ΅Π½Ρƒ ядра ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ kexec ΠΈΠ»ΠΈ чтСния/записи памяти Ρ‡Π΅Ρ€Π΅Π· /dev/kmem. НаиболСС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ слСдствиСм ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ активности ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ UEFI Secure Boot ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ограничСния root Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² контСкстС усилСния Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ дистрибутивы ΡƒΠΆΠ΅ достаточно Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ сторонниС ΠΏΠ°Ρ‚Ρ‡ΠΈ для блокирования ΠΎΠ±Ρ…ΠΎΠ΄Π° UEFI Secure Boot. ΠŸΡ€ΠΈ этом Π² основной состав ядра ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ограничСния Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈΡΡŒ ΠΈΠ·-Π·Π° разногласий Π² ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ опасСний Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСм. ΠœΠΎΠ΄ΡƒΠ»ΡŒ «lockdown» Π²ΠΎΠ±Ρ€Π°Π» Π² сСбя ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² дистрибутивах ΠΏΠ°Ρ‚Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ подсистСмы, Π½Π΅ привязанной ΠΊ UEFI Secure Boot.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ lockdown ограничиваСтся доступ ΠΊ /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ интСрфСйсам ACPI ΠΈ MSR-рСгистрам CPU, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ kexec_file ΠΈ kexec_load, запрСщаСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² спящий Ρ€Π΅ΠΆΠΈΠΌ, лимитируСтся использованиС DMA для PCI-устройств, запрСщаСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠ΄Π° ACPI ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… EFI,
Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ манипуляции с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° прСрывания ΠΈ ΠΏΠΎΡ€Ρ‚Π° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ lockdown Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, собираСтся ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Π² kconfig ΠΎΠΏΡ†ΠΈΠΈ SECURITY_LOCKDOWN_LSM ΠΈ активируСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ядра «lockdown=», ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» «/sys/kernel/security/lockdown» ΠΈΠ»ΠΈ сборочныС ΠΎΠΏΡ†ΠΈΠΈ LOCK_DOWN_KERNEL_FORCE_*, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния «integrity» ΠΈ «confidentiality». Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ возмоТности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ ядро ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС ΠΏΠΎΠΌΠΈΠΌΠΎ этого ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для извлСчСния ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ядра.

ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ lockdown лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ возмоТности доступа ΠΊ ядру, Π½ΠΎ Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ эксплуатации уязвимостСй. Для блокирования внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ ядро ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ эксплоитов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Openwall развиваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ LKRG (Linux Kernel Runtime Guard).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru