Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ GRUB2 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования языка Rust

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘Π΅Ρ€Π±ΠΈΠ½Π΅Π½ΠΊΠΎ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… мэйнтСйнСров Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° GRUB2, Π²Π½Ρ‘ΡΡˆΠΈΠΉ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π±ΠΎΠ»Π΅Π΅ пяти тысяч ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, выставил Π½Π° обсуТдСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ написания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для GRUB2 c использованиСм языка Rust. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ прСдставил ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ экспСримСнтов с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust Π² GRUB2 ΠΈ созданиСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… обвязок. Для GRUB Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ измСнСния, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Β«.soΒ», ET_DYN) для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, вмСсто связывания Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (Β«.oΒ», ET_REL).

Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π° ΠΏΠΎΠΊΠ° позиционируСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ экспСримСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ GRUB2. Π’ качСствС ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ примСнСния Rust Π² GRUB упоминаСтся написаниС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ пСрСписываниС Π½Π° Rust ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с дисковыми Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌΠΈ ΠΈ GPT.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ использованиС Rust ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ошибок, особСнно Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, содСрТащСм мноТСство Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ слоТных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ парсинга. Π’ Ρ„Π΅Π²Ρ€Π°Π»Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ GRUB Π±Ρ‹Π»ΠΈ выявлСны 72 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ, 21 ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°Π½Ρ‹ опасными уязвимостями, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌΠΈ для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ UEFI Secure Boot. 20 ΠΈΠ· 21 уязвимостСй Π²Ρ‹Π·Π²Π°Π½Ρ‹ ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΌΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΊ памяти послС Π΅Ρ‘ освобоТдСния.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU Boot 0.1 RC6, Π² состав ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вошли Π²Ρ‹ΡˆΠ΅ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ исправлСния уязвимостСй (Π² самом GRUB2 исправлСния ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ Π±Π΅Π· формирования ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ GNU Boot Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°ΠΌ UEFI ΠΈ BIOS, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° CoreBoot, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ Π±ΠΎΠ»Π΅Π΅ ТёсткиС трСбования ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². GNU Boot прСподносится ΠΊΠ°ΠΊ Β«coreboot-libreΒ», Ρ‚.Π΅. ΠΊΠ°ΠΊ рСдакция CoreBoot, избавлСнная ΠΎΡ‚ Π±Π»ΠΎΠ±ΠΎΠ² ΠΈ нСсвободных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Linux-libre Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ядра Linux. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Libreboot ΠΈ Canoeboot.

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

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