В ядре Linux устранена следующая уязвимость:
apparmor: заменить рекурсивное удаление профиля итеративным подходом
Код удаления профиля использует рекурсию при удалении вложенных профилей.
что может привести к исчерпанию стека ядра и сбоям системы.
Репродуктор:
$ pf='а'; for ((i=0; i<1024; i++)); делать
echo -e "профиль $pf {\n }" | apparmor_parser -К -а;
pf="$pf//x";
сделано
$ echo -n a > /sys/kernel/security/apparmor/.remove
Замените рекурсивный подход __aa_profile_list_release() на метод
итеративный подход в __remove_profile(). Функция неоднократно
находит и удаляет профили листьев, пока не будет удалено все поддерево,
сохранение той же семантики удаления без рекурсии.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: apparmor: replace recursive profile removal with iterative approach The profile removal code uses recursion when removing nested profiles, which can lead to kernel stack exhaustion and system crashes. Reproducer: $ pf='a'; for ((i=0; i<1024; i++)); do echo -e "profile $pf { \n }" | apparmor_parser -K -a; pf="$pf//x"; done $ echo -n a > /sys/kernel/security/apparmor/.remove Replace the recursive __aa_profile_list_release() approach with an iterative approach in __remove_profile(). The function repeatedly finds and removes leaf profiles until the entire subtree is removed, maintaining the same removal semantic without recursion.