在安全领域,几乎每个人都知道OWASP(开源Web应用安全项目),该组织会定期发布Web应用Top 10安全风险列表,是了解最需要关注哪些攻击方式的一个重要资源。在OWASP网站上可以找到有关这些攻击的详细说明,以及有关如何防止这些攻击的建议。本文,我们将探讨OWASP Top10 风险中与容器相关的内容,并给出相关的缓解措施建议。
1、注入
如果代码中存在注入缺陷,攻击者就会利用这一缺陷来执行伪装成数据的命令。像DROP TABLE students;– 这样的命令可以形象地说明这个问题。
该风险对于容器来说并没有特别需要注意的内容,但通过容器镜像扫描,可以发现依赖项中存在的已知注入漏洞。
2、身份认证失效
此类风险涵盖了身份认证失效和凭据受损的情况。在应用层面,相关建议既适用于容器化应用,也适用于传统部署中的单体应用,但是还是有一些容器相关的特殊注意事项:
每个容器所需的凭据均应视为机密信息。这些机密信息需要谨慎储存,然后在运行时传递到容器中。
将一个应用分为多个容器化组件,意味着各个组件之间需要能够彼此识别、相互通信,这通常是使用凭据来实现的。容器间的彼此识别与通信可以由容器来实现,也可通过服务网格来辅助实现。
3、 敏感信息泄露
保护某个应用可以访问的任何个人信息、财务信息及其他敏感信息,这一点至关重要。无论是否进行了容器化,都应始终使用强大的加密算法对静态的敏感信息和传输中的敏感信息进行加密。随着处理能力的提高,较老的算法使用可能不再那么安全。
由于敏感数据是加密的,所以应用需要使用凭据才能访问。按照最小特权和职责分离的原则,只将凭据分配给真正需要访问容器的人。
此外,建议扫描容器镜像中的嵌入式密钥、密码和其他敏感数据。
4 、XML外部实体
关于这类易受攻击的XML处理器,没有容器特别需要注意的内容。与注入漏洞一样,建议通过镜像扫描来发现依赖项中是否存在已知漏洞。
5、 访问控制失效
此类风险包括由于对不必要的用户或组件授予特权而导致权限滥用。有一些方法,可以对容器应用最小权限:
1)不要以root用户身份运行容器。
2)限制授予每个容器的功能。
3)使用seccomp、AppArmor或SELinux。
4)尽量使用rootless容器。
这些方法可以限制攻击的影响范围。由于这些方法与应用层面的用户权限无关,因此,按照日常部署中的最佳实践建议操作即可。
6、 安全配置错误
许多攻击是利用了系统配置不当的问题。OWASP Top 10中重点介绍的示例包括配置不安全或不完整、开放式云存储以及包含敏感信息的详细错误消息。针对这些问题,有一些针对容器和云原生部署的缓解措施:
1)使用诸如CIS基准之类的准则来评估系统是否根据最佳实践进行了配置。还有针对Docker和Kubernetes以及底层Linux主机的基准。在实际环境中,不太可能遵循每条建议,但这却是评估容器配置一个很好的入手点。
2)如果使用公有云服务,则可以使用诸如CloudSploit或DivvyCloud之类的工具来检查容器的设置,并查找是否存在可公开访问的存储桶(bucket)或不当的密码策略。Gartner将这些检查称为“云安全态势管理(CSPM)”。
3)通过环境变量来传达机密信息很容易导致这些机密信息通过日志而被泄露,因此,建议只使用非敏感信息作为环境变量。
此外,可能还需要考虑容器镜像各个组成部分的配置信息。
7、 跨站脚本XSS
这是另一类应用层面的风险类别。对于此类风险,在容器中运行应用时,并没有什么特别的注意事项。但依然是建议通过容器镜像扫描来确认依赖项中是否存在漏洞。
8 、不安全的反序列化
在这种类型的攻击中,恶意用户会提供一个精心设计的对象,应用将其解析后,会向用户授予其他特权或以某种方式更改应用的行为。据称,花旗银行曾经存在一个漏洞,允许登录用户仅通过修改URL就可以访问其他人的帐户。
当然这种攻击也不是刻意针对容器的,但通常会有一些方法可以限制这种攻击对容器的影响:
1)隔离执行反序列化的代码,让这些代码在低特权环境中运行。
2)在专用容器微服务中执行反序列化可以实现隔离效果。
3)以非root用户身份运行容器,尽可能减少其功能并使用最低压缩包的seccomp/AppArmor/SELinux配置文件,从而限制这种攻击的特权利用情况。
4)限制反序列化的容器或服务器之间的网络流量。
9、使用含有已知漏洞的组件
对于此类风险,依然建议通过镜像扫描来识别容器镜像中存在的已知漏洞。还可以采用适当的流程或工具:
1)重建容器镜像,使用最新的修复过的软件包
2)若发现镜像有漏洞,找到并替换正在使用这些镜像来运行的容器
10、日志监控和不足
OWASP网站上公布了一个令人震惊的统计信息:平均而言,大约需要200天才会发现入侵。如果进行了细致的观察并对意外行为进行报警,则可以大大缩短发现入侵的时间。
在任何生产部署中,都应该记录容器事件,包括:
1)容器启停,包括镜像和调用用户的身份
2)获取机密信息的情况
3)对特权的任何修改
4)修改容器的有效负载,这可能表明代码已注入
5)入站和出站网络连接
6)文件卷挂载
7)打开网络连接、写入文件或更改用户权限等操作失败,这些操作可能表明攻击者在系统上进行侦察
很多商业容器安全工具都集成了企业级SIEM(安全信息和事件管理),以便通过一个中央系统来了解容器安全状态和警报。这些工具不仅可以观察容器安全事件,在事件发生后对其进行报告,还可以在发现异常行为,没有造成损害之前进行报告,并且可以通过运行时配置文件防止安全事件的发生。
11、总结
OWASP Top 10是一个可以提高任何联网应用的安全性,有效应对常见类型攻击的重要资源。对于这些攻击,本文提出的最重要的建议是扫描容器镜像,查看第三方依赖项中是否存在已知漏洞。尽管镜像扫描可能无法捕获某些漏洞(特别是应用代码自身存在的可利用缺陷),但在对容器化部署采用安全防护工具时,进行镜像扫描会给带来很大收益。
来源:freebuf.com 2021-05-24 12:17:57 by: 青藤云安全
请登录后发表评论
注册