Вразливість ksmbd у ядрі Linux: дослідження AI

Виявлено вразливість у модулі ksmbd ядра Linux: дослідження з використанням AI

У модулі ksmbd, що надає вбудовану в ядро Linux реалізацію файлового сервера на основі протоколу SMB, виявлено вразливість (CVE-2025-37899), яка потенційно дозволяє виконувати власний код на рівні ядра через відправлення спеціально сформованих пакетів. Цікаво, що проблему було виявлено під час аналізу коду за допомогою AI-моделі OpenAI o3.

Деталі вразливості у модулі ksmbd

Оскільки повний код модуля ksmbd перевищує допустимий для моделі розмір контексту, перевірка здійснювалася поетапно для коду з реалізацією окремих команд SMB, використовуючи типові запити.

Вразливість спричинена зверненням до вже звільненої пам’яті (use-after-free) у коді обробки SMB-команди “logoff”. Структура sess->user використовувалася в іншому потоці, якщо в рамках іншого з’єднання надходив запит встановлення сеансу, що прив’язувався до сеансу, який звільнявся. Під час обробки таких запитів запускалася функція smb2_sess_setup, яка зверталася до вже звільненої структури sess->user.

Виправлення вразливості у різних версіях ядра

Вразливість усунуто в оновленнях 6.15-rc5, 6.14.6, 6.12.28, 6.6.90, 6.1.138. У гілці 5.15, до складу якої було прийнято модуль ksmbd, проблема не проявляється.

Відстежити усунення вразливості в дистрибутивах можна на сторінках Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch.

Особливості виявлення вразливості за допомогою AI

Проблему виявив Шон Хілан (Sean Heelan), творець платформи профілювання коду Prodfiler, який спеціалізується на оптимізації та проведенні аудиту безпеки коду. Шон вирішив оцінити, наскільки сучасні AI-моделі готові до проведення аудиту безпеки, і дійшов висновку, що модель o3 значно просунулася в аналізі та розумінні структури, логіки та функціональності коду.

Варто зазначити, що для визначення вразливості модель змогла побудувати ланцюжок міркувань, враховуючи можливість паралельних підключень до сервера та використання структур даних у різних ситуаціях.

Зрештою, модель визначила проблемне місце в коді, де об’єкт, який звільнявся, залишався доступним в іншому потоці. При цьому модель знайшла проблему самостійно лише на основі загального запиту, який просив перевірити наявність вразливостей у коді, зробивши акцент на перевірці висячих вказівників та звернень до пам’яті після її звільнення.

Порівняння з попередніми дослідженнями

Перед пошуком нових вразливостей Шон протестував різні моделі на предмет визначення вразливості CVE-2025-37778 у ksmbd, раніше виявленої ним під час ручного аудиту та виправленої в оновленні ядра 6.15-rc3.

Модель o3 успішно впоралася із завданням і показала найбільш близький до ручного аудиту результат, після чого Шон переключився на експерименти з пошуку раніше невідомих вразливостей.

Отже, використання AI-моделей для пошуку вразливостей у модулі ksmbd ядра Linux демонструє значний потенціал штучного інтелекту у сфері безпеки програмного забезпечення.