LINUX.ORG.RU

Обнаружен критический баг в libunrar+clamav!


0

0

Всем, кто использует libunrar совместно с Clamav, для проверки архивов RAR v.3, недавно был обнаружен критический баг, который приводил работу clamd/clamdscan/clamscan к Segmentation fault на запаролленных RAR архивах. Обнаружил этот баг Сергей Остащенко, который любезно предоставил архивный файл, на котором происходит падение Clamav'а.

Мною выпущена "заплатка" для libunrar-3.5.x: http://mcmcc.bat.ru/clamav/ftello_unr...

Падение Clamav можно проверить на этом файле:http://mcmcc.bat.ru/clamav/hz.rar

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

>а почему ты в команде linux XP?

Ага - недавно такой флейм по этому поводу подняли, а комментариев от тебя небыло

Orlangoor ★★★★★
()
Ответ на: комментарий от Sorcerer

От дебага осталось, можно было конечно проще сделать:
if(Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->H eaderSize,Repeat
) == false)
return (ERAR_UNKNOWN);
Но это уже не столь важно...

McMCC ★★★
() автор топика
Ответ на: комментарий от anonymous

>а почему ты в команде linux XP?

Ну было дело, давно, делал им там небольшую работу, но то что в команде,
незнал....:)

McMCC ★★★
() автор топика
Ответ на: комментарий от Orlangoor

>Ага - недавно такой флейм по этому поводу подняли, а комментариев от тебя
>небыло

Хмм... А где про это почитать:)?...

McMCC ★★★
() автор топика

Интересно, что в кламавовском cvs-unrar-е, который тоже понимает v.3, такая ошибка не проявляется. Кроме того, в cvs-версии корректно обрабатываются настройки лимитов и encrypt/noencrypt

.......
LibClamAV debug: Recognized RAR file
LibClamAV debug: in scanrar()
LibClamAV debug: in cli_unrar
LibClamAV debug: Head CRC: 976f
LibClamAV debug: Head Type: 73
LibClamAV debug: Flags: 0040
LibClamAV debug: Head Size: 000d
LibClamAV debug: Found file block.
LibClamAV debug: Pack Size: 9504
LibClamAV debug: UnPack Version: 0x14
LibClamAV debug: Pack Method: 0x35
LibClamAV debug: Filename: pknorm.DBF
LibClamAV debug: PASSWORDed file: pknorm.DBF
LibClamAV debug: Found file block.
LibClamAV debug: Pack Size: 451184
LibClamAV debug: UnPack Version: 0x14
LibClamAV debug: Pack Method: 0x35
LibClamAV debug: Filename: pknorm.FPT
LibClamAV debug: PASSWORDed file: pknorm.FPT
LibClamAV debug: Found block type: 0x78
LibClamAV debug: Head Size: 001a
LibClamAV debug: RAR: pknorm.DBF, crc32: 0x218aca1e, encrypted: 1, compressed: 9504, normal: 75609, method: 53, ratio: 7 (max: 250)
LibClamAV debug: RAR: pknorm.FPT, crc32: 0x31d0e3c6, encrypted: 1, compressed: 451184, normal: 770022, method: 53, ratio: 1 (max: 250)
LibClamAV debug: RAR: Exit code: 0
./hz.rar: OK

----------- SCAN SUMMARY -----------
Known viruses: 41469
Engine version: devel-20051226
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.45 MB
Time: 0.715 sec (0 m 0 s)

anonymous
()
Ответ на: комментарий от McMCC

Почитал... Только не понял, в чем мой позор конкретно выражается...
Пришли люди, предложили нормальных денег, я сделал свою работу,
а что там за политика у них была, мне как-то по барабану, знаю только одно,
в LinuxXP многое было заказано, дописано и переделано для простых
пользователей с уклоном на виндовз, о каких то нарушений GPL не
слышал, все что связано с GPL можно получить без проблем, покупаете
дистр и требуете исходники, покрайней мере Королев так и говорил, а
та часть, что коммерческая, естественно никто не даст. Сам лично последний
LinuxXP не видел, так как принимал участие почти год назад, подозреваю,
что поменялось там многое, вот собственно весь мой комментарий...

McMCC ★★★
() автор топика
Ответ на: комментарий от anonymous

>Интересно, что в кламавовском cvs-unrar-е, который тоже понимает v.3, такая
>ошибка не проявляется. Кроме того, в cvs-версии корректно обрабатываются
>настройки лимитов и encrypt/noencrypt

