
指南
使用存在已知漏洞的组件
大多数应用程序都使用大量第三方组件。这些组件提供各种功能,包括日志记录、模板处理、数据库访问等。
这使得软件开发变得简单得多,并能大幅节省时间,但这些组件同样由人创建,其中不可避免地存在某些漏洞。这意味着您可能在不知不觉中暴露于潜在的漏洞风险中,这些漏洞随时可能被恶意利用。
保持组件处于最新状态
作为一般经验法则,强烈建议定期将框架、库及其他组件保持在最新状态。实现方式多种多样。
- 许多源代码管理软件会分析代码库,并在发现依赖项存在漏洞时发出警告。
- 许多包管理器能够分析应用程序并识别存在漏洞的依赖项。
- 能够识别脆弱依赖关系的软件组合分析(SCA)解决方案不胜枚举。
技术债务风险的降低
库升级过程中一个棘手的问题在于,可能引入破坏代码的变更。虽然这些变更通常会得到文档记录,但仍存在未记录的修改,且这些修改有时要等到代码在生产环境中运行时才会显现。
当应用程序运行的版本早于最新版本时,升级至最新版本可能需要大量工作。若存在紧急漏洞被公开的情况,为避免升级耗时数日,保持第三方组件处于相对较新的状态至关重要。
此外,我们不建议在未阅读发布说明的情况下盲目升级软件包。因为发布说明中可能包含重要信息,这些信息虽不明显,但可能涉及改变应用程序功能的变更。
更新后是否可能进一步提高安全性?
虽然并不常见,但已报告过因该漏洞导致的以下案例:
- 旧版本中不存在
- 在修复漏洞时请介绍给我
在这种情况下,您可能会认为定期更新软件包并非明智之举。当然,这种想法会导致技术债务的累积,因此应尽可能避免。
考虑到这种情况相对罕见,频繁更新软件包的益处远大于新引入漏洞的风险。只要定期获取最新信息,这些漏洞终究都能轻松缓解。
此外,我们假设供应商不会主动披露漏洞,而是默默修复——遗憾的是,这种情况至今仍非常普遍。
值得关注的例子
下面列举几个最近可能听说过的值得关注的案例。通过这些案例,您将了解检查库并保持其最新状态的重要性及其原因。