准则

使用存在已知漏洞的组件

大多数应用程序都会使用大量第三方组件。这些组件提供了日志、模板、数据库访问等一切功能。 

然而,这些组件也是由人制作的,其中一些不可避免地会包含漏洞。这意味着你可能会在不知情的情况下暴露在可能被利用的漏洞中。

不断更新组件

一般来说,强烈建议定期更新框架、库和其他组件。可以通过多种方式做到这一点:

  • 很多源码控制软件都能分析软件源,并在发现依赖关系中存在漏洞时发出警报
  • 许多软件包管理器可以分析应用程序,并识别可能存在的任何易受攻击的依赖关系
  • 有许多软件构成分析(SCA)解决方案可以识别任何易受攻击的依赖关系 

降低技术债务风险

升级程序库有一个相当隐蔽的问题,那就是它们可能会有破坏代码的改动。虽然这些改动通常都有文档记录,但也可能存在未记录的改动,而这些改动可能要等到代码在生产环境中运行时才会出现。 

如果您的应用程序运行的版本比最新版本落后很多,升级到最新版本可能需要大量工作。如果出现了时效性很强的漏洞,那么第三方组件必须是相对最新的,以避免出现升级需要花费数天时间的情况。 

此外,也不建议在没有阅读发行说明的情况下盲目升级软件包,因为发行说明中可能包含一些重要的变更信息,这些变更并不明显,但可能会改变应用程序的运行方式。 

更新会让你更没有安全感吗?

虽然这种情况并不常见,但也有可能出现漏洞:

  • 不存在于旧版本中
  • 在修复漏洞时引入

这些情况可能会让人认为定期更新软件包并不可取。当然,应尽可能避免这种想法,因为它会导致技术债务的积累。 

鉴于这种情况相对罕见,经常更新软件包的好处远远大于出现新漏洞的可能性。 

它还假设供应商不会在不披露任何信息的情况下悄悄修复漏洞,但不幸的是,这种情况仍然非常普遍。 

著名案例

下面列举了几个您最近可能听说过的著名例子。您可以了解检查您的图书馆并确保与时俱进的重要性和原因。