Там ведь переписана эта часть практически целиком, а то что используется
в моем решение, стандартная библиотека, но как выяснилось, не без греха...
Насколько мне известно, unrar из cvs clamav, тоже не безупречен, имеет
проблемы с юникодными именами файлов и еще что то было...


McMCC ★★★
() автор топика
Ответ на: комментарий от Sorcerer

>Интересное имя ненужной переменной - "NoExtract".

Да там и код какой-то не очень красивый... :-(

P.S. McMCC не обижайся, я не со зла.. ;)

php-coder ★★★★★
()
Ответ на: комментарий от McMCC

>Пришли люди, предложили нормальных денег, я сделал свою работу

И только из утренних выпусков газет я узнал, что его звали Джон Кеннеди.

Sun-ch
()
Ответ на: комментарий от Sun-ch

>>Пришли люди, предложили нормальных денег, я сделал свою работу
>И только из утренних выпусков газет я узнал, что его звали Джон Кеннеди.

Точно..А в 17-м я на "Авроре" был, спусковой механизм пушки ремонтировал...

McMCC ★★★
() автор топика
Ответ на: комментарий от anonymous

>теперь мы знаем имя того кто в оппенсорце пишет дырявый софт!

А каким боком ко мне относится libunrar? Это к Рошалю, думаю, надо и ему
это патч отослать....

McMCC ★★★
() автор топика

я фигею, мало того что libunrar это не GPL/BSD так ещё и авторский код, который нельзя так просто править без авторского согласия

На самом деле уже давно существует замечательный проект 7z где, всё что нужно есть в GPL и поддержка распаковки rar3. Так что советую к нему присмотреться внимательней, так как у 7z есть все шансы стать mainstream в мире архиваторов.

anonymous
()
Ответ на: комментарий от anonymous

>На самом деле уже давно существует замечательный проект 7z где, всё что
>нужно есть в GPL и поддержка распаковки rar3. Так что советую к нему
>присмотреться внимательней, так как у 7z есть все шансы стать mainstream в
>мире архиваторов.

7z умеет распаковывать rar v.2, к сожалению, про rar v.3 ни разу не
слышал, но даже если и так, то он очень громоздкий, из 7z мною был
взят только родной распаковщик, т.к. со всем остальным "довеском"
получается монстр...

McMCC ★★★
() автор топика
Ответ на: комментарий от Annymous

>А rpm для rh9 патченого libunrar будет?

Да, будет, как rpmки сделаю, так сразу объявлю...

McMCC ★★★
() автор топика
Ответ на: комментарий от Annymous

>А почему сделана распаковка через lib, а не просто вызовом unrar? По-моему,
>проще было бы с лицензиями..

Такое решение не годится для сервера....

McMCC ★★★
() автор топика

Sun-ch, отстань уже от нашего McMCC!

Нечем заняться, возьми пример с любого кота...

AVL2 ★★★★★
()
Ответ на: комментарий от McMCC

>7z умеет распаковывать rar v.2, к сожалению, про rar v.3 ни разу не слышал

Из истории 2х летней давности 7-Zip (виндовская версия, юниксовская пока в бете, так как автор виндопрогер):

Version 2.30 Beta 25 2003-01-02 --------------------------------------

- Supporting encrypted Rar3 archives.

- Supporting Unicode names in Rar3 archives.

либа rar лежит отдельно от всего

anonymous
()
Ответ на: комментарий от anonymous

Виндовая версия 7zip спокойно распаковывает rar v3

comp> rar a -m5 -r -s i.rar images

RAR 3.51 Copyright (c) 1993-2005 Alexander Roshal 7 Oct 2005
Shareware version Type RAR -? for help

Evaluation copy. Please register.

Creating solid archive i.rar

Adding images\spaser.gif OK
Adding images\logo.jpg OK
Adding images\stars.jpg OK
Adding images OK
Done

comp> 7z x i.rar

7-Zip 4.32 Copyright (c) 1999-2005 Igor Pavlov 2005-12-09

Processing archive: i.rar

Extracting images\spaser.gif
Extracting images\logo.jpg
Extracting images\stars.jpg
Extracting images

Everything is Ok

odip ★★
()
Ответ на: комментарий от Spinal

>>так как у 7z есть все шансы стать mainstream в мире архиваторов.

>Аноним, чем тебе не нравится tar+bzip2/gzip?

>Spinal (*) (11.01.2006 12:26:25)

