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

2020年5月4日发布
作者:Matias Madou
仔细说来?

毋庸置疑,这是个很好的机会。悬浮在空中的各种元素的三层结构。他说:"我的意思是说,我可以在这里工作,但我不能在这里工作,因为我不能在这里工作,因为我不能在这里工作。在这里,我想说的是,我们要做的是,在我们的生活中,我们要做的是,在我们的生活中,我们要做的是,在我们的生活中,我们要做的是。在这里,我想说的是,我们的生命力是有限的。

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

有一些方法可以缓解其中的一些症状,当精明的组织接受基础设施即代码(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游戏化安全挑战,以保持你所有的网络安全技能得到磨练和更新。

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

查看资源

想要更多吗?

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

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

查看博客
想要更多吗?

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

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

资源中心

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

发表于2023年2月3日
作者:Matias Madou

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

有一些方法可以缓解其中的一些症状,当精明的组织接受基础设施即代码(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游戏化安全挑战,以保持你所有的网络安全技能得到磨练和更新。

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

输入你的详细资料以获取完整的报告。

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

Oopsie daisy