CVE-2025-21675 in Linux
Сводка
по VulDB • 16.05.2026
В предоставленном дампе ядра (kernel panic/oops) наблюдается ошибка в драйвере Mellanox ConnectX (`mlx5_core`) при работе с LAG (Link Aggregation Group).
### Краткий анализ
* **Ошибка:** Kernel Oops/Panic в функции `mlx5_del_flow_rules`. * **Контекст:** Работа очереди (`Workqueue: mlx5_lag`), выполняющая функцию `mlx5_do_bond_work`. * **Причина:** Скорее всего, **use-after-free** или доступ к освобожденной памяти при попытке удалить flow rules во время разрушения LAG-конфигурации. * **Ключевые регистры:** * `x0 = 0x0400000000000000` — указатель на объект, который передается в `mlx5_del_flow_rules`. * `x1 = x2 = 0xffff0000d39b8000` — другие указатели, связанные с контекстом. * `pc` (Program Counter) указывает на смещение `0x24` внутри `mlx5_del_flow_rules`, что часто означает доступ к полю структуры по указателю из `x0`.
---
### Детальный разбор стека вызовов
``` Call trace: mlx5_del_flow_rules+0x24/0x2c0 [mlx5_core] <- Падение здесь
mlx5_lag_destroy_definer+0x54/0x100 [mlx5_core]
mlx5_lag_destroy_definers+0xa0/0x108 [mlx5_core]
mlx5_lag_port_sel_create+0x2d4/0x6f8 [mlx5_core]
mlx5_activate_lag+0x60c/0x6f8 [mlx5_core]
mlx5_do_bond_work+0x284/0x5c8 [mlx5_core] <- Рабочая задача LAG
process_one_work+0x170/0x3e0 worker_thread+0x2d8/0x3e0 kthread+0x11c/0x128 ret_from_fork+0x10/0x20 ```
1. **`mlx5_do_bond_work`**: Это асинхронная задача, которая выполняется при изменении состояния LAG (например, при активации или деактивации bonding). 2. **`mlx5_activate_lag`**: Попытка активировать LAG. 3. **`mlx5_lag_port_sel_create`**: Создание селектора портов для LAG. 4. **`mlx5_lag_destroy_definers`**: Уничтожение определителей (definers) flow rules. 5. **`mlx5_lag_destroy_definer`**: Уничтожение конкретного definer. 6. **`mlx5_del_flow_rules`**: Попытка удалить flow rules, связанные с definer. **Здесь происходит сбой.**
### Возможные причины
1. **Race Condition (Состояние гонки):** * Во время активации LAG (`mlx5_activate_lag`) может происходить параллельное удаление или изменение flow rules. * Если один поток удаляет definer, а другой пытается получить к нему доступ или удалить связанные с ним flow rules, может произойти доступ к освобожденной памяти.
2. **Use-After-Free:** * Указатель `x0` (0x0400000000000000) может указывать на объект, который уже был освобожден или не инициализирован корректно. * Значение `0x0400000000000000` выглядит как невалидный указатель (возможно, это не адрес памяти, а какой-то код ошибки или смещение, но в контексте `mlx5_del_flow_rules` ожидается указатель на структуру `mlx5_flow_table` или подобную).
3. **Ошибка в версии драйвера:** * Эта ошибка известна в некоторых версиях драйвера `mlx5_core` для ядра Linux. Она часто связана с неправильной синхронизацией при удалении flow rules во время изменения конфигурации LAG.
---
### Рекомендации по устранению
#### 1. Обновление драйвера и прошивки * **Проверьте версию драйвера `mlx5_core`
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.