SCW图标
英雄背景无分隔线
博客

程序员以代码的形式征服安全基础架构系列:缺少功能级别访问控制

马蒂亚斯-马杜博士
出版日期: 2020 年 5 月 11 日
最后更新于 2026年3月9日

现在是我们的 “基础设施即代码” 系列的下一期的时候了,这些博客将带领像您这样的开发人员在自己的组织中部署安全基础架构时提高到一个全新的安全意识水平。

哦,顺便说一句... 你对前一篇博客中的安全配置错误挑战的表现如何?如果你想立即解决缺失的功能级别访问控制漏洞,请前往该平台:

(上面的链接将带你进入Kubernetes挑战赛,但进入平台后,也可以使用下拉菜单从Ansible、CloudFormation、Terraform或Docker中进行选择。你的选择。)

当今部署的几乎每个应用程序都有某种访问控制机制,该机制可以检查用户是否有权执行所请求的功能。在创建应用程序时,它几乎是良好安全性和功能性的基石。实际上,所有 Web 应用程序都需要访问控制才能允许具有不同权限的用户使用该程序。

但是,当没有在基础架构级别执行相同的访问控制验证功能或配置错误时,可能会出现问题。如果基础设施级别的访问控制不完善,整个企业就会向黑客敞开大门,黑客可以利用该漏洞作为进行未经授权的窥探或全面攻击的门户。

实际上,利用缺失或配置错误的功能访问控制漏洞非常容易。攻击者甚至不需要过于熟练。他们只需要知道哪些命令在支持应用程序的框架内执行功能。如果他们这样做了,那只是反复试验的问题。他们可以持续提交不应允许的请求,一旦成功,目标网站、应用程序、服务器甚至整个网络都可能被暴露。

缺失的功能级别访问控制漏洞如何运作?

职能级别访问控制可以通过多种方式渗透到组织中。例如,功能级别的访问权限可以留给应用程序,而不由底层基础设施进行验证。或者,基础设施级别的访问控制可能配置不正确。在某些情况下,管理员假设未经授权的用户不知道如何获得只有更高级别的用户才能看到的基础架构资源,并使用很少起作用的 “隐蔽安全” 模型。

举一个通过隐蔽性实现安全的示例,以下 URL 可能容易受到攻击:

http://companywebsite.com/app/NormalUserHomepage

如果经过身份验证的用户使用一种名为 “强制 URL 浏览” 的技术,他们可能会尝试访问仅向管理员显示的页面。一个例子可能是:

http://companywebsite.com/app/AdminPages

如果不存在服务器端验证,他们将只显示管理页面(如果其名称与请求相符),然后就可以访问管理员在新页面上执行的任何其他功能。如果服务器向攻击者返回 “页面未找到” 错误,他们可以继续尝试,直到找出管理页面的名称。

对于攻击者来说,利用 缺少功能级别访问控制 是一个类似的过程。他们不是尝试浏览未经授权的页面,而是发送函数请求。例如,他们可能会尝试创建一个具有管理员权限的新用户。因此,根据框架的不同,他们的请求看起来像这样:

帖子/操作/创建用户名=hacker&pw=密码&角色=管理员

如果不存在功能级别的访问控制,则上面的示例将成功创建新的管理员帐户。一旦攻击者以新管理员身份重新登录,他们将拥有与该网络或服务器上的任何其他管理员相同的访问权限和权限。

修复缺少功能级别访问控制的问题

由于攻击者很容易利用缺失的功能级别访问控制漏洞,因此发现、修复和预防这些漏洞至关重要。值得庆幸的是,有了一些专业知识和基本的基础设施,这并不难 代码安全培训

主要的保护措施将来自于在基础架构级别实现基于角色的授权。永远不要相信应用程序可以处理该功能。即使他们这样做了,获得基础设施方面的授权也能确保不会遗漏任何东西。理想情况下,授权应来自一个集中位置(例如 AWS IAM、Azure IAM 等),该位置内置于组织的例程中并应用于每个新应用程序。这些授权过程可以来自框架本身,也可以来自任意数量的易于使用的外部模块。