Иди почитай хотя бы немного про 7zip

Если и после этого ты не поймешь о чем говорит анонимус,
то можешь смело последовать за Томми ;)

odip ★★
()
Ответ на: комментарий от php-coder

> Да там и код какой-то не очень красивый... :-(

Там ещё не так плохо.

Novel ★★★★
()
Ответ на: комментарий от McMCC

>Такое решение не годится для сервера.... Ну сервер бывает разный, при десятке писем в минуту решение с вызовом unrar вполне применимо...

Annymous
()
Ответ на: комментарий от Spinal

7zip - отличный формат для сжатия бинарников. Отрыв от конкурентов от десятков процентов до разов. Попробуй для примера сжать бинарник mplayer с сопутствующими либами.. )

Annymous
()

2 McMCC

бедет ли clamav-0.88-libunrar3.patch ? ибо старый уже на накладывается.

patching file clamav-0.88/libclamav/Makefile.am patching file clamav-0.88/libclamav/scanners.c Hunk #3 succeeded at 332 with fuzz 1. Hunk #4 FAILED at 1216. Hunk #5 succeeded at 1492 (offset 52 lines). Hunk #6 succeeded at 1553 (offset -30 lines). 1 out of 6 hunks FAILED -- saving rejects to file clamav-0.88/libclamav/scanners.c.rej patching file clamav-0.88/libclamav/unrarlib.c patching file clamav-0.88/libclamav/unrarlib.h

anonymous
()
Ответ на: 2 McMCC от anonymous

>бедет ли clamav-0.88-libunrar3.patch ? ибо старый уже на накладывается.

Да, будет, сегодня...

McMCC ★★★
() автор топика
Ответ на: 2 McMCC от anonymous

Нужно немного доработать напильником. Наложить патч и руками скопировать функцию cli_scanrar3 Именно она не вставляется автоматом. Дальше как обычно.

anonymous
()
Ответ на: комментарий от anonymous

>Нужно немного доработать напильником. Наложить патч и руками скопировать
>функцию cli_scanrar3 Именно она не вставляется автоматом. Дальше как
>обычно.

Совершено точно....

McMCC ★★★
() автор топика
Ответ на: комментарий от odip

>Иди почитай хотя бы немного про 7zip

>Если и после этого ты не поймешь о чем говорит анонимус, то можешь смело последовать за Томми ;)

7-Zip is a file archiver with the high compression ratio. The program supports 7z, ZIP, CAB, RAR, ARJ, LZH, CHM, GZIP, BZIP2, Z, TAR, CPIO, RPM and DEB formats. Compression ratio in the new 7z format is 30-50% better than ratio in ZIP format.

Давай так, ты сжимаешь распакованное ядро своим 7zip, а я tar+bzip2, потом взвесим, сравним и подумаем, кому из нас всё-таки следует пойти по стопам Томми, ok?

Spinal
()

Патчи для Clamav v.0.88:
RAR3:
http://mcmcc.bat.ru/clamav/clamav-0.88-libunrar3.patch
7ZIP:
http://mcmcc.bat.ru/clamav/clamav-0.88-un7zip.patch
Собранные RPM пакеты с поддержкой RAR3 & 7ZIP:
для RH7/RH8/RH9/FC1:
http://mcmcc.bat.ru/clamav/libun7zip-4.30-1.rh7.i386.rpm
http://mcmcc.bat.ru/clamav/libunrar3-3.5.4-2.rh7.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-0.88-1.rh7.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-devel-0.88-1.rh7.i386.rpm
для FC2/FC3/RHEL4 x86:
http://mcmcc.bat.ru/clamav/libun7zip-4.30-1.rhel4.i386.rpm
http://mcmcc.bat.ru/clamav/libunrar3-3.5.4-2.rhel4.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-0.88-1.rhel4.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-devel-0.88-1.rhel4.i386.rpm
для FC2/FC3/RHEL4(/FC4) x86_64:
http://mcmcc.bat.ru/clamav/libun7zip-4.30-1.rhel4.x86_64.rpm
http://mcmcc.bat.ru/clamav/libunrar3-3.5.4-2.rhel4.x86_64.rpm
http://mcmcc.bat.ru/clamav/clamav-0.88-1.rhel4.x86_64.rpm
http://mcmcc.bat.ru/clamav/clamav-devel-0.88-1.rhel4.x86_64.rpm
для FC4 x86:
http://mcmcc.bat.ru/clamav/libun7zip-4.30-1.fc4.i386.rpm
http://mcmcc.bat.ru/clamav/libunrar3-3.5.4-2.fc4.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-0.88-1.fc4.i386.rpm
http://mcmcc.bat.ru/clamav/clamav-devel-0.88-1.fc4.i386.rpm
SRPMS:
http://mcmcc.bat.ru/clamav/libun7zip-4.30-1.src.rpm
http://mcmcc.bat.ru/clamav/libunrar3-3.5.4-2.src.rpm
http://mcmcc.bat.ru/clamav/clamav-0.88-1.src.rpm

