Vulnerable and Outdated Components (自带缺陷和过时的组件)
在之前版本的名称中叫做: 使用具有已知漏洞的组件, 于 2017 TOP9 在 2021 年上升到了 TOP6
看名字就应该很容易明白里面的意义
比方说近期很火的 Log4j 2.X 版本漏洞
若是低于2.16版本很容易受到远程恶意代码的执行
至于 log4j 的个人愚见,也在之前的文章中写过
当然,除了代码里面的第三方组件,用户端和服务器使用的操作系统也尤为重要
如果一个应用有远程命令执行漏洞,而恰巧系统是特定的 Linux 内核(脏牛提权),那么就很容易发动服务器提权攻击
当然组件保持最新也不一定是安全的,这就要说到 TOP5 错误配置
简单来说,就是
安全的组件 + 错误的配置 = 不安全的组件
详细的可以看我上一篇文章
OWASP 说明了在以下情况时,是容易受到攻击
- 不注意使用组件的版本,和依赖组件的版本
- 使用易受攻击的,不受支持的,和已过期的操作系统, Web/应用程序服务器,数据库,应用程序,运行环境和库
- 不定期扫描漏洞和不注意使用组件的安全报告
- 开发软件人员不测试库的兼容性
- 错误的应用配置
如果想要预防也是很好理解的(个人理解)
- 在应用开发中,要注意使用第三方依赖的版本,比方说,在 Java 中可以通过 Maven 来进行版本管理.同样也可以删除不使用或者不常用的组件和依赖.
- 注意应用部署容器的版本,避免使用,比方说 Weblogic 某些特定版本会触发 反序列化漏洞,或者是文件上传漏洞.
- 注意使用应用和依赖的官网的公告或者是及时从安全SRC网站中及时获取安全情报
- 不从来源不明的地方下载并使用相关组件.尽可能的从官网或者包/依赖管理软件下载相关组件或者补丁
- 及时进行漏洞扫描,同样也要对应用和依赖进行及时更新,或者使用安全漏洞扫描软件进行检测.