а я Alwill AVAST капратифный сломал ;)
Перенос моей статьи, для истории, из ЖЖ (livejournal.com)
АВАСТовский ADNM север оказывается крайне легко можно положить на лопатки вместе с дистрибуцией сигнатурок и прочими вещами. Как так легко да еще и не привелегированным пользователем? А просто элементарно!
Все началось сегодня с того что обьем сикельной базы разросся буквально гигабайтами за пару суток. Наловить столько вирусни нереально, стали разбираться. Обнаружили смешной просчет архитектуры клиент-серверной у аваста:
клиентская часть антивируса (агент) высылает на сервер строковые (да, прямо огромные строки!) данные о каждом своем чихе. Например о том что у него ошибка доступа к файлу какому-либо ;))) Северная часть не задумываясь(!) мигом делает INSERT INTO в таблицу Events (без индексов кстати) и вставляет вот эту вот огромную текстовую строку от клиента ;)
Пример строки (не самой длиной):
AAVM - scanning error: x_AavmCheckFileDirectEx: avfilesScanReal of C:\WINDOWS\TEMP\shshost.dll failed, 00000005.
когда сделали запрос в сикельной базе аваста SELECT COUNT(generated), objectname from events where generated >='02-17-2009' group by objectname
....увидели что каждый клиент успевает "настрелять" таких строк сотнями тысяч ;)
Вывод: если создавать произвольные файлы локально на клиентской машине (не требует прав) с "правильными" расширениями но в таком режиме доступа когда DENY_READWRITE сторонним процессам. клиент AVAST от этого сходит с ума и начинает атаковать свой сервер (и локальный event log машины кстати!)... У сервера мало того что нет тротлинга сообщений, так еще и внутренняя форма хранения этой информации - крайне неоптимизированна с точки зрения дизайна базы данных :(
Prof of concept писать не буду - это уже незаконно.