Clamav и проверка RAR архивов версии 3.

ВНИМАНИЕ! Найден критический баг в сканировании exe файлов после установки патча clamav-libunrar3.patch на Clamav, он заключается в том, что после сканирования саморасспаковывающихся exe архивов созданных RAR 2/3.x не возвращается позиция на начало файла в дескрипторе, соответсвенно следущая проверка не выполняется, так как ей достается конец. Всем, кто использует данную связку советую наложить этот fix на ранние патчи или взять новые версии патча, архивов или rpm пакетов приведенных в этой статье. Выражаю большую благодарность Ruwa(Russu Valery) за найденный баг!

Всем известно, что в антивирусную программу clamav встроена проверка RAR архивов версии 2, однако большенство пользователей используют для создания своих архивов RAR версии 3 и практически уже никто не использует 2-ю версию, разработчики clamav не хотят встраивать поддержку 3-ей версии из-за лицензионных разногласий между новой версией libunrar, со своей более строгой лицензией, и clamav, который написан под GPL. Пока идут дебаты на тему включать или не включать libunrar v.3 в clamav, мною была предпринята попытка реализовать эту функциональность самостоятельно, поэтому далее будет описан процесс, как скрестить libunrar v.3 с последней версией clamav(на данном этапе - 0.80).

В начале нужно собрать и установить последнюю версию libunrar, для этого идем на ftp://ftp.rarlab.com/rar и скачиваем исходники последней libunrar, ftp://ftp.rarlab.com/rar/unrarsrc-3.4.3.tar.gz . Что бы собрать libunrar в нужном нам виде, необходимо наложить этот патч - unrar-3.4.3_fix.patch, сборку осуществляем как:

make -f makefile.unix lib

Устанавливаем следующим образом:

install -s -D -m 755 libunrar3.so /usr/lib/libunrar3.so
install -D -m 644 dll.hpp /usr/include/libunrar3/dll.hpp

На этом установку libunrar можно считать законченой. Для систем на базе rpm пакетов, можно скачать готовые rpm'ки:
TAR_BZ2:
libunrar3-3.4.3.tar.bz2
RPMS:
libunrar3-3.4.3-1.i386.rpm
SRPMS:
libunrar3-3.4.3-1.src.rpm

Следущим этапом берем свежий clamav из CVS, http://www.clamav.net/snapshot.html#pagestart, можно взять мой архив(за 30.11.2004), в котором включены все нужные патчи:
TAR_BZ2:
clamav-0.80-4.mc.tar.bz2

После того, как выкачен свеженький clamav из CVS, нужно наложить этот патч - clamav-libunrar3.patch, затем обязательно выполнить 3и команды:
aclocal
autoconf
automake

Далее как обычно, конфигурим, собираем и устанавливаем clamav...

Мною подготовлены рабочие rpm пакеты, которые не требуют каких либо настроек и работать начинают сразу после установки, но в них отсутствует сборка milter плагина для sendmail'а, при желании ее можно включить, если будете пересобирать из srpm, для этого в spec файле надо убрать строчку с _without_milter.
RPMS:
clamav-0.80-4.fc1.i386.rpm
clamav-devel-0.80-4.fc1.i386.rpm
SRPMS:
clamav-0.80-4.fc1.src.rpm
После установки rpm пакетов даем следущие команды:
service freshclam start
service clamd start
и на этом можно считать установку законченной...

Теперь немного о том, что сделано:
- Проверка саморасспаковывающихся exe архивов созданных RAR 2/3.x
- Проверка обычных rar архивов созданных RAR 2/3.x
- Непроверяются запароленые архивы, битые, неизвестного формата и
  многотомные, им выставляется флаг, что они нормальные:)...

Все архивы, которые касаются данной темы и новые обновления, вы можете скачать отсюда:
http://mcmcc.bat.ru/clamav/


Copyright (C) 2004 McMCC <mcmcc@mail.ru>