最后,您的组织应采用最低权限的概念。默认情况下,所有操作和功能都应被拒绝,授权过程用于授予有效用户执行所需操作的权限。他们只应获得足够的权限来执行所需的功能,并且只能在需要的时间内有效。

缺少功能级别访问控制可能会造成灾难性的后果。但值得庆幸的是,通过在组织中建立良好的基础架构级授权实践,您可以轻松防止此问题发生。

认为你已经准备好在野外发现访问控制错误了吗?比较这些 Docker 代码片段;一个易受攻击,一个安全:


易受攻击:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户 root
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

安全:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户没人
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

了解更多,挑战自我

来看看安全代码勇士博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞和漏洞的破坏。

如果你之前错过了,你可以 试试 iaC 游戏化安全挑战 在 Secure Code Warrior 平台上,让您的所有网络安全技能不断磨练并保持最新状态。

敬请关注下一章!

查看资源
查看资源

如果基础设施级别的访问控制不完善,它就会向攻击者开放整个企业,攻击者可以利用该漏洞作为未经授权的窥探或全面攻击的门户。

对更多感兴趣?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
2020年5月11日发布

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

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

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

分享到:
领英品牌社交x 标志

现在是我们的 “基础设施即代码” 系列的下一期的时候了,这些博客将带领像您这样的开发人员在自己的组织中部署安全基础架构时提高到一个全新的安全意识水平。

哦,顺便说一句... 你对前一篇博客中的安全配置错误挑战的表现如何?如果你想立即解决缺失的功能级别访问控制漏洞,请前往该平台:

(上面的链接将带你进入Kubernetes挑战赛,但进入平台后,也可以使用下拉菜单从Ansible、CloudFormation、Terraform或Docker中进行选择。你的选择。)

当今部署的几乎每个应用程序都有某种访问控制机制,该机制可以检查用户是否有权执行所请求的功能。在创建应用程序时,它几乎是良好安全性和功能性的基石。实际上,所有 Web 应用程序都需要访问控制才能允许具有不同权限的用户使用该程序。

但是,当没有在基础架构级别执行相同的访问控制验证功能或配置错误时,可能会出现问题。如果基础设施级别的访问控制不完善,整个企业就会向黑客敞开大门,黑客可以利用该漏洞作为进行未经授权的窥探或全面攻击的门户。

实际上,利用缺失或配置错误的功能访问控制漏洞非常容易。攻击者甚至不需要过于熟练。他们只需要知道哪些命令在支持应用程序的框架内执行功能。如果他们这样做了,那只是反复试验的问题。他们可以持续提交不应允许的请求,一旦成功,目标网站、应用程序、服务器甚至整个网络都可能被暴露。

缺失的功能级别访问控制漏洞如何运作?

职能级别访问控制可以通过多种方式渗透到组织中。例如,功能级别的访问权限可以留给应用程序,而不由底层基础设施进行验证。或者,基础设施级别的访问控制可能配置不正确。在某些情况下,管理员假设未经授权的用户不知道如何获得只有更高级别的用户才能看到的基础架构资源,并使用很少起作用的 “隐蔽安全” 模型。

举一个通过隐蔽性实现安全的示例,以下 URL 可能容易受到攻击:

http://companywebsite.com/app/NormalUserHomepage

如果经过身份验证的用户使用一种名为 “强制 URL 浏览” 的技术,他们可能会尝试访问仅向管理员显示的页面。一个例子可能是:

http://companywebsite.com/app/AdminPages

如果不存在服务器端验证,他们将只显示管理页面(如果其名称与请求相符),然后就可以访问管理员在新页面上执行的任何其他功能。如果服务器向攻击者返回 “页面未找到” 错误,他们可以继续尝试,直到找出管理页面的名称。

对于攻击者来说,利用 缺少功能级别访问控制 是一个类似的过程。他们不是尝试浏览未经授权的页面,而是发送函数请求。例如,他们可能会尝试创建一个具有管理员权限的新用户。因此,根据框架的不同,他们的请求看起来像这样:

帖子/操作/创建用户名=hacker&pw=密码&角色=管理员

