Программист и антивирус

:

image
Я занимаюсь разработкой программного обеспечения для скоростной и автоматизированной торговли ценными бумагами и производными инструментами на Российском Фондовом рынке, в основном для физлиц. Проект веду чуть больше полугода и распространяю продукт свободно. До недавнего времени всё шло как обычно — расширяю функционал, вылавливаю баги, добавляю новые, вылавливаю, расширяю-добавляю, вобщем, обычный жизненный цикл проекта и так шло до тех пор, пока я не столкнулся с неожиданной проблемой, процесс решения которой мне показался, как минимум, удивительным, и достойным сей публикации.

Всё началось с того, что после очередного обновления программы я получил жалобы от пользователей, оказалось, что новая версия программы распознается антивирусом NOD32 как «probably unknown NewHeur_PE virus». При этом антивирус ведет себя по отношению к программе весьма агрессивно: препятствует скачиванию архива с программой, удаляет с жесткого диска пользователя exe-файл, прямо из архива. Остальные антивируы на программу реагируют адекватно. Ну чтож, ладно, клянусь пользователям, что программа не содержит никакого вируса, рекомендую проверять программу другими антивирусами или добавлять в исключения NOD32, а тем временем пытаюсь решить ситуацию с ESET. Прмерно месяц разговоров с тех поддержкой по телефону и электронной переписки получаю долгожданный ответ от ESET:

Здравствуйте.
Проблема решена в версии баз вирусных сигнатур 4613. Если
будут какие-либо проблемы — сообщите пожалуйста

Но радость моя была не долгой. После выхода новой версии (с начала переговоров с ESET прошел примерно месяц, я существенно обновил функционал и исправил очередную партию багов) от пользователей посыпались новые жалобы: проблема стала проявляться снова. Снова клянусь пользователям, что программа не содержит никакого вируса, рекомендую проверять программу другими антивирусами или добавлять в исключения NOD32, а тем временем пытаюсь решить ситуацию. Что приводит к следующей интереснейшей переписки с сотрудниками ESET:

>>>
Ответ на обращение № 159 914
Здравствуйте.
Добавьте данное приложение в Исключения антивириса

<<<

>>>

Ваше обращение зарегистрировано под номером 160 768

Вы меня не поняли. Я разработчик приложения и хочу, чтобы у
пользователей антивирус не блокировал приложение, не мешал его
загрузке с сайта, не удалял из архива и не доставлял им иных неудобств.

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

С уважением,
<<<

>>>
ESET. Ответ на обращение № 160 768

Здравствуйте.
Посоветуйте пользователям добавлять данный файл в Исключения антивируса.

Так как создание новых версий раз в 10 дней и добавление их «белых» сигнатур в вирусные базы не является решением вопроса.

<<<

>>>
Ваше обращение зарегистрировано под номером 160 792

Здравствуйте.
А вы уверенны, что это хорошее решение техподдержки антивируса, который мешает работе пользователей с другим, не зараженным приложением, рекомендовать пользователям добавить это приложение в исключение?
Вы не считаете, что функция антивируса препятствовать вредоносной деятельности программ, а также не мешать работе с другими программами?

Остальные антивирусы умеют отличать зараженные программы от не зараженных, в том числе и для любых версий этой программы, значит, способ есть, это вопрос компетенции

С уважением,
<<<

>>>
ESET. Ответ на обращение № 160 792
Здравствуйте.
Ваш файл детектируется эвристикой — которая автоматически определяет вредоносные функции файлов.

Если файл детектируется антивирусом, то это означает, что он несет вредоносные функции. Другой вопрос являются ли эти функции необходимыми для работы программы или нет.

В данном случае пользователь сам должен решить доверяет ли он данной программе или нет.

<<<

>>>
Ваше обращение зарегистрировано под номером 160 822

Здравствуйте.
Ваш антивирус не дает возможности пользователю сделать выбор и не информирует его о том, что пользователь должен сделать выбор. Он препятствует скачиванию антивируса, удаляет exe-файл из архива и пишет пользователю «Вирус: неизвестный вирус». И как после этого
выглядят мои объяснения пользователям, что специалист техподдержки сказал, что это
сообщение не значит, что в программе вирус? Что это вовсе не антивирус ругается, а всего лишь автоматический эвристический анализатор?

