Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пСрСсборки ядра Linux Π² Clang с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ CFI

КСс ΠšΡƒΠΊ (Kees Cook), Π±Ρ‹Π²ΡˆΠΈΠΉ Π³Π»Π°Π²Π½Ρ‹ΠΉ сисадмин kernel.org ΠΈ Π»ΠΈΠ΄Π΅Ρ€ Ubuntu Security Team, Π½Ρ‹Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google Π½Π°Π΄ обСспСчСниСм Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Android ΠΈ ChromeOS, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ядро для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64 с использованиСм компилятора Clang ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ CFI (Control Flow Integrity). CFI обСспСчиваСт выявлСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ повСдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния (control flow) Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния эксплоитов.

Напомним, Ρ‡Ρ‚ΠΎ Π² LLVM 9 Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ измСнСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для сборки ядра Linux с использованиСм Clang для систСм с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ x86_64. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Android ΠΈ ChromeOS ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Clang для сборки ядра ΠΈ Google тСстируСт Clang Π² качСствС основной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для сборки ядСр для своих Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Linux-систСм. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ядра, собираСмыС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Clang, Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Linaro ΠΈ CrOS.

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

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