ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Π° для Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ io_uring для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ARMO продСмонстрировали Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ΠΎΠ², Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… спСцифичныС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ для выполнСния Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ внСшнСго сСрвСра. ВмСсто систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для выполнСния сСтСвых ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° io_uring, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ начиная с ядра Linux 5.1.

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСсто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сСтСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (read/write, recv/send/connect/bind/listen) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ io_uring (io_uring_enter, io_uring_setup, io_uring_register ΠΈ Ρ‚.ΠΏ.), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΌΠΈ инструмСнтариями для выявлСния врСдоносной активности. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ io_uring ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 60 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ находится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ процСссы Ρ‡Π΅Ρ€Π΅Π· io_uring.

Для дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Π° Curing, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡ‘ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ внСшнСго сСрвСра ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π°/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ дСмонстрации использовалась ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° запроса Π½Π° TCP-ΠΏΠΎΡ€Ρ‚ 8888 внСшнСго хоста ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° содСрТимого Ρ„Π°ΠΉΠ»Π° Β«/etc/shadowΒ». ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ систСмы ΠΈ получСния ΠΏΡ€Π°Π² root, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ устанавливаСт Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ для закрСплСния своСго присутствия Π½Π° Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ систСмС.

Π’ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ экспСримСнтС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Π° Curing оказалась Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π° инструмСнтами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Falco ΠΈ Tetragon, примСняСмыми для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ связанных с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ Π½Π° хостах ΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… (поддСрТиваСтся интСграция с инфраструктурой Π½Π° Π±Π°Π·Π΅ Kubernetes). Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ инструмСнты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°ΠΊΠΈΡ… событий, ΠΊΠ°ΠΊ запуск процСссов, сСтСвая Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π½ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования подсистСмы io_uring для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ доступных для Linux коммСрчСских систСм обнаруТСния ΠΈ рСагирования Π½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ основываСтся Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π΅ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ…ΠΎΠ΄Π° инструмСнтов отслСТивания сСтСвой ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ активности, вмСсто ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ KRSI (Kernel Runtime Security Instrumentation), появившийся Π² ядрС Linux 5.7 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ LSM-Ρ…ΡƒΠΊΠ°ΠΌ. НапримСр, KRSI Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ LSM-Ρ…ΡƒΠΊΠΎΠ² Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, сСтСвой доступ ΠΈ запуск процСссов, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· спСцифичныС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· io_uring.

Π Π°Π½Π΅Π΅ подсистСма io_uring Π±Ρ‹Π»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠ·-Π·Π° рСгулярно Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Ρ… уязвимостСй. Π’ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° поТСлания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ простой инструмСнт для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ io_uring Π±Π΅Π· пСрСсборки ядра, Π² ядро Linux 6.6 Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ sysctl io_uring_disabled. Компания Google ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ»Π° io_uring Π² ChromeOS, Android ΠΈ Π½Π° своих сСрвСрах, пояснив, Ρ‡Ρ‚ΠΎ плачСвная ситуация с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π² io_uring ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚ достоинства примСнСния io_uring для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

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