Компания Cisco выпустила свободный антивирусный пакет ClamAV 1.0.0

Компания Cisco представила новый значительный выпуск свободного антивирусного пакета ClamAV 1.0.0. Новая ветка примечательна переходом на традиционную нумерацию выпусков “Major.Minor.Patch” (вместо 0.Version.Patch). Значительная смена версии также обусловлена внесением в библиотеку libclamav изменений, нарушающих совместимость на уровне ABI из-за удаления пространства имён CLAMAV_PUBLIC, изменения типа аргументов в функции cl_strerror и включения в пространство имён символов для языка Rust. Проект перешёл в руки Cisco в 2013 году после покупки компании Sourcefire, развивающей ClamAV и Snort. Код проекта распространяется под лицензией GPLv2.

Ветка 1.0.0 отнесена к категории с длительным сроком поддержки (LTS), сопровождение для которой обеспечивается в течение трёх лет. Выпуск ClamAV 1.0.0 придёт на смену прошлой LTS-ветке ClamAV 0.103, обновления с устранением уязвимостей и критических проблем для которой будут выпускаться до сентября 2023 года. Обновления для обычных веток, не отнесённых к категории LTS, публикуются как минимум в течение 4 месяцев после выхода первого релиза следующей ветки. Возможность загрузки базы сигнатур для не-LTS веток также обеспечивается как минимум ещё 4 месяца после выпуска следующей ветки.

Ключевые улучшения в ClamAV 1.0:

  • Добавлена поддержка расшифровки доступных только на чтение XLS-файлов на базе OLE2, зашифрованных паролем по умолчанию.
  • Переписан код с реализацией режима all-match, при котором определяются все совпадения в файле, т.е. сканирование продолжается после первого совпадения. Новый код отмечен как более надёжный и простой для сопровождения. В новой реализации также устранена серия концептуальных недоработок, проявляющихся при проверке по сигнатурам в режиме all-match. Добавлены тесты для проверки корректности поведения all-match.
  • В API добавлен callback-вызов clcb_file_inspection() для подключения обработчиков, выполняющих инспектирование содержимого файлов, в том числе извлекаемых из архивов.
  • В API добавлена функция cl_cvdunpack() для распаковки архивов сигнатур в формате CVD.
  • Скрипты для сборки docker-образов с
    ClamAV перенесены в отдельный репозиторий  clamav-docker. В состав docker-образа включены заголовочные файлы для Си-библиотеки.
  • Добавлены проверки, ограничивающие уровень рекурсии при извлечении объектов из PDF-документов.
  • Повышен лимит на размер памяти, выделяемой при обработке не заслуживающих доверия входных данных, и реализован вывод предупреждения при превышении данного лимита.
  • Значительно ускорена сборка unit-тестов для библиотеки libclamav-Rust. Написанные на языке Rust модули для ClamAV теперь собираются в каталоге, общем с ClamAV.
  • Смягчены ограничения при проверке перекрытия записей в файлах в формате ZIP, что позволило избавиться от ложных предупреждений при обработке немного изменённых, но не вредоносных, JAR-архивов.
  • При сборке определены минимальная и максимальная поддерживаемые версии LLVM. Попытка сборки со слишком старой или слишком новой версией теперь приведёт к выводу ошибки с предупреждением о наличии проблем с совместимостью.
  • Разрешена сборка с собственным списком RPATH (список каталогов, из которых загружаются разделяемые библиотеки), что позволяет перемещать исполняемые файлы в другое место после сборки в окружении для разработки.
Release. Ссылка here.