Ещё раз напомню, что этой проблемы нет у других антивирусов, значит, проблема именно в NOD.

Если вы отказываетесь искать дальнейшее решение, то я дам номер обращения и порекомендую пользователям NOD и моей программы на сайте, которые сомневаются в «чистоте» программы звонить и писать лично вам, и спрашивать подтверждение, действительно ли в программе нет вируса.

Тогда уж представьтесь пожалуйста, чтобы пользователи спрашивали лично вас и не беспокоили других сотрудников.

С уважением,
>>>

>>>
ESET. Ответ на обращение № 160 822

Здравствуйте.
Вам не говорили, что Ваша программа не содержит вирус.

Прочитайте предыдущее письмо.

По поводу возможности выбора — когда антивирус находит вредоносную программу — пользователь получает уведомление с выбором действий, где есть пункт «ничего не предпринимать», а затем может добавить файл в исключения.

«Ещё раз напомню, что этой проблемы нет у других антивирусов, значит, проблема именно в NOD.» — данная фраза не имеет смысловой нагрузки.

Мое имя @@@ @@@@@@. Хотелось бы предупредить Вас, что распротранение персональных данных человека без его согласия является угловным преступлением. Соответственно, мое имя я Вам не разреша.ю использовать на своем сайте и на других ресурсах.

Если Ваш пользователь позвонит с данной проблемой, он получит точно такой же ответ — как в предыдущем письме — то что данная программа является вредоносной и он может установить ее, добавив в Исключения под свою ответственность.

<<<

>>>
Ваше обращение зарегистрировано под номером 161 013

Здравствуйте.

ESR> Здравствуйте.
ESR> Вам не говорили, что Ваша программа не содержит вирус.
Вот как? Ваше заявление, мягко говоря, удивляет.
Предыдущая версия программа даже была включена в обновления
антивирусных баз и антивирус не обнаруживал ничего вредоносного в
программе, в предыдущем письме проблема была прокомментирована вами же
следующим образом:
«Так как создание новых версий раз в 10 дней и добавление их „белых“
сигнатур в вирусные базы не является решением вопроса.». Теперь вдруг
причина стала во вредоносности программы? С чего такой неожиданный поворот?

ESR> Прочитайте предыдущее письмо.

ESR> По поводу возможности выбора — когда антивирус находит
ESR> вредоносную программу — пользователь получает уведомление с
ESR> выбором действий, где есть пункт «ничего не предпринимать», а
ESR> затем может добавить файл в исключения.
Знаете, я не пользователь NOD, но судя по отзывам пользователей, они
удивленно наблюдают, как из только что скачанного архива антивирус
удаляет exe-файл.

ESR> «Ещё раз напомню, что этой проблемы нет у других
ESR> антивирусов, значит, проблема именно в NOD.» — данная фраза не
ESR> имеет смысловой нагрузки.
Ну как же не несет. Проверяем программу другими антивирусами — ничего
подозрительного, как и должно быть.

ESR> Мое имя @@@ @@@@@. Хотелось бы предупредить Вас, что
ESR> распротранение персональных данных человека без его согласия
ESR> является угловным преступлением. Соответственно, мое имя я Вам не
ESR> разреша.ю использовать на своем сайте и на других ресурсах.
Не беспокойтесь, без вашего разрешения я не собираюсь публиковать Ваше
имя. Будет опубликованна переписка целиком, за исключением вашего
имени.

Думаю публичное обсуждение — это шанс для вас публично
продемонстрировать свою компетентность и оперативно решить проблему.
В этом заинтересованы и я и вы.

ESR> Если Ваш пользователь позвонит с данной проблемой, он
ESR> получит точно такой же ответ — как в предыдущем письме — то что
ESR> данная программа является вредоносной и он может установить ее,
ESR> добавив в Исключения под свою ответственность.
Раз уж вы очень хорошо знаете уголовное право, то наверняка знаете,
что клевета также является уголовным преступлением, и хочу вас также
предостеречь от подобных действий. Эта информация будет заведомо
ложной и доказательством тому будут ваши же предыдущие письма и
действия компании по включению программы в базы сигнатур, а также
результаты проверки другими антивирусными программами. Кроме того, вам
придется указать, какие именно вредоносные действия совершает
программа, а так как таковые отсутствуют, вы не сможете этого сделать.
Несмотря на то, что вы не хотите, чтобы ваше имя попало в публичное
обсуждение, при ответе клиенту по телефону или при переписке, вам (или
другому сотруднику) придется представиться по просьбе клиента и нести
ответственность за свои слова.
<<<

ответа нет.
клянусь пользователям, что программа не содержит никакого вируса, рекомендую проверять программу другими антивирусами или добавлять в исключения NOD32 и пользоваться программой на свой страх и риск.

Больше всего удивляют меня в этой истории 2 вещи:

Во-первых, пока я не сталкивался, я не задумывался, что оказывается, антивирусная компания — это особый, взявшийся ниоткуда вид власти, благодаря которой заинтересованные лица могут подпортить репутацию любому программному продукту, и чем популярнее эта компания, тем больше у нее такой власти.

Во-вторых, удивительно, как этой властью может пользоваться рядовой сотрудник техподдержки компании, переменой настроения которого, программа, относительно которой вопрос ранее решался положительно, далее становится однозначно вредоносной.

P.S. Пока я писал эту статью, на сайте программы у меня произошел следующий диалог с [предположительно] сотрудником ESET:

abibos
Ну ты даешь, во всем опусе рассматривается нежелание понимать другую сторону или недостаточность знаний.

Попробуй разобраться:

Эвристика — совокупность методов поиска решения задачи, которые позволяют сократить количество переборов.
Больше можно почитать здесь — ru.wikipedia.org/wiki/%D0%AD%D0%B2%D1%80%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7

Проще говоря, эвристика — это механизм поиска подозрительных действий и условий, которые относятся антивирусом к вредоносным. Поэтому ложные срабатывания или, точнее, выявления вредоносных действий «полезных» программ очень часты.

То есть чтобы решить проблему детектирования твоей программы нужно либо переделывать механизм эвристики в антивирусе (что, согласись, мало кто захочет делать), либо добавлять специальную сигнатуру в вирусные базы, такое «внутреннее» исключение — что и было сделано в начале.

Затем, ты выпустил новую версию и проблема повторилась — так как та сигнатура, которую добавили, уже не сопоставлялась с твоей программой.

Добавлять каждый раз — при выпуске новой версии твоей программы — сигнатуры это увеличения размера вирусных баз (что критично для антивирусных программ), а также лишняя работа и для тебя, и для разработчиков антивируса. Поэтому тебе и ответили, что необходимо добавлять файл в исключения антивируса.

Я бы на твоем месте начал копать в сторону кода своей программы — найти, что вызывает детектирования антивируса и исправить. Это могут быть и какие-либо функции антивируса, и даже использования определенных упаковщиков.

Однажды сам столкнулся с этим, поэтому знаю о чем говорю)

abibos,

я пытался взаимодействовать с ESET по этому вопросу конструктивно, и спокойно пошел бы на правку кода, если бы получил какие-то рекомендации от сотрудников техподдержки. Но ведь мне никто ничего подобного в ESET и не предложил. Вместо этого я получаю одноразовое добавление версии программы в базу, затем отказ продолжать такую практику и отказ искать другие решения, затем, после моих возражений, что рекомендовать пользователям добавлять программу в исключения тоже не решение, получаю обиженного царька, который провозглашает программу вредоносной.

Т.е. при таком положении дел, в отсутствии поддержки со стороны антивируса чтобы «покопать свой код» я должен что сделать? купить и поставить NOD, удалить свой антивирус и провести ряд экспериментов по отключению функций и поиску, на какую же из них активируется эвристический анализатор NODа. Забудем, что эта ситуация меня сильно возмущает. Возможно, когда-нибудь я это и проделаю. Но на данном этапе у меня очень много планов, которые я намерен приоритетно посвятить функционалу своего продукта, и эта борьба с ветряными мельницами становится в самый их хвост и под большим вопросом. Считаю, что на данном этапе могу прожить без NOD32

