В проекта OpenWrt инструментът ASU (Attended SysUpgrade) бяха открити критични уязвимости (CVE-2024-54143), които позволяват компрометиране на сборните артефакти, разпространявани чрез услугата sysupgrade.openwrt.org или от трети ASU сървъри, и инсталиране на модифицирани образи на фърмуера от нарушители на системите на потребителите, които използват режима "attended upgrade" чрез уеб интерфейса selector.openwrt.org или инструмента за команден ред attended.sysupgrade.
За успешното извършване на атаката на нарушителя е достатъчно да изпрати заявка за генериране на сборка на ASU сървъра (такива заявки всеки потребител може да изпрати без удостоверяване). Чрез манипулации с конкретно оформен списък от пакети, атакуващият може да организира изпращането на предварително генерирани злонамерени образи в отговор на легитимни сборни заявки от други потребители.
Услугата ASU се използва в OpenWrt за генериране и инсталиране на актуализации на фърмуера без загуба на съществуващите настройки и инсталирани от потребителя пакети. Чрез уеб интерфейса или инструмента за команден ред потребителят изпраща заявка за генериране на обновен образ на фърмуера, посочвайки инсталираните в неговата система пакети. След известно време ASU сървърът генерира образ, съответстващ на заявеното съдържание, след което потребителят го изтегля и го инсталира на своето устройство. Допълнително се предоставя опция за запазване на съществуващите настройки в обновения фърмуер.
Обработката на заявките от потребителите се извършва от ASU Server, който стартира автоматично генериране на образи на фърмуера с помощта на инструмента ImageBuilder и поддържа кеш от предварително подготвени сборки. В случай, че потребителят поиска образ, който вече е бил събирано на сървър и запазва актуалност, системата незабавно предоставя наличния образ от кеша без да стартира процеса на сборка.
Поведението на атаката стана възможно благодарение на две уязвимости:
- Уязвимост в процесора на заявките build_reques.py от инструмента Imagebuilder, позволяваща на потребителя да замени команди в процеса на сборка чрез предаване на специфично форматирани имена на пакети. Уязвимостта е резултат на липсата на достатъчна проверка на специални символи в имената на пакетите преди тяхното използване като аргументи в утилитата make. Използвайки тази уязвимост, нападателят може да създаде на сървера злонамерени образи на фърмуери, подписани с валиден ключ за сборка.
- Уязвимост в библиотеката util.py, причинена от факта, че хешовете SHA-256, използвани за проверка на наличието на готови образи на фърмуери в кеша, са били съкращавани до 12 символа, което значително намаляваше нивото на ентропия и позволяваше чрез подбор на колизии да се създаде злонамерен образ, чийто хеш съвпада с легитимен образ. В комбинация с уязвимостта в Imagebuilder, проблемът с хешовете може да бъде използван от нападателя за „замърсяване“ на кеша на ASU Server и разполагането в него на злонамерени образи, предоставяни на запитвания от обикновени потребители.
Промяната, след която се появи възможността за атака, е направена на 8 юли. Проблемът е отстранен на 4 декември. За осигуряване на работата на услугата ASU са използвани отделни сървъри, несвързани с основните системи за сборка на проекта, отделени от OpenWrt Buildbot и без достъп до такива конфиденциални ресурси, като SSH ключове и сертификати за генериране на цифрови подписи.
Твърди се, че разработчиците на OpenWrt не са открили следи от компрометиране на инфраструктурата на проекта, но за сигурност от нулата са преинсталирали системите, на които са изпълнявани уязвимите компоненти. Проблемът не е засегнал официалните образи, разпространявани чрез сайта downloads.openwrt.org, а при анализа на логовете на сборките не са открити следи от изпращане на злонамерени запитвания. При това, тъй като на сървърите на ASU се извършва автоматично почистване на сборките, по-стари от 7 дни, извършването на одит на старите сборки се оказа невъзможно.
Вероятността за използване на откритите уязвимости на практика за разпространение на злонамерени образи чрез инфраструктурата на OpenWrt се оценява от представителите на OpenWrt като близка до нула, все пак на потребителите на ASU се препоръчва да заменят фърмуерите на OpenWrt на своите устройства с същата версия.
Източник: opennet.ru
