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

コーダーズ・コンカー・セキュリティ OWASP トップ 10 API シリーズ-一括割り当て

马蒂亚斯·马杜博士
发表于 2020 年 10 月 21 日
最后更新于 2026年3月10日

大量赋值漏洞的诞生是因为许多现代框架鼓励开发者使用自动将来自客户端的输入绑定到代码变量和内部对象的函数。这样做是为了简化代码,加快操作速度。

攻击者可以使用这种方法来强制改变客户端不应该更新的对象属性。通常情况下,这将导致特定的业务问题,如用户给自己增加管理权限,而不是使网站瘫痪或窃取企业机密。攻击者还必须对对象和他们所利用的应用程序的业务逻辑之间的关系有一些了解。

然而,这一切都不能使大量分配的漏洞在聪明的恶意用户手中变得不那么危险。

在我们推出完整的指南之前,先玩玩我们的游戏化挑战,看看你的表现如何。

攻击者如何利用大规模分配漏洞?

OWASP提出的方案(我们稍作了修改),假设一个共享汽车的应用程序,包括使用大规模分配绑定到代码中对象的不同属性。这些属性包括用户可以改变的与权限有关的属性和只应由应用程序内部设置的与流程有关的属性。两者都使用大规模赋值将属性绑定到对象上。

在这种情况下,共享汽车应用允许用户更新他们的资料,这在许多面向用户的应用中是很常见的。这是用一个发送到PUT的API调用完成的,它返回以下JSON对象。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

因为攻击者,即本例中的SneakySnake先生,已经弄清了属性和对象之间的关系,他可以重新发送他的原始请求,用以下字符串更新他的资料。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

由于端点容易受到大规模分配的影响,它接受新的输入为有效。我们的黑客不仅在他的个人资料中增加了几年,而且还为自己分配了管理权限。

消除大规模分配的漏洞

尽管在一些框架中使用质量赋值功能可能很方便,但如果你想保持你的API安全,你应该避免这样做。相反,解析请求值,而不是将它们直接绑定到一个对象。你也可以使用一个缩小的数据传输对象,这将提供几乎与直接绑定到对象本身相同的便利,只是没有相关的风险。

作为额外的预防措施,像上面例子中的管理权限这样的敏感属性可以被拒绝,这样它们就永远不会被服务器在API调用中接受。一个更好的主意可能是默认拒绝每一个属性,然后允许特定的、非敏感的属性,你希望用户能够更新或改变。做任何这些事情都可以帮助锁定API,并从你的环境中消除大量分配的漏洞。

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

显示资源
显示资源

大量代入の脆弱性は、多くの最新のフレームワークが、開発者がクライアントからの入力をコード変数や内部オブジェクトに自動的にバインドする関数の使用を奨励した結果生まれました。

您还有兴趣吗?

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

了解更多

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

预约演示
分享:
领英品牌社交x 标志
著者
马蒂亚斯·马杜博士
2020年10月21日发布

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。

马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。

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

大量赋值漏洞的诞生是因为许多现代框架鼓励开发者使用自动将来自客户端的输入绑定到代码变量和内部对象的函数。这样做是为了简化代码,加快操作速度。

攻击者可以使用这种方法来强制改变客户端不应该更新的对象属性。通常情况下,这将导致特定的业务问题,如用户给自己增加管理权限,而不是使网站瘫痪或窃取企业机密。攻击者还必须对对象和他们所利用的应用程序的业务逻辑之间的关系有一些了解。

然而,这一切都不能使大量分配的漏洞在聪明的恶意用户手中变得不那么危险。

在我们推出完整的指南之前,先玩玩我们的游戏化挑战,看看你的表现如何。

攻击者如何利用大规模分配漏洞?

OWASP提出的方案(我们稍作了修改),假设一个共享汽车的应用程序,包括使用大规模分配绑定到代码中对象的不同属性。这些属性包括用户可以改变的与权限有关的属性和只应由应用程序内部设置的与流程有关的属性。两者都使用大规模赋值将属性绑定到对象上。

在这种情况下,共享汽车应用允许用户更新他们的资料,这在许多面向用户的应用中是很常见的。这是用一个发送到PUT的API调用完成的,它返回以下JSON对象。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

因为攻击者,即本例中的SneakySnake先生,已经弄清了属性和对象之间的关系,他可以重新发送他的原始请求,用以下字符串更新他的资料。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

由于端点容易受到大规模分配的影响,它接受新的输入为有效。我们的黑客不仅在他的个人资料中增加了几年,而且还为自己分配了管理权限。

消除大规模分配的漏洞

尽管在一些框架中使用质量赋值功能可能很方便,但如果你想保持你的API安全,你应该避免这样做。相反,解析请求值,而不是将它们直接绑定到一个对象。你也可以使用一个缩小的数据传输对象,这将提供几乎与直接绑定到对象本身相同的便利,只是没有相关的风险。

作为额外的预防措施,像上面例子中的管理权限这样的敏感属性可以被拒绝,这样它们就永远不会被服务器在API调用中接受。一个更好的主意可能是默认拒绝每一个属性,然后允许特定的、非敏感的属性,你希望用户能够更新或改变。做任何这些事情都可以帮助锁定API,并从你的环境中消除大量分配的漏洞。

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

显示资源
显示资源

要下载报告,请填写以下表格。

