CVE-2026-23406

HIGH CVSS 3.1: 7,8 EPSS 0.01%
Обновлено 18 апреля 2026
Debian
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Debian
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: apparmor: исправлена ошибка побочного эффекта при использовании макроса match_char(). Макрос match_char() оценивает свой символьный параметр, кратный раз при прохождении цепочек дифференциального кодирования. При вызове с *str++ указатель строки перемещается на каждой итерации внутренний цикл do- while, заставляющий DFA проверять разные символы на каждой итерации и, следовательно, пропускают входные символы.

Это приводит к чтению за пределами границ, когда указатель проходит мимо граница входного буфера. [ 94.984676] ============================================================== [94.985301] ОШИБКА: KASAN: плита выходит за пределы поля в aa_dfa_match+0x5ae/0x760 [ 94.985655] Чтение размера 1 по адресу ffff888100342000 с помощью файла задачи/976. [ 94.986319] ЦП: 7 UID: 1000 PID: 976 Связь: файл Не испорчен 6.19.0-rc7-next-20260127 #1 PREEMPT(ленивый) [94.986322] Имя оборудования: QEMU Standard PC (Q35 + ICH9, 2009 г.), BIOS 1.16.3-debian-1.16.3-2 01.04.2014 [94.986329] Отслеживание вызовов: [ 94.986341] <ЗАДАЧА> [ 94.986347] dump_stack_lvl+0x5e/0x80 [ 94.986374] print_report+0xc8/0x270 [94.986384] ? aa_dfa_match+0x5ae/0x760 [ 94.986388] kasan_report+0x118/0x150 [94.986401] ? aa_dfa_match+0x5ae/0x760 [ 94.986405] aa_dfa_match+0x5ae/0x760 [ 94.986408] __aa_path_perm+0x131/0x400 [ 94.986418] aa_path_perm+0x219/0x2f0 [ 94.986424] apparmor_file_open+0x345/0x570 [ 94.986431] security_file_open+0x5c/0x140 [ 94.986442] do_dentry_open+0x2f6/0x1120 [ 94.986450] vfs_open+0x38/0x2b0 [94.986453] ? may_open+0x1e2/0x2b0 [ 94.986466] path_openat+0x231b/0x2b30 [94.986469] ? __x64_sys_openat+0xf8/0x130 [ 94.986477] do_file_open+0x19d/0x360 [ 94.986487] do_sys_openat2+0x98/0x100 [ 94.986491] __x64_sys_openat+0xf8/0x130 [ 94.986499] do_syscall_64+0x8e/0x660 [94.986515] ? count_memcg_events+0x15f/0x3c0 [94.986526] ? srso_alias_return_thunk+0x5/0xfbef5 [94.986540] ? handle_mm_fault+0x1639/0x1ef0 [94.986551] ? vma_start_read+0xf0/0x320 [94.986558] ? srso_alias_return_thunk+0x5/0xfbef5 [94.986561] ? srso_alias_return_thunk+0x5/0xfbef5 [94.986563] ? fpregs_assert_state_consistent+0x50/0xe0 [94.986572] ? srso_alias_return_thunk+0x5/0xfbef5 [94.986574] ? Arch_exit_to_user_mode_prepare+0x9/0xb0 [94.986587] ? srso_alias_return_thunk+0x5/0xfbef5 [94.986588] ? irqentry_exit+0x3c/0x590 [ 94.986595] запись_SYSCALL_64_after_hwframe+0x76/0x7e [ 94.986597] RIP: 0033:0x7fda4a79c3ea Исправьте, извлекая значение символа перед вызовом match_char, обеспечение единой оценки для каждого внешнего цикла.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: apparmor: fix side-effect bug in match_char() macro usage The match_char() macro evaluates its character parameter multiple times when traversing differential encoding chains. When invoked with *str++, the string pointer advances on each iteration of the inner do-while loop, causing the DFA to check different characters at each iteration and therefore skip input characters. This results in out-of-bounds reads when the pointer advances past the input buffer boundary. [ 94.984676] ================================================================== [ 94.985301] BUG: KASAN: slab-out-of-bounds in aa_dfa_match+0x5ae/0x760 [ 94.985655] Read of size 1 at addr ffff888100342000 by task file/976 [ 94.986319] CPU: 7 UID: 1000 PID: 976 Comm: file Not tainted 6.19.0-rc7-next-20260127 #1 PREEMPT(lazy) [ 94.986322] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 94.986329] Call Trace: [ 94.986341] <TASK> [ 94.986347] dump_stack_lvl+0x5e/0x80 [ 94.986374] print_report+0xc8/0x270 [ 94.986384] ? aa_dfa_match+0x5ae/0x760 [ 94.986388] kasan_report+0x118/0x150 [ 94.986401] ? aa_dfa_match+0x5ae/0x760 [ 94.986405] aa_dfa_match+0x5ae/0x760 [ 94.986408] __aa_path_perm+0x131/0x400 [ 94.986418] aa_path_perm+0x219/0x2f0 [ 94.986424] apparmor_file_open+0x345/0x570 [ 94.986431] security_file_open+0x5c/0x140 [ 94.986442] do_dentry_open+0x2f6/0x1120 [ 94.986450] vfs_open+0x38/0x2b0 [ 94.986453] ? may_open+0x1e2/0x2b0 [ 94.986466] path_openat+0x231b/0x2b30 [ 94.986469] ? __x64_sys_openat+0xf8/0x130 [ 94.986477] do_file_open+0x19d/0x360 [ 94.986487] do_sys_openat2+0x98/0x100 [ 94.986491] __x64_sys_openat+0xf8/0x130 [ 94.986499] do_syscall_64+0x8e/0x660 [ 94.986515] ? count_memcg_events+0x15f/0x3c0 [ 94.986526] ? srso_alias_return_thunk+0x5/0xfbef5 [ 94.986540] ? handle_mm_fault+0x1639/0x1ef0 [ 94.986551] ? vma_start_read+0xf0/0x320 [ 94.986558] ? srso_alias_return_thunk+0x5/0xfbef5 [ 94.986561] ? srso_alias_return_thunk+0x5/0xfbef5 [ 94.986563] ? fpregs_assert_state_consistent+0x50/0xe0 [ 94.986572] ? srso_alias_return_thunk+0x5/0xfbef5 [ 94.986574] ? arch_exit_to_user_mode_prepare+0x9/0xb0 [ 94.986587] ? srso_alias_return_thunk+0x5/0xfbef5 [ 94.986588] ? irqentry_exit+0x3c/0x590 [ 94.986595] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 94.986597] RIP: 0033:0x7fda4a79c3ea Fix by extracting the character value before invoking match_char, ensuring single evaluation per outer loop.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1