编码员征服安全基础设施即代码系列。安全错误配置--不当的权限

发表于2020年6月8日
作者:马蒂亚斯-马杜,博士
案例研究

编码员征服安全基础设施即代码系列。安全错误配置--不当的权限

发表于2020年6月8日
作者:马蒂亚斯-马杜,博士
查看资源
查看资源

如今,网络安全的威胁无处不在,而且无情。情况已经变得如此糟糕,以至于在程序部署后试图跟上它们的步伐已经变得几乎不可能。相反,精明的组织正在接受 "基础设施即代码 "的概念,即开发人员在创建安全应用程序的同时为其做出贡献。这个系列的内容是让你做好安全准备,这样你就可以了解你作为一个开发人员可以采取的步骤,开始在你自己的组织中部署安全的基础设施即代码。

安全错误配置,特别是那些不恰当的权限种类,最常发生在开发者为了完成一项任务而创建一个新的用户或授予一个应用程序作为工具的权限。例如,这可能是为了从一个数据库中收集信息。但是,如果新用户的权限设置得太高,或者没有为手头的任务进行默认配置,就会在代码中引入严重的漏洞。

在我们开始讨论之前,为什么不现在就测试一下你的技能呢?试着找到并修复一些不当的权限漏洞。

你的表现如何?让我们再深入挖掘一下。

给予一个用户或应用程序完整的权限,或者干脆从不费心去定义新用户应该能够完成什么,哪些行为受到限制,这当然是让新代码到位的最快方式。如果一切顺利的话,应用程序将利用这些权限来完成其指定的任务。危险的是,黑客会发现这个过程,然后危害到这个用户。即使该用户是为了完成特定应用程序的特定功能而创建的,但如果被破坏,它可以让攻击者危及其他应用程序、数据甚至是网络。

安全错误配置是如何被利用的?

为了直观地了解这种危险,让我们看看一个普通的任务有时是如何在Docker云环境中编码的。比方说,一个开发者正在使用Prometheus MySQL Exporter服务从数据库中收集信息。允许这种情况发生的最简单方法是授予导出器访问数据库的权限。因此,代码可能是这样的。

FROM mysql:new
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%。

这当然会使出口者能够完成其任务。然而,由于权限没有被定义,出口者实际上有能力做几乎任何事情。显然,出口商本身绝不会在其编程的行为之外采取行动。但是,如果一个攻击者能够破坏出口器服务,会发生什么?在这种情况下,由于它被赋予了完全的权限,攻击者可以对SQL服务执行各种未经授权的任务。

确保和消除不正当的权限

在这里,我们再次转向基础设施即代码的概念。如果你在创建应用程序时就将安全写入其中,那么当涉及到网络安全时,网络总是会处于一个更好的整体基础上。

在上面的Docker例子中,如果开发者希望Prometheus MySQL Exporter能够查询数据库,他们可以通过定义它应该被允许完成的任务来使之更安全地发生。这方面的一个好例子是。


FROM mysql:new
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;

在这种情况下,为Prometheus MySQL Exporter服务配置的MySQL用户对MySQL服务只有有限的权限。具体来说,只允许PROCESS和REPLIATION CLIENT权限。这将防止恶意的用户利用被破坏的Prometheus MySQL导出器服务。

在代码层面上限制权限可以确保用户和应用程序只拥有足够的权限来完成手头的工作。这对确保你的网络安全和接受基础设施即代码的概念有很大帮助。

Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试我们的 Secure Code Warrior 培训平台的展示,以保持你所有的网络安全技能的磨练和最新的。

查看资源
查看资源

作者

马蒂亚斯-马杜博士

马蒂亚斯是一名研究员和开发人员,拥有超过15年的软件安全实践经验。他曾为Fortify Software和他自己的公司Sensei Security等公司开发解决方案。在他的职业生涯中,马蒂亚斯领导了多个应用安全研究项目,并将其转化为商业产品,他拥有超过10项专利。当他离开办公桌时,Matias曾担任高级应用安全培训courses ,并定期在全球会议上发言,包括RSA会议、黑帽、DefCon、BSIMM、OWASP AppSec和BruCon。

马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全基础设施即代码系列。安全错误配置--不当的权限

发表于2020年6月8日
作者:马蒂亚斯-马杜,博士

如今,网络安全的威胁无处不在,而且无情。情况已经变得如此糟糕,以至于在程序部署后试图跟上它们的步伐已经变得几乎不可能。相反,精明的组织正在接受 "基础设施即代码 "的概念,即开发人员在创建安全应用程序的同时为其做出贡献。这个系列的内容是让你做好安全准备,这样你就可以了解你作为一个开发人员可以采取的步骤,开始在你自己的组织中部署安全的基础设施即代码。

安全错误配置,特别是那些不恰当的权限种类,最常发生在开发者为了完成一项任务而创建一个新的用户或授予一个应用程序作为工具的权限。例如,这可能是为了从一个数据库中收集信息。但是,如果新用户的权限设置得太高,或者没有为手头的任务进行默认配置,就会在代码中引入严重的漏洞。

在我们开始讨论之前,为什么不现在就测试一下你的技能呢?试着找到并修复一些不当的权限漏洞。

你的表现如何?让我们再深入挖掘一下。

给予一个用户或应用程序完整的权限,或者干脆从不费心去定义新用户应该能够完成什么,哪些行为受到限制,这当然是让新代码到位的最快方式。如果一切顺利的话,应用程序将利用这些权限来完成其指定的任务。危险的是,黑客会发现这个过程,然后危害到这个用户。即使该用户是为了完成特定应用程序的特定功能而创建的,但如果被破坏,它可以让攻击者危及其他应用程序、数据甚至是网络。

安全错误配置是如何被利用的?

为了直观地了解这种危险,让我们看看一个普通的任务有时是如何在Docker云环境中编码的。比方说,一个开发者正在使用Prometheus MySQL Exporter服务从数据库中收集信息。允许这种情况发生的最简单方法是授予导出器访问数据库的权限。因此,代码可能是这样的。

FROM mysql:new
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%。

这当然会使出口者能够完成其任务。然而,由于权限没有被定义,出口者实际上有能力做几乎任何事情。显然,出口商本身绝不会在其编程的行为之外采取行动。但是,如果一个攻击者能够破坏出口器服务,会发生什么?在这种情况下,由于它被赋予了完全的权限,攻击者可以对SQL服务执行各种未经授权的任务。

确保和消除不正当的权限

在这里,我们再次转向基础设施即代码的概念。如果你在创建应用程序时就将安全写入其中,那么当涉及到网络安全时,网络总是会处于一个更好的整体基础上。

在上面的Docker例子中,如果开发者希望Prometheus MySQL Exporter能够查询数据库,他们可以通过定义它应该被允许完成的任务来使之更安全地发生。这方面的一个好例子是。


FROM mysql:new
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;

在这种情况下,为Prometheus MySQL Exporter服务配置的MySQL用户对MySQL服务只有有限的权限。具体来说,只允许PROCESS和REPLIATION CLIENT权限。这将防止恶意的用户利用被破坏的Prometheus MySQL导出器服务。

在代码层面上限制权限可以确保用户和应用程序只拥有足够的权限来完成手头的工作。这对确保你的网络安全和接受基础设施即代码的概念有很大帮助。

Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试我们的 Secure Code Warrior 培训平台的展示,以保持你所有的网络安全技能的磨练和最新的。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。