McMCC ★★★
() автор топика
Ответ на: комментарий от Spinal

Spinal, 7zip жмёт круче, у него другой минус, он тормоз!

anonymous
()
Ответ на: комментарий от Spinal

>>Иди почитай хотя бы немного про 7zip

>>Если и после этого ты не поймешь о чем говорит анонимус, то можешь смело последовать за Томми ;)

>7-Zip is a file archiver with the high compression ratio. The program supports 7z, ZIP, CAB, RAR, ARJ, LZH, CHM, GZIP, BZIP2, Z, TAR, CPIO, RPM and DEB formats. Compression ratio in the new 7z format is 30-50% better than ratio in ZIP format.

>Давай так, ты сжимаешь распакованное ядро своим 7zip, а я tar+bzip2, потом взвесим, сравним и подумаем, кому из нас всё-таки следует пойти по стопам Томми, ok?

Я даже пробовать не буду - тебе уже ответили ;)

Ладно, видимо за короткое время пока сам не попробуешь не понять почему 7-zip лучше

Тебя смутила цифра 30-50% better than ZIP ?

Во-первых 7-zip в состоянии сделать архив в формате tar + bzip2
Причем сжатие в bzip2 будет лучше чем в родном bzip2 !
( А как мы знаем из некоторых источников автор bzip2 сильно не утруждал себя алгоритмом - ну получилось у него лучше чем gzip - он на и этом остановился - так что это вполне реально )

Во-вторых - мы можем сжать в формате .7z, указав например -mx=9.
Будет вообще хорошо.

Вообщем-то у 7-zip есть UNIX-овый аналог - это p7zip, но он выходит реже.

Если скачать windows-версию 7-zip и взять chm-файл, то в нем можно найти много интересных опций и сведений - особенно в разделе опций сжатия.

odip ★★
()
Ответ на: комментарий от odip

Только bzip2 & gzip идут в базовой поставке. А 7zip придется еще ставить. Я уж лучше потрачу лишний объем на gzip или bzip2 и не буду париться с совместимостью зная что кому бы я не послал из своиъх друзей все смогут это прочитать. Чем заставлять их искать/ставить отдельно распаковщик. Хотя если kernel.org будет выпусткать ядра в 7zip то да тогда можно будет ставить раз ядро пакуют, а так я пока вижу только gzip и bzip2.

anonymous
()
Ответ на: комментарий от anonymous

самое главное достоинство 7zip, что оно умеет распаковывать ещё кучу других форматов(в том числе rar3 - в этом смысле единственный гпл продукт), чего не скажеш о bzip. на этом спрор 7zip vs bzip предлагаю закончить

anonymous
()
Ответ на: комментарий от anonymous

> у 7z есть все шансы стать mainstream в мире архиваторов

Есть несколько не столь радужных мыслей (с точки зрения простого юзера, не желающего ничего знать).

1. Не включён во многие дистрибутивы, типичный юзер не желает ничего качать, ему надо, чтоб кнопку "setup" ткнул и всё было.

2. Порт p7zip запаздывает относительно 7z. Причина была указана другим оратором выше. Классический юзер осторожно относится к продукту, новая версия которого выходит не каждую минуту (утрирую).

3. Мегабайт туда -- мегабайт сюда на 50М архиве -- в наше время толстых каналов и немеряных винтов уже не столь критический аргумент, как 10К на 100К архиве во времена модемов на 2400 и 40Мб винтов.

P.S. Вспоминается, как во времена оны (BBS "для узкого круга" держал) приходилось заниматься следующим извращением: каждый архив паковался с максимальным сжатием следующим набором архиваторов: rar, arj, ha (этот -- в двух вариантах -- арифметический и хоффмановский кодеры), limit, uc2. Лучший архив получал право быть выложенным на борду. Обычно это были uc2, limit и ha, крайне редко -- rar и arj.

Obidos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.