如果不存在功能级别的访问控制,则上面的示例将成功创建新的管理员帐户。一旦攻击者以新管理员身份重新登录,他们将拥有与该网络或服务器上的任何其他管理员相同的访问权限和权限。

修复缺少功能级别访问控制的问题

由于攻击者很容易利用缺失的功能级别访问控制漏洞,因此发现、修复和预防这些漏洞至关重要。值得庆幸的是,有了一些专业知识和基本的基础设施,这并不难 代码安全培训

主要的保护措施将来自于在基础架构级别实现基于角色的授权。永远不要相信应用程序可以处理该功能。即使他们这样做了,获得基础设施方面的授权也能确保不会遗漏任何东西。理想情况下,授权应来自一个集中位置(例如 AWS IAM、Azure IAM 等),该位置内置于组织的例程中并应用于每个新应用程序。这些授权过程可以来自框架本身,也可以来自任意数量的易于使用的外部模块。

最后,您的组织应采用最低权限的概念。默认情况下,所有操作和功能都应被拒绝,授权过程用于授予有效用户执行所需操作的权限。他们只应获得足够的权限来执行所需的功能,并且只能在需要的时间内有效。

缺少功能级别访问控制可能会造成灾难性的后果。但值得庆幸的是,通过在组织中建立良好的基础架构级授权实践,您可以轻松防止此问题发生。

认为你已经准备好在野外发现访问控制错误了吗?比较这些 Docker 代码片段;一个易受攻击,一个安全:


易受攻击:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户 root
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

安全:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户没人
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

了解更多,挑战自我

来看看安全代码勇士博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞和漏洞的破坏。

如果你之前错过了,你可以 试试 iaC 游戏化安全挑战 在 Secure Code Warrior 平台上,让您的所有网络安全技能不断磨练并保持最新状态。

敬请关注下一章!

查看资源
查看资源

填写下面的表格下载报告

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

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“分析”Cookie。完成后,可以随意再次禁用它们。

现在是我们的 “基础设施即代码” 系列的下一期的时候了,这些博客将带领像您这样的开发人员在自己的组织中部署安全基础架构时提高到一个全新的安全意识水平。

哦,顺便说一句... 你对前一篇博客中的安全配置错误挑战的表现如何?如果你想立即解决缺失的功能级别访问控制漏洞,请前往该平台:

(上面的链接将带你进入Kubernetes挑战赛,但进入平台后,也可以使用下拉菜单从Ansible、CloudFormation、Terraform或Docker中进行选择。你的选择。)

当今部署的几乎每个应用程序都有某种访问控制机制,该机制可以检查用户是否有权执行所请求的功能。在创建应用程序时,它几乎是良好安全性和功能性的基石。实际上,所有 Web 应用程序都需要访问控制才能允许具有不同权限的用户使用该程序。

但是,当没有在基础架构级别执行相同的访问控制验证功能或配置错误时,可能会出现问题。如果基础设施级别的访问控制不完善,整个企业就会向黑客敞开大门,黑客可以利用该漏洞作为进行未经授权的窥探或全面攻击的门户。

实际上,利用缺失或配置错误的功能访问控制漏洞非常容易。攻击者甚至不需要过于熟练。他们只需要知道哪些命令在支持应用程序的框架内执行功能。如果他们这样做了,那只是反复试验的问题。他们可以持续提交不应允许的请求,一旦成功,目标网站、应用程序、服务器甚至整个网络都可能被暴露。

缺失的功能级别访问控制漏洞如何运作?

职能级别访问控制可以通过多种方式渗透到组织中。例如,功能级别的访问权限可以留给应用程序,而不由底层基础设施进行验证。或者,基础设施级别的访问控制可能配置不正确。在某些情况下,管理员假设未经授权的用户不知道如何获得只有更高级别的用户才能看到的基础架构资源,并使用很少起作用的 “隐蔽安全” 模型。

举一个通过隐蔽性实现安全的示例,以下 URL 可能容易受到攻击:

http://companywebsite.com/app/NormalUserHomepage

