Случайно создал вирус?

Я видел это довольно часто: я пишу приложение в Delphi, и когда я его компилирую, антивирусный сканер сообщает мне, что я создал вирус, а затем немедленно снова удаляет исполняемый файл. Это раздражает, но разумно легко исправить, выполнив полную перестройку, сначала удалив файлы *.dcu, а иногда просто подождав.

Насколько я знаю, это происходит с Delphi 6, 7, 2005 и 2007. А Symantec, Kaspersky, McAfee и NOD32 были виновны в сообщении об этих ложных срабатываниях. Я знаю, что это потому, что Delphi добавляет временные метки к своим файлам DCU, и эти временные метки оказываются в конечном исполняемом файле и, по-видимому, являются частью какой-то случайной сигнатуры вируса.

Я не хочу отключать антивирус, даже для одной папки или файла. И я на самом деле не для решения, но мне интересно следующее:

  • Эти ложные срабатывания также встречаются с другими компиляторами?
  • Это также происходит с исполняемыми файлами.NET?
  • Другие также замечают подобные проблемы с Delphi?

18 ответов

Решение

Эти ложные срабатывания также встречаются с другими компиляторами?

Да, в прошлом это была распространенная проблема для AutoIt, о которой говорится в этом сообщении на форуме "Действительно ли мои EXE-файлы AutoIt действительно заражены?", В большинстве случаев, включая AutoIt, это связано с плохой эвристической практикой. Поскольку AutoIt использует бесплатный и открытый компрессор UPX, его часто ошибочно принимают за вредоносный код, который также использует UPX.

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

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

Оказывается, в википедии есть большой список AV-программ, который называется "Список антивирусных программ". Это более полный, чем мой список выше.

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

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

Когда я использовал антивирусный сканер, я никогда не видел этой проблемы с D6 или D7.

В дикой природе действительно существует вирус Delphi, см. http://www.sophos.com/blogs/sophoslabs/?p=6117

Да, моя команда переживала это, возможно, полдюжины раз за 2-3 года с Sophos в корпоративной среде. Так что очень редко, но это случается.

Наш ИТ-кретин начал с требования, чтобы я просмотрел все 1,5-миллиметровые строки кода в нашем приложении, чтобы "заставить его уйти", но он не слишком далеко продвинулся в этом направлении...

Чтобы быть справедливым, он изначально был обеспокоен тем, что наши клиенты также могут получить такое предупреждение, но мы только когда-либо видели, чтобы оно срабатывало при сборке exe-файла из IDE на ПК разработчика, а не при запуске exe-сборки сборки на тестовой коробке или в другом месте.

Лично это случается так редко, что мы не беспокоимся об этом.

У меня было такое со мной с развернутым кодом. Следующее обновление сканера решило проблему. Некоторые кретины написали вирус, используя тот же компилятор, и подпись была частью библиотеки времени выполнения, а не во враждебном коде.

Это не редкость при использовании нестандартных компиляторов или при выполнении причудливых низкоуровневых вещей: я помню, как создавал ложные срабатывания, когда баловался разработкой ОС: AntiVir не нравились некоторые из моих плоских двоичных файлов.

Недавно в списке рассылки tinyCC, посвященном AVG, было сообщение о такой проблеме.

Я никогда не видел этого, много занимаясь разработками на C++ и.NET с Visual Studio (с версии 1.5 до 2010).

Я видел это только с ассемблерами. Например, MASM32 на самом деле предупреждает людей о том, что он может запускать антивирусные сканеры, так как EXE очень маленькие (и / или некоторые вирусы пишутся в сборке). Мой сканер McAfee помечал некоторые примеры программ как вирусы.

Это должно происходить только для сканеров вирусов, которые имеют режим анализа "выглядит подозрительно".

Плюс к тому, что сказали другие, современные антивирусные программы повышают уровень защиты от вирусов, если ваши программы тоже используют некоторые "подозрительные" API (например, URLdownloadFile или другие связанные с перехватами API). если вы воспользуетесь Google "delphi RAT FUD API", вы найдете много интересных тем.

В некоторых приложениях, если я использую RtlVclOptimize.pas, антивирус Avira сообщает, что я создал вирус.

Некоторые антивирусные программы даже отмечают пакетный файл как вирус и не могут быть уверены, что это не так. Весьма раздражает, если этот файл является частью сторонней библиотеки, и предупреждение о вирусе срабатывает каждый раз, когда TortoiseSVN проверяет его. В итоге я отключил антивирусный сканер, удалил файл и сделал коммит. (Не отключив сканер, я бы даже не смог этого сделать:-()

Если у вас есть проблемы с ложными срабатываниями, есть онлайн-сервис VirusTotal, который может помочь вам проверить ваш файл по количеству антивирусных ядер.
Это бесплатный сервис, и в настоящее время он может выполнять антивирусную проверку почти с 40 антивирусными ядрами.

Я бы не назвал это "ложным срабатыванием", потому что, строго говоря, оно не является ложным и антивирусное программное обеспечение ни в чем не "виновно".

Я на 99% уверен, что это эвристический анализ, действующий (держу пари, он обнаруживает ваш исполняемый файл как нечто вроде win32.virus.generic - обратите внимание на универсальный, это признак того, что это не в его сигнатуре db, а скорее был обнаружен эвристикой) и, будучи эвристическим и все такое, он не дает вам никакой гарантии, что все, что он обнаружит, является вредоносным, он просто как бы сообщает вам, что исполняемый файл вызывает подозрения у его точка зрения.

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

Вообще, я нашел кодирование в Windows с антивирусным программным обеспечением несколько раздражающим (не делайте этого в настоящее время, но все же), особенно если указанное программное обеспечение находится в "параноидальном режиме". Раздражает, как это, однако, это неизбежно (IMO).

Пару лет назад, каждый раз, когда мы обновляли GNU Linker из источников mingw и начинали распространять его с нашим компилятором, мы получали сообщения о том, что virusscanners классифицировали ld.exe как вирус. (.exes писать.exes ...)

Я помню еще один странный:

Файл был помечен как подозреваемый. Единственное, что файл был.OBJ!.EXE, содержащий код.OBJ, не считался проблемой.

VS Platform toolset 2010 отображает мою простую программу как вирус. Изменение набора инструментов на VS 2013 решает эту проблему.

Он просто создает запрос HttpWebRequest и записывает результат в файл.

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

У многих честных разработчиков возникают проблемы из-за неосторожного антивирусного программного обеспечения. См. Также: Как предотвратить ложное срабатывание вирусов на моем программном обеспечении?

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

Другие вопросы по тегам