指南
使用存在已知漏洞的组件
大多数应用程序都会使用大量的第三方组件。这些组件涵盖了从日志记录、模板引擎到数据库访问等方方面面的功能。
这极大地简化了软件开发流程,节省了大量时间。然而,这些组件同样由人工编写,难免会包含漏洞。这意味着您可能会在不知情的情况下暴露在可被利用的漏洞风险之中。
保持组件更新
通常情况下,强烈建议定期更新框架、库及其他组件。可以通过以下几种方式实现:
- 许多源代码管理软件可以分析您的代码仓库,并在发现依赖项存在漏洞时向您发出警报
- 许多包管理器可以分析您的应用程序,并识别出其中存在的任何易受攻击的依赖项
- 市面上有许多软件成分分析 (SCA) 解决方案,可以识别出任何存在漏洞的依赖项
降低技术债务风险
升级库时一个相当棘手的问题是,它们可能会引入破坏代码的变更。虽然这些变更通常会有文档说明,但也可能存在未记录的变更,直到代码在生产环境中运行时才会显现出来。
如果您的应用程序版本落后于最新版本太多,升级到最新版可能需要耗费大量工作。当出现紧急漏洞时,保持第三方组件相对较新的版本至关重要,这样可以避免因升级耗时过长而陷入困境。
此外,不建议在未阅读发行说明的情况下盲目升级软件包,因为其中可能包含关于变更的重要信息,这些变更虽然不明显,但可能会改变应用程序的运行方式。
更新反而会降低安全性吗?
虽然这种情况并不常见,但确实存在以下实例:
- 旧版本中不存在该漏洞
- 在修复漏洞时引入了新的漏洞
这些案例可能会让人认为定期更新软件包并非明智之举。当然,应尽可能避免这种想法,因为它会导致技术债务的累积。
鉴于这种情况相对罕见,频繁更新软件包带来的好处远大于引入新漏洞的可能性。而且,如果您保持定期更新,这类问题通常也能轻松缓解。
这种想法还假设供应商不会在不披露的情况下静默修复漏洞,而遗憾的是,这种情况仍然非常普遍。
著名案例
以下列出了一些您近期可能听说过的著名案例。您可以从中了解检查库并确保保持更新的重要性和必要性。
标语
实用安全编码
探索安全编码指南,了解并缓解 OWASP Top 10 等软件漏洞,并通过引导式训练任务在真实的应用程序模拟中进行实践。