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

Coders Conquer Security OWASP 十大 API 系列-禁用安全功能/调试功能启用/权限不正确

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

虽然这个名单上的大多数漏洞都是针对API的,但禁用安全功能/启用调试功能/不当权限问题是一个可以在任何地方发生的问题。它在API中可能更普遍一些,但攻击者通常会试图在网络中的任何地方找到未修补的缺陷和未受保护的文件或目录。遇到一个启用了调试功能或禁用了安全功能的API,就会使他们的邪恶工作更容易一些。更糟糕的是,自动工具可以检测和利用安全错误配置,所以如果你的环境中有这些配置,它们很有可能被利用,这就是为什么这个漏洞被列入OWASP的危险API缺陷名单。

在我们进入乐趣之前,看看你是否能解决这个调试难题。

被禁用的安全功能/启用的调试功能/不恰当的权限缺陷是如何潜入API的?

为了了解这个多维的API缺陷是如何被添加到网络中的,我们必须把它分解成各个组成部分。让我们从启用调试功能的问题开始。调试是一个有用的工具,它可以帮助开发者弄清楚为什么应用程序不能正确执行或出现错误。启用调试功能后,错误和异常会生成详细的错误页面,这样开发人员就可以看到出错的地方并解决问题。当一个应用程序仍在开发中时,将其激活是完全可以的。

然而,大多数框架都有关于在生产环境中运行调试模式的警告,这是有原因的,可能就在激活调试的代码中。比如说。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在这个例子中,调试已经被激活。当出现异常时,Django应用程序将生成详细的错误页面。如果这是在生产环境中进行的,那么对手就可以接触到这些错误页面,其中包括关于环境的元数据信息。尽管大多数框架默认关闭了调试功能,但如果在漫长的开发过程中激活了调试功能,很容易忘记将其重新关闭。那么当应用程序转移到生产环境时,它就为攻击者提供了大量关于如何破坏应用程序,甚至是整个服务器或网络的信息。

虽然启用调试模式大多是一个独立的问题,但不适当的权限和禁用的安全功能漏洞往往会一起发挥作用。例如,在OWASP提供的一个真实场景中,一个攻击者使用搜索引擎找到了一个意外连接到互联网的数据库。因为这个流行的数据库管理系统使用的是其默认配置,认证被禁用。因此,通过结合不当的权限和禁用的安全功能漏洞,攻击者获得了对数百万条记录的访问权,其中包括PII、个人喜好和认证数据。

消除禁用的安全功能/启用的调试功能/不当的权限漏洞

在消除这个漏洞方面,你可能需要双管齐下。要消除问题的启用调试部分,只需在开发过程中增加一个检查,以确保在将API或应用程序转移到生产环境之前禁用调试。从我们的例子来看,这样做的正确命令如下。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

现在,Django应用程序的调试功能被禁用,DEBUG标志被配置为False。没有错误页面会被生成以应对错误。如果对手仍然获得了对错误页面的访问,它们不会包含任何有用的元数据,也不会对应用程序构成风险。

消除被禁用的安全功能和不适当的权限漏洞要困难一些,因为它们可能包含了广泛的具体漏洞。阻止它们的最好方法是开发一个标准的、可重复的流程,以便快速、方便地将锁定的资产部署到生产环境中。

即使如此,你也应该创建一个流程,对协调文件、API组件和云服务(如Amazon S3桶的权限)进行不断的审查和更新。这种审查也应该随着时间的推移对整个环境的安全设置的整体有效性进行评级,以确保组织一直在改进其API安全。

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


查看资源
查看资源

它在 API 中可能更为普遍,但攻击者通常会尝试在网络中的任何地方发现未修补的漏洞和未受保护的文件或目录。遇到一个启用了调试或禁用了安全功能的 API 只会让他们的恶意工作变得容易一些。

对更多感兴趣?

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

了解更多

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

预约演示
分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于2020年11月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 标志

虽然这个名单上的大多数漏洞都是针对API的,但禁用安全功能/启用调试功能/不当权限问题是一个可以在任何地方发生的问题。它在API中可能更普遍一些,但攻击者通常会试图在网络中的任何地方找到未修补的缺陷和未受保护的文件或目录。遇到一个启用了调试功能或禁用了安全功能的API,就会使他们的邪恶工作更容易一些。更糟糕的是,自动工具可以检测和利用安全错误配置,所以如果你的环境中有这些配置,它们很有可能被利用,这就是为什么这个漏洞被列入OWASP的危险API缺陷名单。

在我们进入乐趣之前,看看你是否能解决这个调试难题。

被禁用的安全功能/启用的调试功能/不恰当的权限缺陷是如何潜入API的?

