编码员征服安全基础设施即代码系列。遗漏的功能级访问控制
现在是我们 "基础设施即代码 "系列的下一期,这些博客将把像你这样的开发人员在自己的组织内部署安全基础设施时的安全意识提高到一个全新的水平。
哦,对了......你在上一篇博客中的安全错误配置挑战中表现如何?如果你想现在就去解决一个缺失的功能级访问控制漏洞,请到平台上去。
上面的链接将带你到Kubernetes挑战,但一旦你进入该平台,使用下拉菜单选择Ansible、CloudFormation、Terraform或Docker。你可以选择)。)
今天部署的几乎每一个应用程序都有某种访问控制机制,检查用户是否有权限执行所要求的功能。在创建一个应用程序时,这几乎是良好的安全以及功能的基石。事实上,所有的网络应用都需要访问控制,以允许具有不同权限的用户使用该程序。
然而,当这些相同的访问控制验证功能没有在基础设施层面执行,或者配置错误时,就会出现问题。如果基础设施层面的访问控制不完善,就会使整个企业向黑客敞开大门,黑客可以利用这一漏洞作为他们的网关,进行未经授权的窥探或全面攻击。
事实上,利用缺失或错误配置的功能访问控制漏洞是非常容易的。攻击者甚至不需要太多技巧。他们只需要知道在支持应用程序的任何框架中,哪些命令可以执行功能。如果他们知道,这只是一个试验和错误的问题。他们可以不断地提交不应该被允许的请求,只要有一个成功,目标网站、应用程序、服务器,甚至整个网络都可能被暴露。
缺失的功能级访问控制漏洞是如何运作的?
有几种方法可以使功能级访问控制悄悄进入一个组织。例如,功能级访问可以留给应用程序,而不被底层基础设施所验证。或者,基础设施级别的访问控制可能被错误地配置。在某些情况下,管理员认为非授权用户不知道如何进入只有高级用户才能看到的基础设施资源,并使用 "隐蔽的安全 "模式,这很少奏效。
对于一个隐蔽性安全的例子,以下URL很可能容易受到攻击。
http://companywebsite.com/app/NormalUserHomepage
如果一个经过认证的用户采用了一种叫做 "强制URL浏览 "的技术,他们可以尝试到达一个只显示给管理员的页面。一个例子可能是。
http://companywebsite.com/app/AdminPages
如果没有服务器端的验证,他们将简单地显示管理页面(如果它的名字与请求相匹配),然后可以访问管理员在新页面上做的任何额外功能。如果服务器向攻击者返回一个 "未找到页面 "的错误,他们可以简单地继续尝试,直到他们弄清楚管理页面的任何名称。
对于攻击者来说,利用缺失的功能级访问控制是一个类似的过程。他们不是试图浏览未经授权的页面,而是发送功能请求。例如,他们可能试图创建一个具有管理员权限的新用户。因此,他们的请求将看起来像这样,这取决于框架。
POST/action/createuser name=hacker&pw=password&role=admin
如果不存在功能级别的访问控制,那么上面的例子将是成功的,一个新的管理员账户将被创建。一旦攻击者以新管理员的身份重新登录,他们将拥有与该网络或服务器上其他管理员相同的访问和权限。
修复缺失的功能级访问控制
由于攻击者很容易利用缺失的功能级访问控制漏洞,因此发现、修复和防止这些漏洞是至关重要的。值得庆幸的是,只要有一些知识和基本的 "基础设施即代码 "安全培训,这并不是一件太困难的事情。
主要的保护将来自于在基础设施层面实施基于角色的授权。不要相信应用程序会处理这个功能。即使他们这样做了,拥有基础设施方面的授权将确保没有任何遗漏。理想情况下,授权应该来自一个集中的位置(例如AWS IAM、Azure IAM等),它被内置到你的组织的日常工作中,并应用于每个新的应用程序。这些授权流程可以来自框架本身或任何数量的易于使用的外部模块。
最后,你的组织应该接受最小特权的概念。所有的行动和功能在默认情况下都应该被拒绝,授权过程用来给有效的用户做任何他们需要的事情。他们应该只被给予足够的权限来执行所需的功能,并且只在需要的时候才被授予。
缺少功能层面的访问控制可能是毁灭性的。但值得庆幸的是,通过在你的组织中建立良好的基础设施级授权实践,你可以很容易地防止这个问题的发生。
你认为你已经准备好在野外发现一个访问控制的错误了吗?比较一下这些Docker代码片段;一个有漏洞,一个安全。
脆弱的。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
安全。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
了解更多,挑战自我
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。
如果你之前错过了,你可以在Secure Code Warrior 平台上尝试IaC的游戏化安全挑战,以保持你的所有网络安全技能得到磨练和更新。
敬请期待下一章!
Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。
Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示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。
马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。
现在是我们 "基础设施即代码 "系列的下一期,这些博客将把像你这样的开发人员在自己的组织内部署安全基础设施时的安全意识提高到一个全新的水平。
哦,对了......你在上一篇博客中的安全错误配置挑战中表现如何?如果你想现在就去解决一个缺失的功能级访问控制漏洞,请到平台上去。
上面的链接将带你到Kubernetes挑战,但一旦你进入该平台,使用下拉菜单选择Ansible、CloudFormation、Terraform或Docker。你可以选择)。)
今天部署的几乎每一个应用程序都有某种访问控制机制,检查用户是否有权限执行所要求的功能。在创建一个应用程序时,这几乎是良好的安全以及功能的基石。事实上,所有的网络应用都需要访问控制,以允许具有不同权限的用户使用该程序。
然而,当这些相同的访问控制验证功能没有在基础设施层面执行,或者配置错误时,就会出现问题。如果基础设施层面的访问控制不完善,就会使整个企业向黑客敞开大门,黑客可以利用这一漏洞作为他们的网关,进行未经授权的窥探或全面攻击。
事实上,利用缺失或错误配置的功能访问控制漏洞是非常容易的。攻击者甚至不需要太多技巧。他们只需要知道在支持应用程序的任何框架中,哪些命令可以执行功能。如果他们知道,这只是一个试验和错误的问题。他们可以不断地提交不应该被允许的请求,只要有一个成功,目标网站、应用程序、服务器,甚至整个网络都可能被暴露。
缺失的功能级访问控制漏洞是如何运作的?
有几种方法可以使功能级访问控制悄悄进入一个组织。例如,功能级访问可以留给应用程序,而不被底层基础设施所验证。或者,基础设施级别的访问控制可能被错误地配置。在某些情况下,管理员认为非授权用户不知道如何进入只有高级用户才能看到的基础设施资源,并使用 "隐蔽的安全 "模式,这很少奏效。
对于一个隐蔽性安全的例子,以下URL很可能容易受到攻击。
http://companywebsite.com/app/NormalUserHomepage
如果一个经过认证的用户采用了一种叫做 "强制URL浏览 "的技术,他们可以尝试到达一个只显示给管理员的页面。一个例子可能是。
http://companywebsite.com/app/AdminPages
如果没有服务器端的验证,他们将简单地显示管理页面(如果它的名字与请求相匹配),然后可以访问管理员在新页面上做的任何额外功能。如果服务器向攻击者返回一个 "未找到页面 "的错误,他们可以简单地继续尝试,直到他们弄清楚管理页面的任何名称。
对于攻击者来说,利用缺失的功能级访问控制是一个类似的过程。他们不是试图浏览未经授权的页面,而是发送功能请求。例如,他们可能试图创建一个具有管理员权限的新用户。因此,他们的请求将看起来像这样,这取决于框架。
POST/action/createuser name=hacker&pw=password&role=admin
如果不存在功能级别的访问控制,那么上面的例子将是成功的,一个新的管理员账户将被创建。一旦攻击者以新管理员的身份重新登录,他们将拥有与该网络或服务器上其他管理员相同的访问和权限。
修复缺失的功能级访问控制
由于攻击者很容易利用缺失的功能级访问控制漏洞,因此发现、修复和防止这些漏洞是至关重要的。值得庆幸的是,只要有一些知识和基本的 "基础设施即代码 "安全培训,这并不是一件太困难的事情。
主要的保护将来自于在基础设施层面实施基于角色的授权。不要相信应用程序会处理这个功能。即使他们这样做了,拥有基础设施方面的授权将确保没有任何遗漏。理想情况下,授权应该来自一个集中的位置(例如AWS IAM、Azure IAM等),它被内置到你的组织的日常工作中,并应用于每个新的应用程序。这些授权流程可以来自框架本身或任何数量的易于使用的外部模块。
最后,你的组织应该接受最小特权的概念。所有的行动和功能在默认情况下都应该被拒绝,授权过程用来给有效的用户做任何他们需要的事情。他们应该只被给予足够的权限来执行所需的功能,并且只在需要的时候才被授予。
缺少功能层面的访问控制可能是毁灭性的。但值得庆幸的是,通过在你的组织中建立良好的基础设施级授权实践,你可以很容易地防止这个问题的发生。
你认为你已经准备好在野外发现一个访问控制的错误了吗?比较一下这些Docker代码片段;一个有漏洞,一个安全。
脆弱的。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
安全。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
了解更多,挑战自我
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。
如果你之前错过了,你可以在Secure Code Warrior 平台上尝试IaC的游戏化安全挑战,以保持你的所有网络安全技能得到磨练和更新。
敬请期待下一章!
现在是我们 "基础设施即代码 "系列的下一期,这些博客将把像你这样的开发人员在自己的组织内部署安全基础设施时的安全意识提高到一个全新的水平。
哦,对了......你在上一篇博客中的安全错误配置挑战中表现如何?如果你想现在就去解决一个缺失的功能级访问控制漏洞,请到平台上去。
上面的链接将带你到Kubernetes挑战,但一旦你进入该平台,使用下拉菜单选择Ansible、CloudFormation、Terraform或Docker。你可以选择)。)
今天部署的几乎每一个应用程序都有某种访问控制机制,检查用户是否有权限执行所要求的功能。在创建一个应用程序时,这几乎是良好的安全以及功能的基石。事实上,所有的网络应用都需要访问控制,以允许具有不同权限的用户使用该程序。
然而,当这些相同的访问控制验证功能没有在基础设施层面执行,或者配置错误时,就会出现问题。如果基础设施层面的访问控制不完善,就会使整个企业向黑客敞开大门,黑客可以利用这一漏洞作为他们的网关,进行未经授权的窥探或全面攻击。
事实上,利用缺失或错误配置的功能访问控制漏洞是非常容易的。攻击者甚至不需要太多技巧。他们只需要知道在支持应用程序的任何框架中,哪些命令可以执行功能。如果他们知道,这只是一个试验和错误的问题。他们可以不断地提交不应该被允许的请求,只要有一个成功,目标网站、应用程序、服务器,甚至整个网络都可能被暴露。
缺失的功能级访问控制漏洞是如何运作的?
有几种方法可以使功能级访问控制悄悄进入一个组织。例如,功能级访问可以留给应用程序,而不被底层基础设施所验证。或者,基础设施级别的访问控制可能被错误地配置。在某些情况下,管理员认为非授权用户不知道如何进入只有高级用户才能看到的基础设施资源,并使用 "隐蔽的安全 "模式,这很少奏效。
对于一个隐蔽性安全的例子,以下URL很可能容易受到攻击。
http://companywebsite.com/app/NormalUserHomepage
如果一个经过认证的用户采用了一种叫做 "强制URL浏览 "的技术,他们可以尝试到达一个只显示给管理员的页面。一个例子可能是。
http://companywebsite.com/app/AdminPages
如果没有服务器端的验证,他们将简单地显示管理页面(如果它的名字与请求相匹配),然后可以访问管理员在新页面上做的任何额外功能。如果服务器向攻击者返回一个 "未找到页面 "的错误,他们可以简单地继续尝试,直到他们弄清楚管理页面的任何名称。
对于攻击者来说,利用缺失的功能级访问控制是一个类似的过程。他们不是试图浏览未经授权的页面,而是发送功能请求。例如,他们可能试图创建一个具有管理员权限的新用户。因此,他们的请求将看起来像这样,这取决于框架。
POST/action/createuser name=hacker&pw=password&role=admin
如果不存在功能级别的访问控制,那么上面的例子将是成功的,一个新的管理员账户将被创建。一旦攻击者以新管理员的身份重新登录,他们将拥有与该网络或服务器上其他管理员相同的访问和权限。
修复缺失的功能级访问控制
由于攻击者很容易利用缺失的功能级访问控制漏洞,因此发现、修复和防止这些漏洞是至关重要的。值得庆幸的是,只要有一些知识和基本的 "基础设施即代码 "安全培训,这并不是一件太困难的事情。
主要的保护将来自于在基础设施层面实施基于角色的授权。不要相信应用程序会处理这个功能。即使他们这样做了,拥有基础设施方面的授权将确保没有任何遗漏。理想情况下,授权应该来自一个集中的位置(例如AWS IAM、Azure IAM等),它被内置到你的组织的日常工作中,并应用于每个新的应用程序。这些授权流程可以来自框架本身或任何数量的易于使用的外部模块。
最后,你的组织应该接受最小特权的概念。所有的行动和功能在默认情况下都应该被拒绝,授权过程用来给有效的用户做任何他们需要的事情。他们应该只被给予足够的权限来执行所需的功能,并且只在需要的时候才被授予。
缺少功能层面的访问控制可能是毁灭性的。但值得庆幸的是,通过在你的组织中建立良好的基础设施级授权实践,你可以很容易地防止这个问题的发生。
你认为你已经准备好在野外发现一个访问控制的错误了吗?比较一下这些Docker代码片段;一个有漏洞,一个安全。
脆弱的。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
安全。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
了解更多,挑战自我
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。
如果你之前错过了,你可以在Secure Code Warrior 平台上尝试IaC的游戏化安全挑战,以保持你的所有网络安全技能得到磨练和更新。
敬请期待下一章!
点击下面的链接,下载本资料的 PDF 文件。
Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
查看报告预定一个演示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。
马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。
现在是我们 "基础设施即代码 "系列的下一期,这些博客将把像你这样的开发人员在自己的组织内部署安全基础设施时的安全意识提高到一个全新的水平。
哦,对了......你在上一篇博客中的安全错误配置挑战中表现如何?如果你想现在就去解决一个缺失的功能级访问控制漏洞,请到平台上去。
上面的链接将带你到Kubernetes挑战,但一旦你进入该平台,使用下拉菜单选择Ansible、CloudFormation、Terraform或Docker。你可以选择)。)
今天部署的几乎每一个应用程序都有某种访问控制机制,检查用户是否有权限执行所要求的功能。在创建一个应用程序时,这几乎是良好的安全以及功能的基石。事实上,所有的网络应用都需要访问控制,以允许具有不同权限的用户使用该程序。
然而,当这些相同的访问控制验证功能没有在基础设施层面执行,或者配置错误时,就会出现问题。如果基础设施层面的访问控制不完善,就会使整个企业向黑客敞开大门,黑客可以利用这一漏洞作为他们的网关,进行未经授权的窥探或全面攻击。
事实上,利用缺失或错误配置的功能访问控制漏洞是非常容易的。攻击者甚至不需要太多技巧。他们只需要知道在支持应用程序的任何框架中,哪些命令可以执行功能。如果他们知道,这只是一个试验和错误的问题。他们可以不断地提交不应该被允许的请求,只要有一个成功,目标网站、应用程序、服务器,甚至整个网络都可能被暴露。
缺失的功能级访问控制漏洞是如何运作的?
有几种方法可以使功能级访问控制悄悄进入一个组织。例如,功能级访问可以留给应用程序,而不被底层基础设施所验证。或者,基础设施级别的访问控制可能被错误地配置。在某些情况下,管理员认为非授权用户不知道如何进入只有高级用户才能看到的基础设施资源,并使用 "隐蔽的安全 "模式,这很少奏效。
对于一个隐蔽性安全的例子,以下URL很可能容易受到攻击。
http://companywebsite.com/app/NormalUserHomepage
如果一个经过认证的用户采用了一种叫做 "强制URL浏览 "的技术,他们可以尝试到达一个只显示给管理员的页面。一个例子可能是。
http://companywebsite.com/app/AdminPages
如果没有服务器端的验证,他们将简单地显示管理页面(如果它的名字与请求相匹配),然后可以访问管理员在新页面上做的任何额外功能。如果服务器向攻击者返回一个 "未找到页面 "的错误,他们可以简单地继续尝试,直到他们弄清楚管理页面的任何名称。
对于攻击者来说,利用缺失的功能级访问控制是一个类似的过程。他们不是试图浏览未经授权的页面,而是发送功能请求。例如,他们可能试图创建一个具有管理员权限的新用户。因此,他们的请求将看起来像这样,这取决于框架。
POST/action/createuser name=hacker&pw=password&role=admin
如果不存在功能级别的访问控制,那么上面的例子将是成功的,一个新的管理员账户将被创建。一旦攻击者以新管理员的身份重新登录,他们将拥有与该网络或服务器上其他管理员相同的访问和权限。
修复缺失的功能级访问控制
由于攻击者很容易利用缺失的功能级访问控制漏洞,因此发现、修复和防止这些漏洞是至关重要的。值得庆幸的是,只要有一些知识和基本的 "基础设施即代码 "安全培训,这并不是一件太困难的事情。
主要的保护将来自于在基础设施层面实施基于角色的授权。不要相信应用程序会处理这个功能。即使他们这样做了,拥有基础设施方面的授权将确保没有任何遗漏。理想情况下,授权应该来自一个集中的位置(例如AWS IAM、Azure IAM等),它被内置到你的组织的日常工作中,并应用于每个新的应用程序。这些授权流程可以来自框架本身或任何数量的易于使用的外部模块。
最后,你的组织应该接受最小特权的概念。所有的行动和功能在默认情况下都应该被拒绝,授权过程用来给有效的用户做任何他们需要的事情。他们应该只被给予足够的权限来执行所需的功能,并且只在需要的时候才被授予。
缺少功能层面的访问控制可能是毁灭性的。但值得庆幸的是,通过在你的组织中建立良好的基础设施级授权实践,你可以很容易地防止这个问题的发生。
你认为你已经准备好在野外发现一个访问控制的错误了吗?比较一下这些Docker代码片段;一个有漏洞,一个安全。
脆弱的。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
安全。
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
了解更多,挑战自我
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和你的客户免受其他安全缺陷和漏洞的蹂躏。
如果你之前错过了,你可以在Secure Code Warrior 平台上尝试IaC的游戏化安全挑战,以保持你的所有网络安全技能得到磨练和更新。
敬请期待下一章!
目录
Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。
Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示下载