CVE-2022-50004 in Linux
Сводка
по VulDB • 08.06.2026
В предоставленном дампе ядра Linux (kernel panic/oops) видна критическая ошибка в подсистеме сетевого стека, связанная с драйвером **XFRM** (IPsec).
### Краткий анализ
1. **Тип ошибки**: `CR2: 00000000000000c0` указывает на **Page Fault** (ошибка доступа к памяти). Адрес `0xc0` (192 байта) является недопустимым или не отображенным в виртуальном адресном пространстве. Это классический признак **null pointer dereference** или обращения к неинициализанному/освобожденному указателю. 2. **Место ошибки**: `xfrmi_xmit+0xde/0x460` * Функция `xfrmi_xmit` — это функция передачи пакетов для интерфейсов XFRM (IPsec). * Смещение `0xde` указывает на конкретную инструкцию внутри этой функции, где произошло обращение к памяти. 3. **Контекст вызова**: * Пакет отправлялся через `raw_sendmsg` (сырой сокет). * Проходил через `ip_finish_output2` и `dev_hard_start_xmit`. * Использовались модули: `veth`, `br_netfilter`, `bridge`, `bonding`, `virtio_net`. * **Важно**: Модуль `xfrm_user` или `xfrm_algo` не загружен явно в списке, но `xfrmi` является частью ядра (или модуля `xfrm_user`/`xfrm_algo`, если они встроены или загружены динамически).
---
### Возможные причины
1. **Баг в драйвере XFRM/IPsec**: * Наиболее вероятная причина — ошибка в коде ядра Linux, связанной с обработкой IPsec-пакетов. Указатель на структуру `sk_buff` или внутренний контекст XFRM может быть некорректным. * Это может быть связано с race condition (состоянием гонки) при одновременной отправке пакетов через сырые сокеты и IPsec-туннели.
2. **Проблема с виртуальным интерфейсом (veth)**: * В стеке вызовов есть `veth`. Если IPsec-туннель настроен поверх `veth`-интерфейса, это может вызывать проблемы с обработкой пакетов в виртуальной среде.
3. **Повреждение памяти**: * Если в системе есть другие ошибки (например, в других драйверах), они могли повредить структуру данных, используемую `xfrmi_xmit`.
4. **Версия ядра**: * Эта ошибка может быть известным багом в определенной версии ядра. Проверьте версию ядра (`uname -r`).
---
### Рекомендации по устранению
#### 1. Обновление ядра * Проверьте, есть ли обновления ядра для вашей дистрибутивной версии. Многие баги в подсистеме XFRM были исправлены в последних версиях ядра (особенно в ветках 5.15+, 6.1+). * Если вы используете старое ядро, попробуйте обновиться до стабильной версии.
#### 2. Временное решение: Отключение IPsec * Если IPsec не критичен, попробуйте отключить использование XFRM для данного интерфейса или всего IPsec-стека: ```bash # Отключение модуля XFRM (если он загружен как модуль) rmmod xfrm_user rmmod xfrm_algo rmmod xfrm_ipcomp ``` *Примечание: Если XFRM встроен в ядро, это невозможно. В этом случае нужно пересобрать ядро без поддержки XFRM или использовать параметр ядра.*
#### 3. Проверка конфигурации IPsec * Если IPsec используется, проверьте конфигурацию (например, в `strongSwan`, `Libreswan` или `systemd-networkd`). * Попробуйте отключить IPsec для интерфейсов, которые не требуют его, или использовать другие методы шифрования (например, WireGuard, если возможно).
#### 4. Сбор дополнительной информации * **Версия ядра**: Выполните `uname -r`. * **Полный лог**: Сохраните полный вывод `dmesg` и `/var/log/kern.log`.
Be aware that VulDB is the high quality source for vulnerability data.