博客

Coders Conquer Security OWASP Top 10 API Series - 缺少资源和速率限制

马蒂亚斯-马杜博士
发表于2020年9月30日

随着资源的缺乏和速率的限制,API漏洞的行为几乎与标题所描述的完全一样。每个API都有有限的资源和计算能力,这取决于它的环境。大多数还需要处理来自用户或其他程序的请求,要求它执行所需的功能。当有太多的请求同时进来,而API没有足够的计算资源来处理这些请求时,就会出现这种漏洞。然后,API可能变得不可用或对新的请求没有反应。

如果API的速率或资源限制没有被正确设置,或者限制没有在代码中被定义,那么API就很容易出现这个问题。例如,如果一个企业经历了一个特别繁忙的时期,一个API就会超载。但这也是一个安全漏洞,因为威胁者可以故意让未受保护的API的请求超载,以便进行拒绝服务(DDoS)攻击。  

顺便问一下,到目前为止,你在API游戏化挑战中表现如何?如果你现在就想试试你处理速率限制性漏洞的技巧,请踏上竞技场。

现在,让我们再深入了解一下。

缺乏资源和速率限制了API的脆弱性,有哪些例子?

这个漏洞有两种方式可以潜入API。第一种是当编码员根本没有定义API的节流率是多少。在基础设施的某个地方可能有一个默认的节流率设置,但依赖这个设置并不是一个好的策略。相反,每个API应该单独设置其速率。这一点尤其正确,因为API的功能和可用资源可能有很大的不同。

例如,一个旨在为少数用户服务的内部API可以有一个非常低的节流率,并且工作得很好。但是,一个面向公众的API,作为一个实时电子商务网站的一部分,很可能需要定义一个特别高的速率,以补偿可能出现的同步用户激增的情况。在这两种情况下,应该根据预期的需求、潜在用户的数量和可用的计算能力来定义节流率。

这可能是很诱人的,特别是对于那些很可能非常繁忙的API来说,将速率设置为无限,以尝试最大化性能。这可以通过一段简单的代码来实现(作为一个例子,我们将使用Python Django REST框架)。

"DEFAULT_THROTTLE_RATES: {
       "anon: None,
       "user: None

在这个例子中,匿名用户和系统已知的用户都可以无限次地联系API,而不考虑一段时间内的请求数量。这是一个坏主意,因为无论一个API有多少可用的计算资源,攻击者可以部署像僵尸网络这样的东西,最终使它慢到爬行,或者可能使它完全脱机。当这种情况发生时,有效用户将被拒绝访问,而攻击也将成功。

消除资源匮乏和速率限制的问题

每一个由组织部署的API都应该在其代码中定义其节流率。这可能包括诸如执行超时、允许的最大内存、每页可返回给用户的记录数,或在定义的时间范围内允许的进程数。

从上面的例子来看,与其让节流率大开大合,不如严格定义匿名和已知用户的不同速率。

"DEFAULT_THROTTLE_RATES: {
       "anon: config("THROTTLE_ANON, default=200/hour),
       "user: config("THROTTLE_USER, default=5000/hour)

在新的例子中,API将限制匿名用户每小时发出200次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。

作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问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 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示
分享到
作者
马蒂亚斯-马杜博士
发表于2020年9月30日

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。

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

分享到

随着资源的缺乏和速率的限制,API漏洞的行为几乎与标题所描述的完全一样。每个API都有有限的资源和计算能力,这取决于它的环境。大多数还需要处理来自用户或其他程序的请求,要求它执行所需的功能。当有太多的请求同时进来,而API没有足够的计算资源来处理这些请求时,就会出现这种漏洞。然后,API可能变得不可用或对新的请求没有反应。

如果API的速率或资源限制没有被正确设置,或者限制没有在代码中被定义,那么API就很容易出现这个问题。例如,如果一个企业经历了一个特别繁忙的时期,一个API就会超载。但这也是一个安全漏洞,因为威胁者可以故意让未受保护的API的请求超载,以便进行拒绝服务(DDoS)攻击。  

顺便问一下,到目前为止,你在API游戏化挑战中表现如何?如果你现在就想试试你处理速率限制性漏洞的技巧,请踏上竞技场。

现在,让我们再深入了解一下。

