62 000 строк на Rust, новый файрвол и свежие буферы: что реально поменялось в Suricata 8?

Релиз 8.0 позволяет собирать систему под себя.


ufedqttkj8a7q846kh4np5ohgooewnqv.jpg


Вышел стабильный релиз Suricata 8.0 — системы обнаружения вторжений и анализа сетевого трафика с открытым исходным кодом, разрабатываемой фондом OISF. Это первое крупное обновление за два года после выхода Suricata 7.0. Версия 8 знаменует собой серьёзный шаг в развитии проекта, с акцентом на производительность, расширенные возможности детектирования, безопасность и поддержку новых протоколов.

Одно из ключевых улучшений — ускорение работы движка. Повышена эффективность загрузки правил, улучшено чтение PCAP-файлов, оптимизирована инициализация благодаря переработке алгоритмов группировки портов и кешированию MPM. Благодаря этим изменениям обработка сетевого трафика стала быстрее и стабильнее.

В плане безопасности особое внимание уделено переводу критичных компонентов на язык Rust : переписаны библиотеки для обработки FTP, MIME, ENIP и HTTP (LibHTP). Это снижает риски уязвимостей за счёт отказа от небезопасного C-кода. Расширена поддержка протоколов: добавлены ARP, DoH, LDAP, mDNS, POP3, SDP и WebSocket.

Улучшена система правил. Введены новые ключевые слова (например, tcp.wscale, pgsql.query, from_base64, entropy), а также поддержка трансакционных правил и возможность выявлять отсутствие буферов. Добавлены новые буферы и ключевые слова для анализа DNS, SMTP, TLS, FTP , MIME и других протоколов . Появился экспериментальный режим файрвола — теперь Suricata может работать в режиме межсетевого экранирования с политиками по умолчанию и формализованной логикой правил.

Поддержка Lua получила переработку: теперь Lua 5.4 встроен в проект, работает в изолированной песочнице и доступен по умолчанию. Это повышает безопасность выполнения пользовательских скриптов и исключает доступ к системным ресурсам. Однако такие изменения делают невозможной загрузку внешних Lua-библиотек и доступ к модулю os.

Suricata теперь легче интегрировать как библиотеку: разработчики могут использовать собственные потоки и пакеты, а также настраивать вывод логов на низком уровне. Поддержка плагинов расширилась: появились примеры динамической регистрации новых парсеров (включая SNMP) и плагинов приложений. Захват трафика через Napatech и PF_RING также вынесен в виде отдельных модулей.

Журналирование стало точнее. Теперь логи фиксируют исключения и применённые политики, расширена статистика по памяти и переполнениям, появились новые схемы вывода в формате EVE. Пользователи могут отключать нулевые счётчики и адаптировать структуру логов под свои нужды.

Кодовая база активно «Rust-ифицируется»: только в этом релизе было добавлено более 62 тысяч строк на Rust . В общей сложности изменено 2090 файлов, из них 470 — с кодом на Rust и 1294 — на C. Поддержка Rust обновлена до версии 1.75.0.

Для пользователей PF_RING важное изменение: теперь этот механизм захвата подключается как плагин и требует изменения конфигурации.