编码员征服安全基础设施即代码系列。残缺的安全功能

2020年5月4日发布
作者:马蒂亚斯-马杜,博士
案例研究

编码员征服安全基础设施即代码系列。残缺的安全功能

2020年5月4日发布
作者:马蒂亚斯-马杜,博士
查看资源
查看资源

如今,对网络安全的威胁是无处不在和无情的。随着我们生活的更多方面被数字化,网络犯罪分子的赌注就越大--有太多的代码需要保持安全,而私人数据又太宝贵。而且,在程序部署后,试图跟上并防御攻击面的每一个方面,已经变得几乎不可能。

有一些方法可以缓解其中的一些症状,当精明的组织接受基础设施即代码(IaC)的概念时,其中一种方法就很明显了。当然,与任何开发一样,也有一些安全隐患需要克服。而且,由于开发人员正在开发产生重要基础设施的代码,以托管应用程序,因此安全意识在这个过程的每个阶段都是至关重要的。

那么,一个刚进入云服务器环境的开发者究竟该如何提高技能,学习绳索,并以更高的安全意识接近构建?我们创建了下一个Coders Conquer Security系列,以解决常见的IaC漏洞,接下来的几篇博客将重点介绍你--开发者--可以采取的步骤,开始在你自己的组织中部署安全的基础设施即代码。

让我们开始吧。

美国旧西部有一则寓言,说的是一个人偏执地认为土匪会袭击和抢劫他的家园。为了补偿,他投资了各种安全设施,如安装一个特别坚固的前门,用木板封住所有的窗户,并在方便的地方放了很多枪。有一天晚上,他在睡觉时还是被抢劫了,因为他忘了锁侧门。匪徒们只是发现了残缺的安全设施,并迅速利用了这一情况。

在你的基础设施中禁用安全功能就很像这样。即使你的网络有一个强大的安全基础设施,如果元素被禁用,它也没有什么好处。

在我们深入讨论之前,让我提出一个挑战。

访问上面的链接,你会被带到我们的游戏化培训平台,在那里你可以尝试打败一个被禁用的安全功能漏洞。(注意。它将在Kubernetes中打开,但使用下拉菜单,你可以从Docker、CloudFormation、Terraform和Ansible中选择)。)

你做得怎么样?如果你仍有一些工作要做,请继续阅读。

安全功能可以由于各种原因被禁用。对于一些应用程序和框架,它们可能被默认禁用,必须首先打开才能开始运行。也有可能是管理员禁用了特定的安全功能,以便更容易地执行某些任务而不被不断挑战或阻止,(例如,使AWS S3桶公开)。在他们的工作完成后,他们可能会忘记重新激活这些禁用的功能。他们也可能倾向于让它们处于关闭状态,以使他们将来的工作更容易。

为什么禁用的安全功能如此危险

有一个或多个禁用的安全功能是不好的,原因有几个。其一,安全功能被投入到基础设施资源中,以保护其免受已知的攻击、威胁或漏洞。如果它被禁用,那么它将无法保护你的资源。

攻击者总是试图首先找到容易利用的漏洞,甚至可能使用脚本来运行常见的弱点。这与小偷检查一条街上的所有汽车,看是否有车门没有上锁并不一样,这比砸窗容易得多。黑客可能会惊讶地发现,一个常见的安全防御是不活跃的。但当这种情况发生时,他们不会花很长时间来利用它。

其次,拥有良好的安全设施,然后禁用,会产生一种虚假的安全感。如果管理员不知道有人禁用了这些防御措施,他们可能会认为自己受到了保护,免受普通威胁。

作为一个攻击者如何利用被禁用的安全功能的例子,请考虑AWS S3的阻止公共访问的安全功能。通过Amazon S3阻止公共访问,账户管理员和桶主可以很容易地设置集中控制,以限制公众对其Amazon S3资源的访问。然而,一些管理员在访问S3桶时遇到问题,为了尽快完成任务,决定将其公开。如果他们忘记启用该安全功能,攻击者就可以完全访问存储在该S3桶中的信息,不仅造成信息泄露,而且由于数据传输费用而产生额外费用。

让我们比较一些真实世界的代码;看看这些CloudFormation的片段。

脆弱的。

CorporateBucket:
Type:AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: false
IgnorePublicAcls: false
RestrictPublicBuckets: false
VersioningConfiguration:
Status:已启用
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm:"AES256"

安全。

CorporateBucket:
Type:AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
VersioningConfiguration:
Status:Enabled
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm:"AES256"

防止禁用安全功能

阻止被禁用的安全功能对你的组织造成负面影响,既是一个政策问题,也是一个实践问题。应该有一个坚定的政策,规定只有在非常特殊的情况下才可以禁用安全功能。应该记录那些必须暂时禁用功能以解决问题或更新应用程序的事件。在所需的工作完成后,应检查这些功能,以确保它们已被完全重新激活。

如果为了简化操作而必须永久禁用某项安全功能,就应该为受影响的数据提供其他保护措施,以确保黑客在没有默认保护的情况下无法访问这些数据。如果一个需要的保护功能被禁用,那么攻击者找到那扇未锁的门并利用这种情况只是时间问题。

了解更多,挑战自己。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。

准备好找到并修复这个漏洞了吗?是时候在Secure Code Warrior 平台上尝试IaC游戏化安全挑战,以保持你所有的网络安全技能得到磨练和更新。

这是一个每周一次的系列报道,涵盖了我们最重要的八个基础设施即代码的漏洞;请在下周查看更多内容。