为了了解这个多维的API缺陷是如何被添加到网络中的,我们必须把它分解成各个组成部分。让我们从启用调试功能的问题开始。调试是一个有用的工具,它可以帮助开发者弄清楚为什么应用程序不能正确执行或出现错误。启用调试功能后,错误和异常会生成详细的错误页面,这样开发人员就可以看到出错的地方并解决问题。当一个应用程序仍在开发中时,将其激活是完全可以的。

然而,大多数框架都有关于在生产环境中运行调试模式的警告,这是有原因的,可能就在激活调试的代码中。比如说。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在这个例子中,调试已经被激活。当出现异常时,Django应用程序将生成详细的错误页面。如果这是在生产环境中进行的,那么对手就可以接触到这些错误页面,其中包括关于环境的元数据信息。尽管大多数框架默认关闭了调试功能,但如果在漫长的开发过程中激活了调试功能,很容易忘记将其重新关闭。那么当应用程序转移到生产环境时,它就为攻击者提供了大量关于如何破坏应用程序,甚至是整个服务器或网络的信息。

虽然启用调试模式大多是一个独立的问题,但不适当的权限和禁用的安全功能漏洞往往会一起发挥作用。例如,在OWASP提供的一个真实场景中,一个攻击者使用搜索引擎找到了一个意外连接到互联网的数据库。因为这个流行的数据库管理系统使用的是其默认配置,认证被禁用。因此,通过结合不当的权限和禁用的安全功能漏洞,攻击者获得了对数百万条记录的访问权,其中包括PII、个人喜好和认证数据。

消除禁用的安全功能/启用的调试功能/不当的权限漏洞

在消除这个漏洞方面,你可能需要双管齐下。要消除问题的启用调试部分,只需在开发过程中增加一个检查,以确保在将API或应用程序转移到生产环境之前禁用调试。从我们的例子来看,这样做的正确命令如下。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

现在,Django应用程序的调试功能被禁用,DEBUG标志被配置为False。没有错误页面会被生成以应对错误。如果对手仍然获得了对错误页面的访问,它们不会包含任何有用的元数据,也不会对应用程序构成风险。

消除被禁用的安全功能和不适当的权限漏洞要困难一些,因为它们可能包含了广泛的具体漏洞。阻止它们的最好方法是开发一个标准的、可重复的流程,以便快速、方便地将锁定的资产部署到生产环境中。

即使如此,你也应该创建一个流程,对协调文件、API组件和云服务(如Amazon S3桶的权限)进行不断的审查和更新。这种审查也应该随着时间的推移对整个环境的安全设置的整体有效性进行评级,以确保组织一直在改进其API安全。

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


查看资源
查看资源

填写下面的表格下载报告

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

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

虽然这个名单上的大多数漏洞都是针对API的,但禁用安全功能/启用调试功能/不当权限问题是一个可以在任何地方发生的问题。它在API中可能更普遍一些,但攻击者通常会试图在网络中的任何地方找到未修补的缺陷和未受保护的文件或目录。遇到一个启用了调试功能或禁用了安全功能的API,就会使他们的邪恶工作更容易一些。更糟糕的是,自动工具可以检测和利用安全错误配置,所以如果你的环境中有这些配置,它们很有可能被利用,这就是为什么这个漏洞被列入OWASP的危险API缺陷名单。

在我们进入乐趣之前,看看你是否能解决这个调试难题。

被禁用的安全功能/启用的调试功能/不恰当的权限缺陷是如何潜入API的?

为了了解这个多维的API缺陷是如何被添加到网络中的,我们必须把它分解成各个组成部分。让我们从启用调试功能的问题开始。调试是一个有用的工具,它可以帮助开发者弄清楚为什么应用程序不能正确执行或出现错误。启用调试功能后,错误和异常会生成详细的错误页面,这样开发人员就可以看到出错的地方并解决问题。当一个应用程序仍在开发中时,将其激活是完全可以的。

然而,大多数框架都有关于在生产环境中运行调试模式的警告,这是有原因的,可能就在激活调试的代码中。比如说。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在这个例子中,调试已经被激活。当出现异常时,Django应用程序将生成详细的错误页面。如果这是在生产环境中进行的,那么对手就可以接触到这些错误页面,其中包括关于环境的元数据信息。尽管大多数框架默认关闭了调试功能,但如果在漫长的开发过程中激活了调试功能,很容易忘记将其重新关闭。那么当应用程序转移到生产环境时,它就为攻击者提供了大量关于如何破坏应用程序,甚至是整个服务器或网络的信息。

虽然启用调试模式大多是一个独立的问题,但不适当的权限和禁用的安全功能漏洞往往会一起发挥作用。例如,在OWASP提供的一个真实场景中,一个攻击者使用搜索引擎找到了一个意外连接到互联网的数据库。因为这个流行的数据库管理系统使用的是其默认配置,认证被禁用。因此,通过结合不当的权限和禁用的安全功能漏洞,攻击者获得了对数百万条记录的访问权,其中包括PII、个人喜好和认证数据。

