Bitdefender 误报事件

针对近期 Jan 0.4.4 版本在 2024 年 1 月 10 日于 Windows 平台触发 Bitdefender 报毒(Gen:Variant.Tedy.258323)的事件,我们希望提供一份全面的事后分析报告,并概述必要的后续行动。

事件概览

错误描述

在 Windows 上安装 Jan 0.4.4 会触发 Bitdefender 将其标记为感染 Gen:Variant.Tedy.258323 病毒,并导致自动隔离。

受影响的杀毒软件

  • McAfee / Microsoft Defender 未受影响
  • Bitdefender 持续报告此问题。

事件时间线

  • 1 月 10 日,新加坡时间凌晨 2:18: Hawke 报告在 Windows 电脑上安装 0.4.4 版本时出现恶意软件病毒错误。
  • 1 月 10 日,新加坡时间凌晨 2:21: @0xSage 在 Discord 中回应。
  • 1 月 10 日,新加坡时间凌晨 2:35: Hawke 确认多人在全新安装时遇到此错误。
  • 1 月 10 日,新加坡时间凌晨 2:41: 出于高度谨慎,@louis-jan 和 @dan-jan 回滚了 0.4.4 版本。
  • 事件进行中: 安排在第二天进行分类和调查。
  • 1 月 10 日,新加坡时间上午 11:36: @Hien 调查了所有 Nitro 版本并使用 Bitdefender 进行扫描。只有最新的两个版本(0.2.7、0.2.8)触发了警告。
  • 1 月 10 日,新加坡时间下午 12:44: @Hien 再次测试了 0.2.6 版本,并建议暂时使用 0.2.6。其余两个 Nitro 版本(0.2.7、0.2.8)将进行进一步调查。
  • 团队开始测试修复后的构建版本。
  • 1 月 10 日,新加坡时间下午 3:22: 诊断发现这很可能是一次误报。@Hien 仅通过尝试在 GitHub 托管的运行器上构建 Nitro Windows CPU 版本找到了解决方案,但尚未确定根本原因。
  • 1 月 10 日,新加坡时间下午 5:24: @Hien 正在测试两种场景,并仍在试图理解 Bitdefender 的工作原理。
  • 1 月 11 日,新加坡时间下午 5:46: 事后分析会议

调查更新

  • @Hien 调查了所有 Nitro 版本并使用 Bitdefender 进行扫描,发现只有最新的两个版本触发了 Bitdefender 的警告。未出现问题的最高版本 Nitro 0.2.6 经过再次测试,已不再触发 Bitdefender 的警告。
  • 我们观察到 Nitro 版本直到 0.2.6 都未受影响。然而,Bitdefender 将 0.2.7 和 0.2.8 版本标记为受感染,并导致其被删除。为了推进当前版本的发布,Hien 建议将 Nitro 降级到 0.2.6 版本并进行测试。同时,他将调查为何 Bitdefender 会标记 0.2.7 和 0.2.8 版本。
  • 需要强调的是,在 0.2.6、0.2.7 和 0.2.8 版本之间只做了一些微小改动,这些改动不应触发恶意代码警告。我们可以参考 0.2.7 和 0.2.8 之间的更新日志来确定这些改动。
  • 我们主要想传达的信息是,我们没有向 Jan 中引入恶意代码(这表明是一次误报),调查的目的是为了理解 Bitdefender 标记 0.2.7 和 0.2.8 版本的根本原因。
  • 目前的诊断看起来像是一次误报,但仍在调查中。参考链接:这里 (在新标签页中打开)这里 (在新标签页中打开),以及这里 (在新标签页中打开)
  • @Hien 正在测试两种场景,并仍在试图理解 Bitdefender 的工作原理。仍在调查中:问题出在代码还是 CI(持续集成)?
    • 在案例 1 中,我们对 0.2.6 和 0.2.8 标签使用相同的 CI 代理,在 Alan 和我提交 PR 后,Bitdefender 标记了 Nitro CPU 二进制文件的构建。通常会认为这是代码问题。
    • 然而,我继续进行了一个实验:对于 0.2.8 的代码,我没有使用我们的 CI 代理,而是使用了 GitHub 托管的代理。这一次,Bitdefender 没有标记我们的二进制文件构建。
  • 我们已确认 Bitdefender 的警告并非攻击。没有恶意代码。
  • 我们已将事件根源隔离到一个 CI 代理上,该代理导致了 Bitdefender 的误报警报。