如果经过身份验证的用户使用一种名为 “强制 URL 浏览” 的技术,他们可能会尝试访问仅向管理员显示的页面。一个例子可能是:

http://companywebsite.com/app/AdminPages

如果不存在服务器端验证,他们将只显示管理页面(如果其名称与请求相符),然后就可以访问管理员在新页面上执行的任何其他功能。如果服务器向攻击者返回 “页面未找到” 错误,他们可以继续尝试,直到找出管理页面的名称。

对于攻击者来说,利用 缺少功能级别访问控制 是一个类似的过程。他们不是尝试浏览未经授权的页面,而是发送函数请求。例如,他们可能会尝试创建一个具有管理员权限的新用户。因此,根据框架的不同,他们的请求看起来像这样:

帖子/操作/创建用户名=hacker&pw=密码&角色=管理员

如果不存在功能级别的访问控制,则上面的示例将成功创建新的管理员帐户。一旦攻击者以新管理员身份重新登录,他们将拥有与该网络或服务器上的任何其他管理员相同的访问权限和权限。

修复缺少功能级别访问控制的问题

由于攻击者很容易利用缺失的功能级别访问控制漏洞,因此发现、修复和预防这些漏洞至关重要。值得庆幸的是,有了一些专业知识和基本的基础设施,这并不难 代码安全培训

主要的保护措施将来自于在基础架构级别实现基于角色的授权。永远不要相信应用程序可以处理该功能。即使他们这样做了,获得基础设施方面的授权也能确保不会遗漏任何东西。理想情况下,授权应来自一个集中位置(例如 AWS IAM、Azure IAM 等),该位置内置于组织的例程中并应用于每个新应用程序。这些授权过程可以来自框架本身,也可以来自任意数量的易于使用的外部模块。

最后,您的组织应采用最低权限的概念。默认情况下,所有操作和功能都应被拒绝,授权过程用于授予有效用户执行所需操作的权限。他们只应获得足够的权限来执行所需的功能,并且只能在需要的时间内有效。

缺少功能级别访问控制可能会造成灾难性的后果。但值得庆幸的是,通过在组织中建立良好的基础架构级授权实践,您可以轻松防止此问题发生。

认为你已经准备好在野外发现访问控制错误了吗?比较这些 Docker 代码片段;一个易受攻击,一个安全:


易受攻击:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户 root
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

安全:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户没人
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

了解更多,挑战自我

来看看安全代码勇士博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞和漏洞的破坏。

如果你之前错过了,你可以 试试 iaC 游戏化安全挑战 在 Secure Code Warrior 平台上,让您的所有网络安全技能不断磨练并保持最新状态。

敬请关注下一章!

观看网络研讨会
开始吧
了解更多

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
对更多感兴趣?

分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
2020年5月11日发布

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

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

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

分享到:
领英品牌社交x 标志

现在是我们的 “基础设施即代码” 系列的下一期的时候了,这些博客将带领像您这样的开发人员在自己的组织中部署安全基础架构时提高到一个全新的安全意识水平。

哦,顺便说一句... 你对前一篇博客中的安全配置错误挑战的表现如何?如果你想立即解决缺失的功能级别访问控制漏洞,请前往该平台:

(上面的链接将带你进入Kubernetes挑战赛,但进入平台后,也可以使用下拉菜单从Ansible、CloudFormation、Terraform或Docker中进行选择。你的选择。)

当今部署的几乎每个应用程序都有某种访问控制机制,该机制可以检查用户是否有权执行所请求的功能。在创建应用程序时,它几乎是良好安全性和功能性的基石。实际上,所有 Web 应用程序都需要访问控制才能允许具有不同权限的用户使用该程序。

但是,当没有在基础架构级别执行相同的访问控制验证功能或配置错误时,可能会出现问题。如果基础设施级别的访问控制不完善,整个企业就会向黑客敞开大门,黑客可以利用该漏洞作为进行未经授权的窥探或全面攻击的门户。

实际上,利用缺失或配置错误的功能访问控制漏洞非常容易。攻击者甚至不需要过于熟练。他们只需要知道哪些命令在支持应用程序的框架内执行功能。如果他们这样做了,那只是反复试验的问题。他们可以持续提交不应允许的请求,一旦成功,目标网站、应用程序、服务器甚至整个网络都可能被暴露。

