Модель o3 от ChatGPT обнаружила удалённую уязвимость в коде ядра Linux

30.05.2025
Модель o3 от ChatGPT обнаружила удалённую уязвимость в коде ядра Linux

ИИ, без сомнения, стал самой обсуждаемой технологической темой последних лет. Некоторые люди в восторге от его безграничных возможностей, в то время как другие беспокоятся, что он опасно приближает нас к научно-фантастическому апокалипсису. Но одно ясно точно: ИИ уже здесь и с каждым днём становится всё умнее.

Его возможности практически безграничны. Он может помочь вам приготовить омлет за 5 минут — или, вот ещё, — он может сканировать огромные объёмы исходного кода и выявлять уязвимости. Да, даже в таком сложном коде, как ядро Linux. Итак, что же здесь происходит? Давайте разберёмся.

22 мая 2025 года исследователь в области безопасности Шон Хилани поделился убедительным рассказом о том, как последняя языковая модель ChatGPT, o3, обнаружила критическую удалённую уязвимость zeroday в реализации SMB в ядре Linux, обозначенную как CVE-2025-37899.

Расследование Хилана было сосредоточено на ksmbd, сервере ядра Linux, отвечающем за реализацию протокола SMB3 в пространстве ядра для сетевого обмена файлами.

Изначально Хилану нужно было провести ручной аудит ksmbd, чтобы оценить потенциал o3. Он быстро понял, что модель способна автономно выявлять сложные уязвимости типа «использование после освобождения» в обработчике команды SMB «выход из системы» — проблему, которую сам Хилану ранее не удавалось обнаружить.

Что делает это открытие особенно примечательным, так это природа уязвимости, которая связана с параллелизмом и общими объектами, к которым осуществляется доступ из нескольких потоков.

Уязвимость возникает из-за того, что один поток освобождает объект, в то время как другой поток может по-прежнему обращаться к нему без надлежащей синхронизации, что приводит к ситуациям «использование после освобождения», которые могут привести к повреждению памяти ядра и выполнению произвольного кода.

До этого прорыва Хилану удалось использовать в качестве эталона другую уязвимость — CVE-2025-37778. Эта более ранняя уязвимость, известная как «уязвимость аутентификации Kerberos», также является ошибкой «использование после бесплатного использования», возникающей во время аутентификации Kerberos в запросах на настройку сеанса.

Хотя эта уязвимость является удалённой и серьёзной, она относительно локализована и требует анализа примерно 3300 строк кода ядра. Метод Хилана заключался в том, что он загружал в o3 код из определённых обработчиков команд SMB и связанных с ними функций, тщательно подобранных таким образом, чтобы оставаться в пределах допустимых значений модели.

Результаты были впечатляющими: при многократном запуске o3 выявлял уязвимость аутентификации Kerberos значительно чаще, чем предыдущие модели, такие как Claude Sonnet 3.7, удваивая или утраивая частоту обнаружения. Что ещё более впечатляюще, o3 от OpenAI создавал отчёты об ошибках, которые больше походили на отчёты экспертов-людей: краткие, целенаправленные и понятные, хотя иногда и в ущерб деталям.

Двигаясь дальше, Хилан расширил сферу применения, предоставив o3 более обширную кодовую базу, включающую все обработчики команд SMB, — примерно 12 000 строк кода.

Несмотря на естественное снижение производительности из-за масштабирования, o3 всё же удалось выявить уязвимость Kerberos. Что ещё более интересно, была обнаружена ранее неизвестная уязвимость: ошибка «использование после освобождения» в обработчике выхода из сеанса, которая позже стала CVE-2025-37899.

Эта новая уязвимость использует состояние гонки между потоками, обращающимися к структуре sess->user. Когда один поток обрабатывает команду LOGOFF и освобождает эту структуру без надлежащей синхронизации, другие потоки могут по-прежнему обращаться к освобождённому указателю, что приводит к повреждению памяти или отказу в обслуживании.

Анализ Хилана показал, что простого обнуления указателя после его освобождения было недостаточно для предотвращения этой ошибки из-за особенностей протокола SMB, позволяющих нескольким подключениям привязываться к одному и тому же сеансу.

 

Конечно, он сразу же сообщил об уязвимости. Ответ вышестоящего руководства был очень быстрым, и исправления были внесены во все поддерживаемые ветки ядра.

Удаленный уязвимый код SMB в ядре Linux уже исправлен.

 

Итак, уязвимость устранена в исходном коде ядра; теперь осталось только установить обновление в вашем дистрибутиве. Но, как вы уже догадались, тема другая.

Не претендуя на стопроцентную достоверность, можно сказать, что это, возможно, первый подтверждённый случай в реальной жизни, когда ИИ помог выявить и устранить ошибку в ядре Linux — настоящий прецедент, с какой стороны ни посмотри. Пример синергии человеческого понимания и машинного интеллекта.

И, честно говоря, при таком раскладе это скоро может стать нормой. Что, на мой взгляд, совершенно нормально и даже ожидаемо.

Конечно, ИИ не безупречен и всё ещё может допускать ошибки (пока что). Однако нельзя отрицать его невероятную способность выполнять сложные логические операции и анализировать результаты способами, которые выходят далеко за рамки возможностей любого человека.

Уже одно это даёт нам веские основания полагать, что мы стоим на пороге новой эры, которая может стать следующим большим скачком в технологической эволюции человечества. И, честно говоря, я не думаю, что нам придётся долго ждать, чтобы убедиться в этом.

А пока, если вам интересно и вы хотите глубже изучить техническую сторону этого конкретного случая, обязательно посмотрите пост Хилана в блоге.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала