Антивирусная защита или стремный и параноидальный NOD32


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

Продукт наш — коммерческий, нацеленный на промышленный и образовательный рынки. Стоит продукт несколько сот долларов. Обнаружение вируса для нас — это ЧП. Так как под угрозой репутация и наша и нашего заказчика. Поэтому мы очень тщательно относимся к регулярной проверке всех компьютеров проекта на вирусы. Пользуемся мы Нортоном. Перед выпуском продукта мы решили проверить еще и NODом. Нашему удивлению не было предела, когда NOD32 выдал «подозрение на «win32/genetik». Сразу же по проекту была объявлена боевая тревога. Помимо внеочередной проверки всех компьютеров проекта, мы начали отрабатывать несколько вопросов:

1. Что такое «win32/genetik»? Что делает «win32/genetik»? Насколько он опасен? Нужно было найти описание «вируса».
2. Источник «win32/genetik» и как побороть «вирус».
3. Как объясниться с заказчиком.

1. Что такое «win32/genetik»? Что делает «win32/genetik»? Насколько он опасен? 

Базы вирусов на сайте NODа я не нашел. ESETу (разработчику NOD32) стоило бы сделать такую же базу, как сделал Symantec у себя на сайте. Однако описание «win32/genetik» я все-таки нашел на сайте NODа. Описание «вируса» было спрятано в документе «Mid-Year Global Threat Report» от ESET.

В документе сказано:

«The label Win32/Genetik is used to indicate files that have been detected as being malicious by a technique implemented in NOD32 and ESET Smart Security, using advanced heuristics to take advantage of the knowledge accumulated over years in our database of generic signatures. Files flagged by this name are detected proactively: once they have been analyzed by our virus lab, labeling may be updated to a more specific name.»

Если говорить простым языком, то это означает, что в файле нет конкретного известного вируса, и ESET определил файл как вредоносный с помощью своего эвристического алгоритма, который базируется на опыте компании ESET. Таким образом, достоверно неизвестно, что делает и насколько вреден файл, в котором обнаружен «Win32/Genetik».

Для более широкого изучения проблемы мы воспользовались сервисом: virustotal.com. virustotal.com в режиме реального времени проверяет конкретный файл на вирусы 39-тю антивирусными программами, среди которых: Norton, McAfee, Microsoft, AVG. Как и в случае с коробочным вариантом NODа, NOD на virustotal.com показал: «probably a variant of Win32/Genetik «. Все другие антивирусы ничего не нашли.

Забегая вперед… вообще этот эвристический алгоритм ESET — ошибочный. И компания ESET бьет по своей репутации, когда NOD32 напрасно ругается на «чистый» и популярный коммерческий продукт. Думаю, это вполне может стать поводом для судебного иска. Ведь ложно-позитивная тревога может отпугнуть пользователей продукта, что скажется на доходах разработчика, на его деловой репутации.

2. Источник «win32/genetik» и как побороть «вирус».

Мы еще раз проверили все компьютеры на проекте. Вирусов нет, за исключением разных билдов нашей программы, где NOD32 также находил Win32/Genetik. Учитывая, что это только подозрение и результат эвристического алгоритма, мы начали разбираться с внутренностями файла. Методом исключения и исследования кода, мы выяснили проблему. Проблема заключалась в использовании в программе функций WinAPI для работы с процессами. Причем, если использовать эти функции по-другому, то NOD32 не ругается. Мы внесли соответствующие изменения в следующую версию продукта.

3. Как объясниться с заказчиком.

Собственно еще до того, как мы выяснили причину «вируса», нам нужно было принять решение, сообщать заказчику о подозрении на вирус или нет. Дилемма. Если мы сообщаем, что мы выпустили продукт с вирусом, то это подпортит нашу репутацию, усложнит отношение с заказчиком, ну, и все вытекающие последствия. Если мы не сообщим заказчику о подозрении на вирус, и вирус обнаружат пользователи продукта, то это будет еще хуже, чем, если бы мы сказали сами. В любом случае у нас оставался достаточно большой шанс, что это не вирус, а ложная тревога. У нас не было конкретной информации о причинах появления вируса, как вылечить программу, какие шаги заказчику предпринимать. У нас не было времени, так как заказчик должен был через несколько часов анонсировать выпуск продукта. Поэтому учитывая все факторы, мы все-таки решили сообщить заказчику о проблеме. Заказчику я рассказал все как было: подозрение на вирус у NOD32 в результате эвристической проверки, что не дает 100 уверенности что это таки вирус, другие антивирусные программы (АВ-программы) вирус не находят, мы работает над окончательным выяснением ситуации. Заказчик воспринял наше сообщение вполне нормально, начал дополнительно проверять другими АВ программами, отослал файл с подозрением в ESET, virustotal.com и еще куда-то. Заказчик сразу написал FAQ для пользователей. Когда мы выяснили источник проблемы и сообщили заказчику, он был поражен нашей профессиональной работой. В этой ситуации мы показали оперативность и профессионализм, причем, это заметил заказчик и похвалил.