缺失的功能级别访问控制漏洞如何运作?

职能级别访问控制可以通过多种方式渗透到组织中。例如,功能级别的访问权限可以留给应用程序,而不由底层基础设施进行验证。或者,基础设施级别的访问控制可能配置不正确。在某些情况下,管理员假设未经授权的用户不知道如何获得只有更高级别的用户才能看到的基础架构资源,并使用很少起作用的 “隐蔽安全” 模型。

举一个通过隐蔽性实现安全的示例,以下 URL 可能容易受到攻击:

http://companywebsite.com/app/NormalUserHomepage

如果经过身份验证的用户使用一种名为 “强制 URL 浏览” 的技术,他们可能会尝试访问仅向管理员显示的页面。一个例子可能是:

http://companywebsite.com/app/AdminPages

如果不存在服务器端验证,他们将只显示管理页面(如果其名称与请求相符),然后就可以访问管理员在新页面上执行的任何其他功能。如果服务器向攻击者返回 “页面未找到” 错误,他们可以继续尝试,直到找出管理页面的名称。

对于攻击者来说,利用 缺少功能级别访问控制 是一个类似的过程。他们不是尝试浏览未经授权的页面,而是发送函数请求。例如,他们可能会尝试创建一个具有管理员权限的新用户。因此,根据框架的不同,他们的请求看起来像这样:

帖子/操作/创建用户名=hacker&pw=密码&角色=管理员

如果不存在功能级别的访问控制,则上面的示例将成功创建新的管理员帐户。一旦攻击者以新管理员身份重新登录,他们将拥有与该网络或服务器上的任何其他管理员相同的访问权限和权限。

修复缺少功能级别访问控制的问题

由于攻击者很容易利用缺失的功能级别访问控制漏洞,因此发现、修复和预防这些漏洞至关重要。值得庆幸的是,有了一些专业知识和基本的基础设施,这并不难 代码安全培训

主要的保护措施将来自于在基础架构级别实现基于角色的授权。永远不要相信应用程序可以处理该功能。即使他们这样做了,获得基础设施方面的授权也能确保不会遗漏任何东西。理想情况下,授权应来自一个集中位置(例如 AWS IAM、Azure IAM 等),该位置内置于组织的例程中并应用于每个新应用程序。这些授权过程可以来自框架本身,也可以来自任意数量的易于使用的外部模块。

最后,您的组织应采用最低权限的概念。默认情况下,所有操作和功能都应被拒绝,授权过程用于授予有效用户执行所需操作的权限。他们只应获得足够的权限来执行所需的功能,并且只能在需要的时间内有效。

缺少功能级别访问控制可能会造成灾难性的后果。但值得庆幸的是,通过在组织中建立良好的基础架构级授权实践,您可以轻松防止此问题发生。

认为你已经准备好在野外发现访问控制错误了吗?比较这些 Docker 代码片段;一个易受攻击,一个安全:


易受攻击:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户 root
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

安全:

来自 quay.io/prometheus/busybox: latest
ARG 版本=0.12.1
ARG 文件名=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL = https://github.com/prometheus/mysqld_exporter/releases/download/v
运行 wget $url$version/$filename.tar.gz &&\
tar-xvf $fileName.tar.gz &&\
mv $文件名/mysqld_exporter /bin/mysqld_exporter
复制 .my.cnf /home/.my.cnf
复制。/scripts/entrypoint.sh ~/entrypoint.sh
用户没人
暴露 9104
入口点 [“sh”,“~/entrypoint.sh”]
CMD [“/bin/mysqld_exporter”]

了解更多,挑战自我

来看看安全代码勇士博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞和漏洞的破坏。

如果你之前错过了,你可以 试试 iaC 游戏化安全挑战 在 Secure Code Warrior 平台上,让您的所有网络安全技能不断磨练并保持最新状态。

敬请关注下一章!

目录

下载PDF
查看资源
对更多感兴趣?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子