Π’ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π΅ Xen Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ‹ Raspberry Pi 4

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Xen объявили ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ возмоТности использования Xen Hypervisor Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… Raspberry Pi 4. Адаптации Xen для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… ΠΏΠ»Π°Ρ‚ Raspberry Pi мСшало ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСстандартного ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ Raspberry Pi 4 Π±Ρ‹Π» ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ GIC-400, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π² Xen, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ рассчитывали, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с запуском Xen Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Но Π½Π° Π΄Π΅Π»Π΅, всё оказалось Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, ΠΈ для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Xen Π½Π° Raspberry Pi 4 ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ измСнСния Π² ΠΊΠΎΠ΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠ»Π°Ρ‚ Raspberry Pi 4 ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ адрСсному пространству ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° памяти, Ρ‡Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ нСдостаточно для Dom0. НСобходимыС измСнСния Π±Ρ‹Π»ΠΈ внСсСны Π² выпуск Xen 4.14, Π½ΠΎ сразу всплыла другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° — Π² подсистСмС Xen для прСобразования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов Π² физичСскиС использовался Π²Ρ‹Π·ΠΎΠ² virt_to_phys, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ срабатывал для всСх Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ прСобразования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΠΈΡΡŒ ошибкой. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ прСобразования адрСсов.

На этом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ ΠΈ всплыла ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ DMA — Π²ΠΎ всСх Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² Xen ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… (x86, ARM ΠΈ ARM64) адрСса DMA ΠΈ физичСскиС адрСса всСгда совпадали, Π½ΠΎ Π² Raspberry Pi 4 ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ. Найти Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ оказалось слоТнСС всСго ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для ядра Linux, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ физичСскими адрСсами ΠΈ адрСсами DMA.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ исправлСния вошли Π² состав ядра Linux 5.9 ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Xen ΠΏΡ€ΠΈΠ·Π½Π°Π½ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… Raspberry Pi 4. Π’ Ρ‚ΠΎΠΌ числС Π½Π° Raspberry Pi 4 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ EVE (Edge Virtualization Engine), Π΄Π²ΠΈΠΆΠΎΠΊ для создания ΠΈ запуска cloud-native ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Xen, Linuxkit ΠΈ Alpine Linux для построСния инфраструктуры Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… устройствах.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ устранСниС 10 уязвимостСй Π² Xen. Уязвимости CVE-2020-25599,
CVE-2020-25603 ΠΈ
CVE-2020-25595
ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ· гостСвой систСмы ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ хост-окруТСния. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
CVE-2020-25601, CVE-2020-25600,
CVE-2020-25596,
CVE-2020-25597,
CVE-2020-25604,
CVE-2020-25598 ΠΈ
CVE-2020-25602
ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ΠΊΠ°Π·Π° Π² обслуТивании.

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