恳请允许我们向您发送有关本公司产品及/或相关安全编码主题的信息。我们始终以高度谨慎的态度处理您的个人信息,绝不会出于营销目的将其出售给其他公司。

送信
scw 成功图标
SCW 错误图标
要提交表单,请启用“Analytics”Cookie。设置完成后,您可以再次将其禁用。

大量赋值漏洞的诞生是因为许多现代框架鼓励开发者使用自动将来自客户端的输入绑定到代码变量和内部对象的函数。这样做是为了简化代码,加快操作速度。

攻击者可以使用这种方法来强制改变客户端不应该更新的对象属性。通常情况下,这将导致特定的业务问题,如用户给自己增加管理权限,而不是使网站瘫痪或窃取企业机密。攻击者还必须对对象和他们所利用的应用程序的业务逻辑之间的关系有一些了解。

然而,这一切都不能使大量分配的漏洞在聪明的恶意用户手中变得不那么危险。

在我们推出完整的指南之前,先玩玩我们的游戏化挑战,看看你的表现如何。

攻击者如何利用大规模分配漏洞?

OWASP提出的方案(我们稍作了修改),假设一个共享汽车的应用程序,包括使用大规模分配绑定到代码中对象的不同属性。这些属性包括用户可以改变的与权限有关的属性和只应由应用程序内部设置的与流程有关的属性。两者都使用大规模赋值将属性绑定到对象上。

在这种情况下,共享汽车应用允许用户更新他们的资料,这在许多面向用户的应用中是很常见的。这是用一个发送到PUT的API调用完成的,它返回以下JSON对象。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

因为攻击者,即本例中的SneakySnake先生,已经弄清了属性和对象之间的关系,他可以重新发送他的原始请求,用以下字符串更新他的资料。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

由于端点容易受到大规模分配的影响,它接受新的输入为有效。我们的黑客不仅在他的个人资料中增加了几年,而且还为自己分配了管理权限。

消除大规模分配的漏洞

尽管在一些框架中使用质量赋值功能可能很方便,但如果你想保持你的API安全,你应该避免这样做。相反,解析请求值,而不是将它们直接绑定到一个对象。你也可以使用一个缩小的数据传输对象,这将提供几乎与直接绑定到对象本身相同的便利,只是没有相关的风险。

作为额外的预防措施,像上面例子中的管理权限这样的敏感属性可以被拒绝,这样它们就永远不会被服务器在API调用中接受。一个更好的主意可能是默认拒绝每一个属性,然后允许特定的、非敏感的属性,你希望用户能够更新或改变。做任何这些事情都可以帮助锁定API,并从你的环境中消除大量分配的漏洞。

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

观看在线研讨会
开始吧
了解更多

请点击以下链接下载此资源的PDF文件。

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

显示报告预约演示
下载PDF文件
显示资源
分享:
领英品牌社交x 标志
您还有兴趣吗?

分享:
领英品牌社交x 标志
著者
马蒂亚斯·马杜博士
2020年10月21日发布

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。

马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。

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

大量赋值漏洞的诞生是因为许多现代框架鼓励开发者使用自动将来自客户端的输入绑定到代码变量和内部对象的函数。这样做是为了简化代码,加快操作速度。

攻击者可以使用这种方法来强制改变客户端不应该更新的对象属性。通常情况下,这将导致特定的业务问题,如用户给自己增加管理权限,而不是使网站瘫痪或窃取企业机密。攻击者还必须对对象和他们所利用的应用程序的业务逻辑之间的关系有一些了解。

然而,这一切都不能使大量分配的漏洞在聪明的恶意用户手中变得不那么危险。

在我们推出完整的指南之前,先玩玩我们的游戏化挑战,看看你的表现如何。

攻击者如何利用大规模分配漏洞?

OWASP提出的方案(我们稍作了修改),假设一个共享汽车的应用程序,包括使用大规模分配绑定到代码中对象的不同属性。这些属性包括用户可以改变的与权限有关的属性和只应由应用程序内部设置的与流程有关的属性。两者都使用大规模赋值将属性绑定到对象上。

在这种情况下,共享汽车应用允许用户更新他们的资料,这在许多面向用户的应用中是很常见的。这是用一个发送到PUT的API调用完成的,它返回以下JSON对象。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

因为攻击者,即本例中的SneakySnake先生,已经弄清了属性和对象之间的关系,他可以重新发送他的原始请求,用以下字符串更新他的资料。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

由于端点容易受到大规模分配的影响,它接受新的输入为有效。我们的黑客不仅在他的个人资料中增加了几年,而且还为自己分配了管理权限。

消除大规模分配的漏洞

尽管在一些框架中使用质量赋值功能可能很方便,但如果你想保持你的API安全,你应该避免这样做。相反,解析请求值,而不是将它们直接绑定到一个对象。你也可以使用一个缩小的数据传输对象,这将提供几乎与直接绑定到对象本身相同的便利,只是没有相关的风险。

作为额外的预防措施,像上面例子中的管理权限这样的敏感属性可以被拒绝,这样它们就永远不会被服务器在API调用中接受。一个更好的主意可能是默认拒绝每一个属性,然后允许特定的、非敏感的属性,你希望用户能够更新或改变。做任何这些事情都可以帮助锁定API,并从你的环境中消除大量分配的漏洞。

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

目录

下载PDF文件
显示资源
您还有兴趣吗?

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

了解更多

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

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

开始所需的资源

其他投稿
资源中心

开始所需的资源

其他投稿