Я прекрасно понимаю в чём суть и причина ложных срабатываний эвристического анализатора. Дело в том, что на диагноз эвристики антивирус реагирует также агрессивно, как на настоящий вирус. И понятно почему: старается защитить пользователя от возможного вируса, который антивирус ещё не знает. Но за счёт удобства работы пользователя с не вредоносными программами, которые антивирус подозревает. Это тонкая грань, но, по моему мнению по этой тонкой грани в первую очередь всё-таки должны ходить разработчики антивирусов, а не софта. С подходом «переделывать механизм эвристики в антивирусе мало кто захочет» я несогласен в корне. Есть множество антивирусов и у каждого из них есть эвристический анализатор. И критерием качества эвристического анализа является максимально правильное детектирование вредоносных объектов и минимальное количество ложных срабатываний (иначе зачем нужна эвристика, давайте подозревать вообще все объекты и полностью блокировать работу пользователя). И если эвристика всех антивирусов, кроме NOD32 реагирует на объект адекватно (и QuikOrdersDOM в этом отношении не единичный случай, у NOD это частая история), то подход «переделывать механизм эвристики в антивирусе мало кто захочет» приводит к поражению в конкурентном сравнении NOD с другими антивирусными программами.

abibos
Может быть ты и прав, но с другой стороны все это нужно тебе, а не техподдержке — у них нет задач решать данные проблемы.
Это задачи разработчиков антивируса, ищи пути взаимодействия с ними (официальный форум например).

По поводу — «И если эвристика всех антивирусов, кроме NOD32 реагирует на объект адекватно (и QuikOrdersDOM в этом отношении не единичный случай, у NOD это частая история)» — с тобой никак не соглашусь. Немного «вращаюсь» в данной теме и знаю, что официальные тесты независимых лабораторий признают, что у данного антивируса минимальное кол-во ложных срабатываний эвристики.

Просто тебе и твоей программе «не повезло»)

abibos,
>Может быть ты и прав, но с другой стороны все это нужно тебе, а не техподдержке — у них нет задач решать данные проблемы.
>Это задачи разработчиков антивируса, ищи пути взаимодействия с ними (официальный форум например).
Насколько это нужно мне, я определил в своих приоритетах. Я уже повзаимодействовал с сотрудниками, официальную позицию понял

>По поводу — «И если эвристика всех антивирусов, кроме NOD32 реагирует на объект адекватно (и QuikOrdersDOM в этом отношении не единичный >случай, у NOD это частая история)» — с тобой никак не соглашусь. Немного «вращаюсь» в данной теме и знаю, что официальные тесты независимых >лабораторий признают, что у данного антивируса минимальное кол-во ложных срабатываний эвристики.
>Просто тебе и твоей программе «не повезло»)
Вы сотрудник eset nod? Тогда другого от вас никто услышать и не ожидает
В интернете можно найти множество историй о ложных срабатываниях ESET.
Да и потом это звучит также нелепо, как рекламировать возле всмятку разбитого автомобиля из-за аварии по вине конструкторов, что у него великолепные характеристики безопасности, просто этому автомобилю не повезло

abibos
Нет, я не сотрудник данной компании.

Просто как было указано выше я сталкивался с данной проблемой, выяснял позицию техподдержки — она была примерно такая же — просто я быстрее всё понял)
Затем обратился на официальный форум, где отвечают разработчики антивируса — www.wilderssecurity.com — где мне помогли исправить «недостатки» моей программы.

Я иногда использую твой софт, и использую данный антивирус, когда возникли проблемы просто добавил файл в исключения и все.
Расписал тут все только потому что не люблю когда обвиняют других людей не понимая их позиции или из нежелания что-то сделать самому.

За сим откланиваюсь.

abibos,

>Нет, я не сотрудник данной компании.

Тогда наверное это случайное совпадение, что внешний IP адрес с которого вы пишите имеет доменное имя eset-mail.esetnod32.ru

Я не понимаю, зачем устраивать спектакль в блоге сейчас и давать какие-то рекомендации по обходным путям, когда можно было решить вопрос в прямой переписке. На последнее письмо я ответа так и не получил

======

Ну не цирк ли? Что вообще происходит в этой ESET? Изначально хочется думать, что у солидной фирмы и сотрудники должны быть адекватными, жизнь показывает, что, к сожалению, это не всегда так (