跟进和行动项目

  1. 在受控环境中复现 Bitdefender 误报 [已完成]
  • 目标: 在受控环境中复现问题,以了解触发 Bitdefender 检测的具体原因和细节。
  1. 调查恶意代码或误报
  • 目标: 确定所报告的问题是由于实际的恶意代码还是误报。如果是误报,则在与 Bitdefender 沟通的同时努力解决问题。
  1. 供应链攻击评估
  • 目标: 评估供应链攻击的可能性。调查 Nitro 0.4.4 的分发在发布过程中是否被泄露或篡改。
  1. 热修复后的测试
  • 目标: 除了在修复后验证问题,还必须对相关领域进行全面测试,确保在不同操作系统和杀毒软件(仅限最新版本/免费版本)之间的兼容性。
  1. 未来发布的流程改进
  • 目标: 识别并实施发布流程的改进,以防止未来发生类似事件。这可能包括增强测试程序、代码分析,以及在预发布阶段与杀毒软件供应商合作。此外,我们应将验证最新的杀毒软件加入到发布清单中。
  1. 已测试杀毒软件版本的文档记录
  • 目标: 创建一份文档,概述所进行的测试,包括一个将 Jan 版本与已测试杀毒软件版本相关联的矩阵。
  • 示例列表: 仅供参考
    • Bitdefender
    • McAfee
    • Avira
    • Kaspersky
    • Norton
    • Microsoft Defender
    • AVG
    • TotalAV

后续步骤

  • 团队应对每个行动项目进行跟进,并明确负责人、优先级和截止日期。
  • 通过适当渠道向社区和客户透明地沟通进展。如有任何见解或建议,请在专用渠道内分享。
  • 根据此次事件的经验教训,更新内部文档和流程。

经验教训

  1. 杀毒软件兼容性意识
  • 观察: 该事件凸显了识别和测试杀毒软件兼容性的重要性,特别是对于像 Bitdefender 这样广泛使用的解决方案。
  • 经验教训: 未来,我们会将与各种杀毒软件的兼容性检查(包括杀毒和“恶意代码检测”)整合到我们的 CI 或 QA 清单中。这一主动措施旨在最大程度地减少发布和测试过程中的误报检测。
  1. 跨平台测试
  • 观察: 该问题并未在 MacOS 和 Linux 系统上出现,这表明我们的发布流程中可能存在跨平台测试的疏忽。
  • 经验教训: 澄清——这一观察与杀毒软件测试没有直接关系。相反,它强调了改进我们测试协议的必要性,需要涵盖多个操作系统。这确保了在不同平台上对潜在问题进行全面评估,同时考虑到 Mac 和 Linux 系统上不同的杀毒软件和架构差异。
  1. 用户沟通与文档记录
  • 观察: 由于 Nicole 在凌晨 2 点仍在 Discord 和 Github 上活跃并及时响应,这次快速反应帮助我们准确评估了影响。
  • 经验教训: 尽管在此次事件中我们与用户的沟通是有效的,但这主要归功于 Nicole 在事件发生时的在线。为了提高我们的整体响应能力,我们应优先考虑“24/7 快速分类和响应”。这包括确保持续在线或建立可靠的团队成员轮换制度,以便快速与用户沟通和记录问题,从而进一步提高我们的事件响应效率。
  1. 主动的事件响应
  • 观察: 尽管事件响应包括了及时的版本回滚,但由于发布时间在午夜,导致响应略有延迟。这一延迟推迟了调查的启动时间,直到下一个工作时段才开始。
  • 经验教训: 我们认识到快速事件响应的重要性,特别是在时间敏感的情况下。我们承认在非工作时间发布更新可能会影响我们行动的即时性。未来,我们将努力优化发布时间表,以减少延迟,并确保无论在何时都能迅速启动调查。这可能包括考虑替代的发布窗口或实施对关键事件的自动化响应,以确保更主动、及时的解决方案。
  1. 供应链安全措施
  • 观察: 尽管该事件引发了对潜在供应链攻击的考虑,但必须强调事实并非如此。尽管如此,该事件凸显了审查我们供应链安全措施的重要性。
  • 经验教训: 未来,我们应通过引入额外的验证步骤来加强供应链安全,以维护我们发布过程的完整性。与分发渠道合作对于加强安全检查和确保稳固的供应链至关重要。
  • 长期来看: 为了采取更全面、更主动的方法,我们应考虑探索检查 Jan 是否存在恶意代码的方案,并将杀毒软件扫描作为我们 CI/CD 流程的一部分。
  1. 关于误报的用户教育
  • 观察: 用户报告称,Bitdefender 自动“清除”了被标记的 Nitro 版本,而没有给用户任何操作的机会。
  • 经验教训: 教育用户关于误报的可能性,并指导他们如何将此类事件加入白名单或向他们的杀毒软件供应商报告(如果可能的话)。提供清晰的沟通,告知用户在此类情况下可以采取的步骤。

这些经验教训将作为我们改进流程的基础,确保未来建立更具弹性的发布和事件响应框架。持续改进是维护我们软件可靠性和安全性的关键。

感谢大家为迅速解决此事所付出的努力与合作。

App screenshots

新机器的灵魂

要了解 Jan 的所有最新研究,请订阅《新机器的灵魂》