缺乏资源和速率限制了API的脆弱性,有哪些例子?

这个漏洞有两种方式可以潜入API。第一种是当编码员根本没有定义API的节流率是多少。在基础设施的某个地方可能有一个默认的节流率设置,但依赖这个设置并不是一个好的策略。相反,每个API应该单独设置其速率。这一点尤其正确,因为API的功能和可用资源可能有很大的不同。

例如,一个旨在为少数用户服务的内部API可以有一个非常低的节流率,并且工作得很好。但是,一个面向公众的API,作为一个实时电子商务网站的一部分,很可能需要定义一个特别高的速率,以补偿可能出现的同步用户激增的情况。在这两种情况下,应该根据预期的需求、潜在用户的数量和可用的计算能力来定义节流率。

这可能是很诱人的,特别是对于那些很可能非常繁忙的API来说,将速率设置为无限,以尝试最大化性能。这可以通过一段简单的代码来实现(作为一个例子,我们将使用Python Django REST框架)。

"DEFAULT_THROTTLE_RATES: {
       "anon: None,
       "user: None

在这个例子中,匿名用户和系统已知的用户都可以无限次地联系API,而不考虑一段时间内的请求数量。这是一个坏主意,因为无论一个API有多少可用的计算资源,攻击者可以部署像僵尸网络这样的东西,最终使它慢到爬行,或者可能使它完全脱机。当这种情况发生时,有效用户将被拒绝访问,而攻击也将成功。

消除资源匮乏和速率限制的问题

每一个由组织部署的API都应该在其代码中定义其节流率。这可能包括诸如执行超时、允许的最大内存、每页可返回给用户的记录数,或在定义的时间范围内允许的进程数。

从上面的例子来看,与其让节流率大开大合,不如严格定义匿名和已知用户的不同速率。

"DEFAULT_THROTTLE_RATES: {
       "anon: config("THROTTLE_ANON, default=200/hour),
       "user: config("THROTTLE_USER, default=5000/hour)

在新的例子中,API将限制匿名用户每小时发出200次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。

作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。

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

查看资源
查看资源

请填写下表下载报告

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

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。

随着资源的缺乏和速率的限制,API漏洞的行为几乎与标题所描述的完全一样。每个API都有有限的资源和计算能力,这取决于它的环境。大多数还需要处理来自用户或其他程序的请求,要求它执行所需的功能。当有太多的请求同时进来,而API没有足够的计算资源来处理这些请求时,就会出现这种漏洞。然后,API可能变得不可用或对新的请求没有反应。

如果API的速率或资源限制没有被正确设置,或者限制没有在代码中被定义,那么API就很容易出现这个问题。例如,如果一个企业经历了一个特别繁忙的时期,一个API就会超载。但这也是一个安全漏洞,因为威胁者可以故意让未受保护的API的请求超载,以便进行拒绝服务(DDoS)攻击。  

顺便问一下,到目前为止,你在API游戏化挑战中表现如何?如果你现在就想试试你处理速率限制性漏洞的技巧,请踏上竞技场。

现在,让我们再深入了解一下。

缺乏资源和速率限制了API的脆弱性,有哪些例子?

这个漏洞有两种方式可以潜入API。第一种是当编码员根本没有定义API的节流率是多少。在基础设施的某个地方可能有一个默认的节流率设置,但依赖这个设置并不是一个好的策略。相反,每个API应该单独设置其速率。这一点尤其正确,因为API的功能和可用资源可能有很大的不同。

例如,一个旨在为少数用户服务的内部API可以有一个非常低的节流率,并且工作得很好。但是,一个面向公众的API,作为一个实时电子商务网站的一部分,很可能需要定义一个特别高的速率,以补偿可能出现的同步用户激增的情况。在这两种情况下,应该根据预期的需求、潜在用户的数量和可用的计算能力来定义节流率。

这可能是很诱人的,特别是对于那些很可能非常繁忙的API来说,将速率设置为无限,以尝试最大化性能。这可以通过一段简单的代码来实现(作为一个例子,我们将使用Python Django REST框架)。

"DEFAULT_THROTTLE_RATES: {
       "anon: None,
       "user: None