查看资源
查看资源

作者

马蒂亚斯-马杜博士

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

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

想要更多吗?

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

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

查看博客
想要更多吗?

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

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

资源中心

编码员征服安全基础设施即代码系列。残缺的安全功能

2020年5月4日发布
作者:马蒂亚斯-马杜,博士

如今,对网络安全的威胁是无处不在和无情的。随着我们生活的更多方面被数字化,网络犯罪分子的赌注就越大--有太多的代码需要保持安全,而私人数据又太宝贵。而且,在程序部署后,试图跟上并防御攻击面的每一个方面,已经变得几乎不可能。

有一些方法可以缓解其中的一些症状,当精明的组织接受基础设施即代码(IaC)的概念时,其中一种方法就很明显了。当然,与任何开发一样,也有一些安全隐患需要克服。而且,由于开发人员正在开发产生重要基础设施的代码,以托管应用程序,因此安全意识在这个过程的每个阶段都是至关重要的。

那么,一个刚进入云服务器环境的开发者究竟该如何提高技能,学习绳索,并以更高的安全意识接近构建?我们创建了下一个Coders Conquer Security系列,以解决常见的IaC漏洞,接下来的几篇博客将重点介绍你--开发者--可以采取的步骤,开始在你自己的组织中部署安全的基础设施即代码。

让我们开始吧。

美国旧西部有一则寓言,说的是一个人偏执地认为土匪会袭击和抢劫他的家园。为了补偿,他投资了各种安全设施,如安装一个特别坚固的前门,用木板封住所有的窗户,并在方便的地方放了很多枪。有一天晚上,他在睡觉时还是被抢劫了,因为他忘了锁侧门。匪徒们只是发现了残缺的安全设施,并迅速利用了这一情况。

在你的基础设施中禁用安全功能就很像这样。即使你的网络有一个强大的安全基础设施,如果元素被禁用,它也没有什么好处。

在我们深入讨论之前,让我提出一个挑战。

访问上面的链接,你会被带到我们的游戏化培训平台,在那里你可以尝试打败一个被禁用的安全功能漏洞。(注意。它将在Kubernetes中打开,但使用下拉菜单,你可以从Docker、CloudFormation、Terraform和Ansible中选择)。)

你做得怎么样?如果你仍有一些工作要做,请继续阅读。

安全功能可以由于各种原因被禁用。对于一些应用程序和框架,它们可能被默认禁用,必须首先打开才能开始运行。也有可能是管理员禁用了特定的安全功能,以便更容易地执行某些任务而不被不断挑战或阻止,(例如,使AWS S3桶公开)。在他们的工作完成后,他们可能会忘记重新激活这些禁用的功能。他们也可能倾向于让它们处于关闭状态,以使他们将来的工作更容易。

为什么禁用的安全功能如此危险

有一个或多个禁用的安全功能是不好的,原因有几个。其一,安全功能被投入到基础设施资源中,以保护其免受已知的攻击、威胁或漏洞。如果它被禁用,那么它将无法保护你的资源。

攻击者总是试图首先找到容易利用的漏洞,甚至可能使用脚本来运行常见的弱点。这与小偷检查一条街上的所有汽车,看是否有车门没有上锁并不一样,这比砸窗容易得多。黑客可能会惊讶地发现,一个常见的安全防御是不活跃的。但当这种情况发生时,他们不会花很长时间来利用它。

其次,拥有良好的安全设施,然后禁用,会产生一种虚假的安全感。如果管理员不知道有人禁用了这些防御措施,他们可能会认为自己受到了保护,免受普通威胁。

作为一个攻击者如何利用被禁用的安全功能的例子,请考虑AWS S3的阻止公共访问的安全功能。通过Amazon S3阻止公共访问,账户管理员和桶主可以很容易地设置集中控制,以限制公众对其Amazon S3资源的访问。然而,一些管理员在访问S3桶时遇到问题,为了尽快完成任务,决定将其公开。如果他们忘记启用该安全功能,攻击者就可以完全访问存储在该S3桶中的信息,不仅造成信息泄露,而且由于数据传输费用而产生额外费用。

让我们比较一些真实世界的代码;看看这些CloudFormation的片段。

脆弱的。

CorporateBucket:
Type:AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: false
IgnorePublicAcls: false
RestrictPublicBuckets: false
VersioningConfiguration:
Status:已启用
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm:"AES256"

安全。

CorporateBucket:
Type:AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
VersioningConfiguration:
Status:Enabled
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm:"AES256"

防止禁用安全功能

阻止被禁用的安全功能对你的组织造成负面影响,既是一个政策问题,也是一个实践问题。应该有一个坚定的政策,规定只有在非常特殊的情况下才可以禁用安全功能。应该记录那些必须暂时禁用功能以解决问题或更新应用程序的事件。在所需的工作完成后,应检查这些功能,以确保它们已被完全重新激活。

如果为了简化操作而必须永久禁用某项安全功能,就应该为受影响的数据提供其他保护措施,以确保黑客在没有默认保护的情况下无法访问这些数据。如果一个需要的保护功能被禁用,那么攻击者找到那扇未锁的门并利用这种情况只是时间问题。

了解更多,挑战自己。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。

准备好找到并修复这个漏洞了吗?是时候在Secure Code Warrior 平台上尝试IaC游戏化安全挑战,以保持你所有的网络安全技能得到磨练和更新。

这是一个每周一次的系列报道,涵盖了我们最重要的八个基础设施即代码的漏洞;请在下周查看更多内容。

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

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