В системата за компилиране Buildroot, насочена към формиране на загрузъчни Linux среди за вградени системи, са открити шест уязвимости, позволяващи при прихващане на транзитен трафик (MITM) да се постигне модифициране на генерираните системни образи или да се организира изпълнението на код на ниво компилаторна система. Уязвимостите са отстранени в версиите Buildroot 2023.02.8, 2023.08.4 и 2023.11.
Първите пет уязвимости (CVE-2023-45841, CVE-2023-45842, CVE-2023-45838, CVE-2023-45839, CVE-2023-45840) засягат кода за проверка на целостта на пакетите по хешове. Проблемите идват от възможността за използване на HTTP за изтегляне на файлове и отсъствието на проверочни hash файлове за някои пакети, което позволява подмяна на съдържанието на тези пакети, като се има възможност да се вмъкне в трафика на компилатора. сървър (например, когато потребителят се свързва чрез безжична мрежа, контролирана от нападателя).
В частност, пакетите aufs и aufs-util се зареждаха по HTTP и не се проверяваха по хешове. Хешовете също липсваха за пакетите riscv64-elf-toolchain, versal-firmware и mxsldr, които по подразбиране се зареждаха по HTTPS, но при проблеми се връщаха на зареждане без криптиране от хоста http://sources.buildroot.net. При липса на файлове „.hash“ инструментариумът Buildroot считаше проверката за успешна и обработваше заредените пакети, включително прилагаше влезлите в пакетите пачове и изпълняваше сценарии за сборка. Разполагащ с възможността да подмени заредените пакети, атакуващият можеше да добави в тях свои пачове или файлове за сборка Makefiles, което позволяваше да се внесат промени в крайния образ или в скриптовете на системата за сборка и да се постигне изпълнение на собствения код.
Шестата уязвимост (CVE-2023-43608) е причинена от грешка в реализацията на функционалността BR_NO_CHECK_HASH_FOR, позволяваща деактивиране на проверката на целостта по хешове за селективни пакети. Някои пакети, като ядрото Linux, U-Boot и versal-firmware, допускаха изтегляне на последни версии, за които все още не са създадени проверочни хешове. За тези версии се използваше опцията BR_NO_CHECK_HASH_FOR, която деактивираше проверката по хеш. Данните бяха изтегляни по HTTPS, но по подразбиране при неуспех на изтеглянето се използваше връщане към source.buildroot.net без криптиране по протокол http://. Нападателят по време на MITM атака можеше да блокира свързването с HTTPS сървъра и тогава изтеглянето се върна към http://sources.buildroot.net.
Източник: opennet.ru