在这个例子中,匿名用户和系统已知的用户都可以无限次地联系API,而不考虑一段时间内的请求数量。这是一个坏主意,因为无论一个API有多少可用的计算资源,攻击者可以部署像僵尸网络这样的东西,最终使它慢到爬行,或者可能使它完全脱机。当这种情况发生时,有效用户将被拒绝访问,而攻击也将成功。

消除资源匮乏和速率限制的问题

每一个由组织部署的API都应该在其代码中定义其节流率。这可能包括诸如执行超时、允许的最大内存、每页可返回给用户的记录数,或在定义的时间范围内允许的进程数。

从上面的例子来看,与其让节流率大开大合,不如严格定义匿名和已知用户的不同速率。

"DEFAULT_THROTTLE_RATES: {
       "anon: config("THROTTLE_ANON, default=200/hour),
       "user: config("THROTTLE_USER, default=5000/hour)

在新的例子中,API将限制匿名用户每小时发出200次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。

作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。

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

开始吧

点击下面的链接,下载本资料的 PDF 文件。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

查看报告预定一个演示
查看资源
分享到
想了解更多信息?

分享到
作者
马蒂亚斯-马杜博士
发表于2020年9月30日

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。

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

分享到

随着资源的缺乏和速率的限制,API漏洞的行为几乎与标题所描述的完全一样。每个API都有有限的资源和计算能力,这取决于它的环境。大多数还需要处理来自用户或其他程序的请求,要求它执行所需的功能。当有太多的请求同时进来,而API没有足够的计算资源来处理这些请求时,就会出现这种漏洞。然后,API可能变得不可用或对新的请求没有反应。

如果API的速率或资源限制没有被正确设置,或者限制没有在代码中被定义,那么API就很容易出现这个问题。例如,如果一个企业经历了一个特别繁忙的时期,一个API就会超载。但这也是一个安全漏洞,因为威胁者可以故意让未受保护的API的请求超载,以便进行拒绝服务(DDoS)攻击。  

顺便问一下,到目前为止,你在API游戏化挑战中表现如何?如果你现在就想试试你处理速率限制性漏洞的技巧,请踏上竞技场。

现在,让我们再深入了解一下。

缺乏资源和速率限制了API的脆弱性,有哪些例子?

这个漏洞有两种方式可以潜入API。第一种是当编码员根本没有定义API的节流率是多少。在基础设施的某个地方可能有一个默认的节流率设置,但依赖这个设置并不是一个好的策略。相反,每个API应该单独设置其速率。这一点尤其正确,因为API的功能和可用资源可能有很大的不同。

例如,一个旨在为少数用户服务的内部API可以有一个非常低的节流率,并且工作得很好。但是,一个面向公众的API,作为一个实时电子商务网站的一部分,很可能需要定义一个特别高的速率,以补偿可能出现的同步用户激增的情况。在这两种情况下,应该根据预期的需求、潜在用户的数量和可用的计算能力来定义节流率。

这可能是很诱人的,特别是对于那些很可能非常繁忙的API来说,将速率设置为无限,以尝试最大化性能。这可以通过一段简单的代码来实现(作为一个例子,我们将使用Python Django REST框架)。

"DEFAULT_THROTTLE_RATES: {
       "anon: None,
       "user: None

在这个例子中,匿名用户和系统已知的用户都可以无限次地联系API,而不考虑一段时间内的请求数量。这是一个坏主意,因为无论一个API有多少可用的计算资源,攻击者可以部署像僵尸网络这样的东西,最终使它慢到爬行,或者可能使它完全脱机。当这种情况发生时,有效用户将被拒绝访问,而攻击也将成功。

消除资源匮乏和速率限制的问题

每一个由组织部署的API都应该在其代码中定义其节流率。这可能包括诸如执行超时、允许的最大内存、每页可返回给用户的记录数,或在定义的时间范围内允许的进程数。

从上面的例子来看,与其让节流率大开大合,不如严格定义匿名和已知用户的不同速率。

"DEFAULT_THROTTLE_RATES: {
       "anon: config("THROTTLE_ANON, default=200/hour),
       "user: config("THROTTLE_USER, default=5000/hour)

在新的例子中,API将限制匿名用户每小时发出200次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。

作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问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 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示下载
分享到
资源中心
资源中心