博客

程序员征服安全 OWASP API 安全十大风险系列 - 大规模赋值

October 21, 2020
Matias Madou 博士

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

攻击者可以利用这种机制强制修改本不应由客户端更新的对象属性。这通常会导致业务层面的问题,例如用户为自己添加管理员权限,而非导致网站瘫痪或窃取商业机密。攻击者还必须了解对象之间的关系以及所攻击应用程序的业务逻辑。

然而,这并不会降低大规模赋值漏洞在精明且心怀恶意的用户手中的危险性。

在深入阅读完整指南之前,先来挑战一下我们的游戏化测试,看看你的表现如何:

攻击者如何利用大规模赋值漏洞?

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 培训平台,以保持您的网络安全技能精进且与时俱进。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。