Через несколько дней ESET отреагировал на нашу/заказчика жалобу и выпустил обновление базы, которая уже не ругалась на наши файлы.

Уроки. Лучше перебдеть, чем недобдеть

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

2. Важна проверка файлов отправляемых заказчику вне зависимости от регулярной антивирусной проверки на проекте. Причем на этом этапе важна проверка разнообразными АВ программами. Для этого наилучшим образом подходит virustotal.com. Но тут нужно понимать, можно ли файлы заказчика, да и любые файлы, который являются чьей-то собственностью и имеют коммерческую ценность, отсылать куда-то в сеть, в частности на virustotal.com. Возможно, этот вопрос нужно будет согласовать с заказчиком. Причем, чтоб заказчик не усомнился в безопасности вашего процесса производства, ему стоит объяснить, что могут быть случаи ложно-позитивных результатов сканирования файлов отдельными АВ-программами. И это в его, заказчика, интересах — убедится, что пользователи его продуктов не засыпят техподдержку сообщениями о ложно-позитивных результатах.

3. Дополнительные проверки лучше делать до того как файлы попадут заказчику. У нас так получилось, что мы делали дополнительную проверку уже после того как файл был отослан заказчику. Собственно, дополнительная проверка NODом была произведена случайно — программист просто решил проверить файл именно NOD32. Если бы мы проверили файл до отсылки заказчику, то у нас было бы время на то чтоб исследовать нашу вирусную тревогу, исправить проблему и отослать стерильный файл заказчику. В этом случае не нужно было бы тревожить заказчика, и выпуск прошел бы гладко. Правда, тогда возможно пользователи начали бы жаловаться на сообщения NODа о «win32/genetik» в файле…

4. Важно вовремя и в нужной манере сообщить заказчику об угрозе вирусной инфекции файлов. Конечно же, лучше избегать всякий негативных коммуникаций с заказчиком, даже если существует просто какое-то подозрение. Хорошо, если заказчик все адекватно воспринимает, но может быть и паника, жалобы руководству, и как следствие общекомпанийские разборки и «боевые учения». Если же вы попали в аналогичную ситуацию — продукт выпущен, а вы обнаруживаете подозрение на вирус, то лучше перебдеть, чем недобдеть. Руководителю проекта нужно брать ответственность на себя и сообщить заказчику о подозрении. Сделать это нужно деликатно, корректно, а не в духе «шеф, все пропало!». Я в этом случае:

1) Сказал, что одной из АВ-программ был обнаружено подозрение на вирус. Все остальные программы вирусы не обнаружил. Перечисли АВ-программы.
2) Показал официальное описание «вируса» от разработчика АВ-программы. Описание вируса позволило несколько разрядить обстановку. Ведь выясняется, что нет 100% уверенности в том, что в программе есть вирус.
3) Сообщил, что мы в процессе выяснения причин возникновения проблемы и ее решений.

Конечно, заказчик не будет рад вашим сюрпризам, но у него будет шанс предпринять какие-то действия и не засветить проблемный продукт пользователям. Пусть лучше заказчик узнает о проблеме от вас, чем от пользователей. Тут даже не важно, реальный это вирус или нет. Ведь пользователи, которые часто не имеют компетенции в «вирусологии» и не понимают, что вируса в файле реально нет, 100% будут жаловаться на то, что АВ-программы ругаются. Если вы сообщили о подозрениях, у заказчика есть возможность отослать самому или поручит вам отослать файл разработчикам АВ-программы для аудита. Также заказчик сможет отменить выпуск, снять файл с загрузки, сообщить пользователям и т.д. Вообще, скрывать информацию плохо. Это рано или поздно приводит к неприятным сюрпризам. «Все тайное становится явным».

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*