В GRUB2 зареждач 8 уязвимости. Най-опасната (), известна като BootHole, да се заобиколи механизмът UEFI Secure Boot и да се инсталира несертифициран злонамерен софтуер. Специфичността на тази уязвимост е, че простото актуализиране на GRUB2 не е достатъчно, тъй като атакуващият може да използва стартов носител със стара уязвима версия, сертифицирана с цифров подпис. Атакуващият може да компрометира процеса на верификация не само на Linux, но и на други операционни системи, включително .
Проблемът може да бъде решен само чрез актуализация на системата (dbx, UEFI Revocation List), но в този случай ще бъде загубена възможността за използване на стари инсталационни носители с Linux. Някои производители на хардуер вече включиха в своите фърмуери актуализиран списък на оттеглените сертификати, на такива системи в режим на UEFI Secure Boot ще могат да се зареждат само актуализирани версии на дистрибутиви на Linux.
За отстраняване на уязвимостта в дистрибутивите също ще е необходимо да се актуализират инсталатори, зареждачи, пакети с ядро, фърмуерни актуализации и shim слой, генерирайки нови цифрови подписи за тях. Потребителите ще трябва да актуализират инсталационните образи и други стартови носители, както и да заредят списъка на оттеглените сертификати (dbx) в UEFI фърмуера. До актуализацията на dbx в UEFI системата остава уязвима, независимо от инсталираните актуализации в ОС.
Уязвимостта с перепълване на буфера, което може да бъде експлоатирано за изпълнение на произволен код по време на зареждане.
Уязвимостта се проявява при обработка на съдържанието на конфигурационния файл grub.cfg, който обикновено се поставя в ESP (EFI System Partition) и може да бъде редактиран от атакуващ администратор, без да се нарушава целостта на подписаните изпълними файлове shim и GRUB2. Поради в кода на парсера на конфигурацията обработчикът на фатални грешки в парсирането YY_FATAL_ERROR просто извежда предупреждение, но не прекратява работата на програмата. Опасността от уязвимостта намалява с необходимостта от привилегирован достъп до системата, въпреки това, проблемът може да бъде използван за внедряване на скрити rootkit, при наличието на физически достъп до хардуера (при възможност за зареждане от собствен носител).
В повечето Linux дистрибуции за верификация на зареждането се използва малък , сертифициран с цифров подпис от Microsoft. Този слой верифицира GRUB2 със собствен сертификат, което позволява на разработчиците на дистрибуции да не сертифицират всяко обновление на ядрото и GRUB в Microsoft. Уязвимостта позволява чрез промяна на съдържанието на grub.cfg да се извърши изпълнението на собствен код на етапа след успешната верификация на shim, но преди зареждането на операционната система, вмъквайки се в веригата на доверие при активен режим Secure Boot и получавайки пълен контрол върху по-нататъшния процес на зареждане, включително зареждане на друга ОС, модификация на компонентите на операционната система и заобикаляне на защитата. .
Други уязвимости в GRUB2:
- — преливане на буфера поради липса на проверка на размера на алокираната памет в grub_malloc;
- — целочислено преливане в grub_squash_read_symlink, което може да доведе до запис на данни извън алокирания буфер;
- — целочислено преливане в read_section_from_string, което може да доведе до запис на данни извън алокирания буфер;
- — целочислено преливане в grub_ext2_read_link, което може да доведе до запис на данни извън алокирания буфер;
- — позволява зареждането на неподписани ядра при директно зареждане в режим Secure Boot без shim слой;
- — достъп до вече освободена област от паметта (use-after-free) при преопределяне на функция по време на изпълнение;
- — целочислено преливане в обработчика на размер initrd.
Обновления на пакетите с корекции са издадени за , , и . За GRUB2 набор от пачове.
Източник: opennet.ru
