Coders Conquer Security OWASP Top 10 API Series - 已禁用的安全功能/已启用的调试功能/不当的权限

发表于2020年11月11日
作者:Matias Madou,博士
仔细说来?

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

虽然这个名单上的大多数漏洞都是针对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 培训平台的演示,以保持你所有网络安全技能的磨练和更新。


查看资源

想要更多吗?

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

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

查看博客
想要更多吗?

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

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

资源中心

Coders Conquer Security OWASP Top 10 API Series - 已禁用的安全功能/已启用的调试功能/不当的权限

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

虽然这个名单上的大多数漏洞都是针对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 培训平台的演示,以保持你所有网络安全技能的磨练和更新。


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

Oopsie daisy