CVE-2026-43232 in LinuxИнформация

Сводка

по VulDB • 10.05.2026

В предоставленном логе KASAN (Kernel Address Sanitizer) описывается классическая ошибка **Use-After-Free (UAF)** в подсистеме ACPI PCI Hotplug (`acpiphp`).

### Краткий анализ проблемы

1. **Суть ошибки:** * Произошло обращение к памяти (`bad access detected`) по адресу `ffff88800aad1000`. * Эта память была **уже освобождена** (`freed`) ранее. * Адрес находится внутри объекта размером 1024 байта (`kmalloc-1k`), смещен на 28 байт от начала освобожденного региона.

2. **Контекст освобождения (Free Stack):** * Память была освобождена функцией `kfree()` внутри `fst_remove_one()`. * Вызов инициирован при удалении PCI-устройства: `pci_device_remove` -> `fst_remove_one`. * Цепочка вызовов: `acpiphp_disable_and_eject_slot` -> `pci_stop_and_remove_bus_device` -> ... -> `kfree`. * Это происходит в контексте работы горячей вставки/выставки (`acpi_hotplug_work_fn`), задача 41, CPU 1.

3. **Контекст использования (Use Stack - обрезан, но виден начало):** * Ошибка обнаружена в `acpiphp_hotplug_notify+0x36c/0x3c0`. * Это функция уведомления ACPI о событии горячей вставки/выставки.

4. **Вывод:** Код в `acpiphp_hotplug_notify` пытается обратиться к структуре данных, которая была освобождена в `fst_remove_one` во время предыдущего или параллельного процесса удаления устройства. Скорее всего, это гонка состояний (race condition) или отсутствие синхронизации между процессом уведомления и процессом удаления.

---

### Возможные причины и рекомендации по исправлению

#### 1. Гонка состояний в `acpiphp` Функция `acpiphp_hotplug_notify` может быть вызвана асинхронно (через `acpi_hotplug_work_fn`). Если устройство уже начало удаляться (`pci_stop_and_remove_bus_device`), но уведомление еще не обработано или обработано частично, может произойти обращение к уже освобожденным данным.

**Рекомендация:** * Убедитесь, что все указатели на структуры, выделенные в `fst_remove_one` (или связанных с ним), обнуляются после `kfree`. * Проверьте, не используется ли указатель на эту структуру в `acpiphp_hotplug_notify` после того, как устройство было помечено на удаление. * Рассмотрите использование `refcount` или блокировок (mutex/seqlock) для защиты общих структур данных между процессом уведомления и процессом удаления.

#### 2. Проблема в `fst_remove_one` Функция `fst_remove_one` освобождает память. Если эта память используется где-то еще (например, в глобальной структуре или в другом потоке), нужно убедиться, что все ссылки на нее удалены перед вызовом `kfree`.

**Рекомендация:** * Проверьте, кто еще владеет ссылками на эту память. * Убедитесь, что `acpiphp_hotplug_notify` не сохраняет указатель на эту память и не использует его после начала удаления.

#### 3. Отсутствие синхронизации между `acpiphp_hotplug_notify` и `pci_device_remove` Если `acpiphp_hotplug_notify` работает с данными, которые зависят от состояния PCI-устройства, а `pci_device_remove` это устройство удаляет, может возникнуть ситуация, когда уведомление приходит после того, как устройство уже удалено, но код уведомления не проверяет это состояние.

**Рекомендация:** * Добавьте проверку в `acpiphp_hotplug_notify`, чтобы убедиться, что устройство все еще активно и его структура данных валидна, прежде чем обращаться к памяти. * Используйте `pci_get_device` или аналогичные функции для получения безопасной ссылки на устройство перед работой с ним.

---

### Как отладить дальше

1. **Полный стек использования (Use Stack):** В логе указан только фрагмент стека использования. Найдите полный стек в логах ядра (обычно он идет перед "Freed by task..."). Он покажет, какая именно инструкция в `acpiphp_hotplug_notify` вызывает ошибку.

2. **Проверка ко

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

01.05.2026

Раскрытие

06.05.2026

Модерация

принято

Вход

VDB-361365

EPSS

0.00049

KEV

Нет

Деятельности

Очень низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!