我的可执行文件被杀毒软件误报了

41

我遇到了一个烦人的问题。突然之间,Avira AntiVir 开始将我的软件中的一个可执行文件标记为病毒。

由于几乎所有用户的默认操作是点击“确定”,而 Avira 建议将这个病毒 放入隔离区域,所以我的大多数用户都会删除这个可执行文件。

好吧,让我们不要傲慢自大,检查一下我是否真的被感染了。我把文件上传到http://www.virustotal.com,从所有杀毒软件中只有 Avira 将其标记为受感染。此外,我用两种不同的杀毒软件扫描了我的电脑,它是干净的。

我已经向我的用户发送了一封邮件解释发生了什么,但这对我的技术支持来说是一种负担,我真的不想做这个。

好的,问题是:有没有办法避免这种行为?除了签署文件(我不确定这是否有效),我想不到其他任何办法,让我们看看你是否有创造性的想法。


2
AVG也是一款弱防病毒软件,会报告很多误报。我曾经在我的(干净的)程序中看到过这种情况。 - Gabriel
我的应用在Virustotal上没有检测到任何问题,但是Windows Defender将其标记为“Trojan”,非常令人沮丧! - delphirules
1
也许对那些杀毒软件生产商提起集体诉讼会有所帮助:https://docs.google.com/forms/d/1H3_O1z1iEqfh9ZT9u3B0R1tGEj-Hc9o7rAE0LKPr33Y - Gabriel
6个回答

27

24

Andreas的回答很好,这种情况在Delphi应用程序中经常发生。

签名代码并没有任何区别——我曾经遇到过NOD32对签名Delphi代码的误报情况。

如果有任何技术可以避免误报,病毒作者会利用它们来避免被检测。

我发现最好的做法是,不幸的是,是一种被动而非主动的方式。所有杀毒软件都有举报误报的功能,我发现他们对此类报告非常积极响应。


2
确实。Avira不到12小时就确认了误报。 - Ricardo Acras
别忘了填写这个调查问卷:https://docs.google.com/forms/d/1H3_O1z1iEqfh9ZT9u3B0R1tGEj-Hc9o7rAE0LKPr33Y/edit#responses - Gabriel

4
许多诚实的开发者因为粗心的杀毒软件而遇到问题。 也可以参考:如何防止我的软件误报病毒? 想象一下,每次出现误报,您就失去了一个潜在客户。程序员应该采取行动反对这些杀毒产品,并迫使它们对误报警报更加小心,甚至为了我们因此失去的销售收回一些收入。
更新:
最近我观察到:
  • 当以“发布模式”(使用编译器优化)编译程序时,VirusTotal.com 上的误报数量要高得多,而在“调试模式”下编译则要少得多。
  • 使用 EurekaLog 时,检测率飙升。
所以,在发布程序之前,请先提交到 VirusTotal!

更新2019年:
不幸的是,InnoSetup也未能幸免。我使用InnoSetup创建了一个虚拟安装程序,并将其上传到VirusTotal。52个程序中有5个报告了误报!更新:现在误报数量已经扩大到9个!


我点击了重新扫描,现在已经到18了! - xioxox

3
作为解决方案,您可能需要:
1- 确认您的Delphi编译器没有感染病毒 2- 确认您的源代码和库未被篡改(这是Induc 病毒的典型手法) 3- 使用杀毒软件检查您保证干净的exe文件。如果它们报告了误报,请联系他们以便修复测试。 4- 如果您需要在修复杀毒软件之前分发文件,请签名您的exe文件,以便用户可以验证其是否干净。

1
数字签名是一个不错的选择,也可以防止误报检测,但大多数像我这样的开发人员无法负担每年200到500美元的费用。有时软件是免费的,有时它们没有产生足够的收入来支付每年200美元的费用。 - Muhammad Saqib
2
大多数情况下,签署应用程序并没有什么区别。它只是告诉 Windows 您的应用程序来自可信赖的来源。这就是全部。防病毒软件往往会忽略这一点,因为有很多病毒也可能已经被签名了。 - Jerry Dodge

3
有几个原因可能导致反病毒产品在Delphi生成的exe上触发,其中一些常见原因包括:
  • 许多病毒都是用Delphi编写的,因此您的exe可能具有与现有病毒相同的代码部分。
  • 程序的导入表用于确定您的exe可能执行的操作,例如链接到凭据管理或磁盘管理功能会触发某些AV。
建议使用在线服务(如VirustotalJotti)扫描您的发布版本,并始终向供应商报告误报,而不是试图防止误报。我的经验是,AV供应商对提交假阳性反应非常迅速。

“AV厂商对提交的反应非常迅速”---大多数厂商报告称,更改将在审核您的案例后72小时内出现。因此,这就像在您提交案例后超过100个小时。但Sophos尤其糟糕。缓慢而无用。 - Gabriel

3
在Free Pascal/Lazarus群组和错误跟踪器中,这样的消息几乎每个版本和/或月份都会出现。
我们通常建议用户忽略所有“通用”或“启发式”扫描类型,并坚持基于签名的扫描(因为大多数公司病毒扫描程序都这样做)。
这是因为几乎总是启发式警报,从未具体针对恶意软件。这可以从检测到的“病毒/木马”几乎总是“通用”类型来轻松看出。通常,病毒扫描程序也是典型的“家庭”病毒扫描程序,或者是一般病毒扫描程序的家庭版(Norton曾经特别糟糕,现在它大多是规模较小的“廉价”家用扫描程序)
然而,我们主要与开发人员交流,已经很难向他们传达这个信息。我可以想象,当分发给毫无头绪的最终用户时,这将是一个真正困难的信息。
尽管如此,没有其他办法。

我在这篇文章中收到了一些评论,指责我对“家用”扫描仪进行了攻击。我并不是那个意思,因为我认为 McAfee 和 Norton 的企业版和家庭版扫描仪本质上是相同的代码库。重点在于默认设置不同。企业版通常会关闭不确定的启发式算法。 - Marco van de Voort
家庭用户更容易受到新病毒的攻击,因为他们比IT部门更不小心,因此在家庭设置中默认进行尽可能多的检查是合理的。 - Ian Ringrose
家庭用户可以关闭误报的杀毒软件,这是一个更大的风险。但现实情况是,家用杀毒软件是为了“恐吓”价值而购买的。家庭用户认为,每天不反应的病毒是毫无价值的。 - Marco van de Voort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接