Компания 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 (список каталогов, из которых загружаются разделяемые библиотеки), что позволяет перемещать исполняемые файлы в другое место после сборки в окружении для разработки.