МнСниС Π“Ρ€Π΅Π³Π° ΠšΡ€ΠΎΠ°-Π₯Π°Ρ€Ρ‚ΠΌΠ°Π½Π° ΠΈ КСйса ΠšΡƒΠΊΠ° ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Rust Π² ядро Linux

Π“Ρ€Π΅Π³ ΠšΡ€ΠΎΠ°-Π₯Π°Ρ€Ρ‚ΠΌΠ°Π½ (Greg Kroah-Hartman), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ядра Linux, высказался Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ядра Π½Π° языкС Rust. Как Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ послСдниС 15 Π»Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ вся информация ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ уязвимостях Π² ядрС Linux, ΠΎΠ½ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ошибок Π² ядрС Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π½Π΅ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ особСнностями языка Π‘ΠΈ (corner case), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅ Π½Π° языкС Rust.

ΠŸΡ€ΠΈ использовании Rust ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти послС Π΅Ρ‘ освобоТдСния, Π²Ρ‹Ρ…ΠΎΠ΄ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π±ΡƒΡ„Π΅Ρ€Π° (частично), Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ освобоТдСниС рСсурсов ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок ΠΈ Π·Π°Π±Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² ошибок, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ мэйнтСйнСрам ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ состояния Π³ΠΎΠ½ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π° Π½Π΅ Ρ€Π°ΡΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠ΅Π»ΠΎΡ‡Π°ΠΌ.

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

Π“Ρ€Π΅Π³ Π½Π΅ считаСт Rust «сСрСбряной ΠΏΡƒΠ»Π΅ΠΉΒ», которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ядрС, Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ язык Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ числС ситуаций. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Rust Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄Π΅ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΈΡ… оборудования, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ошибок. Π§Ρ‚ΠΎ касаСтся, смСшивания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков, Π“Ρ€Π΅Π³ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Π² этом большой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎ Π΅Π³ΠΎ мнСнию, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ядра ΡΠΏΡ€Π°Π²Π»ΡΠ»ΠΈΡΡŒ ΠΈ с Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΈ Π½Π΅Ρ‚ ΠΏΠΎΠ²ΠΎΠ΄Π° ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ продвиТСния Π² ядро Π½ΠΎΠ²Ρ‹Ρ… Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΈΠ΄Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ успСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 20+ Π»Π΅Ρ‚.

К ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ присоСдинился КСйс ΠšΡƒΠΊ (Kees Cook), Π±Ρ‹Π²ΡˆΠΈΠΉ Π³Π»Π°Π²Π½Ρ‹ΠΉ систСмный администратор kernel.org ΠΈ Π»ΠΈΠ΄Π΅Ρ€ Ubuntu Security Team. КСйс ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠ», Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ Π½Π΅ ΠΏΡ€ΠΎ пСрСписываниС ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π° Π² ядрС, Π° Π² прСдоставлСнии возмоТности использования Rust для создания Π½ΠΎΠ²Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ подсистСм. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Rust для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ число ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π½ΠΎ ΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ возрастаСт благодаря сниТСнию Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² языкС строгих Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ошибки Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии написания ΠΊΠΎΠ΄Π°, Π΅Ρ‰Ρ‘ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° тСстирования ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΡ‚ΠΈΠΊΠΈ использования Rust для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡƒΠΆΠ΅ продСмонстрирована Google Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android. Показано, Ρ‡Ρ‚ΠΎ основным источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ являСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ Π΅Π³ΠΎ качСства слСдуСт ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Для старого ΠΊΠΎΠ΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ бСзопасности ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 5-Π»Π΅Ρ‚Π½ΠΈΠΉ ΠΊΠΎΠ΄ Π² срСднСм ΠΈΠΌΠ΅Π΅Ρ‚ Π² 3.4 Ρ€Π°Π·Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ уязвимостСй, Ρ‡Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄).

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

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