消除禁用的安全功能/启用的调试功能/不当的权限漏洞

在消除这个漏洞方面,你可能需要双管齐下。要消除问题的启用调试部分,只需在开发过程中增加一个检查,以确保在将API或应用程序转移到生产环境之前禁用调试。从我们的例子来看,这样做的正确命令如下。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

现在,Django应用程序的调试功能被禁用,DEBUG标志被配置为False。没有错误页面会被生成以应对错误。如果对手仍然获得了对错误页面的访问,它们不会包含任何有用的元数据,也不会对应用程序构成风险。

消除被禁用的安全功能和不适当的权限漏洞要困难一些,因为它们可能包含了广泛的具体漏洞。阻止它们的最好方法是开发一个标准的、可重复的流程,以便快速、方便地将锁定的资产部署到生产环境中。

即使如此,你也应该创建一个流程,对协调文件、API组件和云服务(如Amazon S3桶的权限)进行不断的审查和更新。这种审查也应该随着时间的推移对整个环境的安全设置的整体有效性进行评级,以确保组织一直在改进其API安全。

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


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

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

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

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

分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于2020年11月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 标志

虽然这个名单上的大多数漏洞都是针对API的,但禁用安全功能/启用调试功能/不当权限问题是一个可以在任何地方发生的问题。它在API中可能更普遍一些,但攻击者通常会试图在网络中的任何地方找到未修补的缺陷和未受保护的文件或目录。遇到一个启用了调试功能或禁用了安全功能的API,就会使他们的邪恶工作更容易一些。更糟糕的是,自动工具可以检测和利用安全错误配置,所以如果你的环境中有这些配置,它们很有可能被利用,这就是为什么这个漏洞被列入OWASP的危险API缺陷名单。

在我们进入乐趣之前,看看你是否能解决这个调试难题。

被禁用的安全功能/启用的调试功能/不恰当的权限缺陷是如何潜入API的?

为了了解这个多维的API缺陷是如何被添加到网络中的,我们必须把它分解成各个组成部分。让我们从启用调试功能的问题开始。调试是一个有用的工具,它可以帮助开发者弄清楚为什么应用程序不能正确执行或出现错误。启用调试功能后,错误和异常会生成详细的错误页面,这样开发人员就可以看到出错的地方并解决问题。当一个应用程序仍在开发中时,将其激活是完全可以的。

然而,大多数框架都有关于在生产环境中运行调试模式的警告,这是有原因的,可能就在激活调试的代码中。比如说。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在这个例子中,调试已经被激活。当出现异常时,Django应用程序将生成详细的错误页面。如果这是在生产环境中进行的,那么对手就可以接触到这些错误页面,其中包括关于环境的元数据信息。尽管大多数框架默认关闭了调试功能,但如果在漫长的开发过程中激活了调试功能,很容易忘记将其重新关闭。那么当应用程序转移到生产环境时,它就为攻击者提供了大量关于如何破坏应用程序,甚至是整个服务器或网络的信息。

虽然启用调试模式大多是一个独立的问题,但不适当的权限和禁用的安全功能漏洞往往会一起发挥作用。例如,在OWASP提供的一个真实场景中,一个攻击者使用搜索引擎找到了一个意外连接到互联网的数据库。因为这个流行的数据库管理系统使用的是其默认配置,认证被禁用。因此,通过结合不当的权限和禁用的安全功能漏洞,攻击者获得了对数百万条记录的访问权,其中包括PII、个人喜好和认证数据。

消除禁用的安全功能/启用的调试功能/不当的权限漏洞

在消除这个漏洞方面,你可能需要双管齐下。要消除问题的启用调试部分,只需在开发过程中增加一个检查,以确保在将API或应用程序转移到生产环境之前禁用调试。从我们的例子来看,这样做的正确命令如下。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

现在,Django应用程序的调试功能被禁用,DEBUG标志被配置为False。没有错误页面会被生成以应对错误。如果对手仍然获得了对错误页面的访问,它们不会包含任何有用的元数据,也不会对应用程序构成风险。

消除被禁用的安全功能和不适当的权限漏洞要困难一些,因为它们可能包含了广泛的具体漏洞。阻止它们的最好方法是开发一个标准的、可重复的流程,以便快速、方便地将锁定的资产部署到生产环境中。

即使如此,你也应该创建一个流程,对协调文件、API组件和云服务(如Amazon S3桶的权限)进行不断的审查和更新。这种审查也应该随着时间的推移对整个环境的安全设置的整体有效性进行评级,以确保组织一直在改进其API安全。

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


目录

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

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

了解更多

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

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

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子