cwe - 915:不当控制动态确定对象属性的修改
 描述
产品从一个上游组件接收输入指定多个属性,属性,或字段初始化或更新的对象,但这并不正确控制哪些属性可以修改。
 扩展描述
如果对象包含属性,只供内部使用,那么他们意想不到的修改可能会导致一个漏洞。
这个弱点有时被成为可能的特定于语言的机制,如大规模作业,autobinding或对象注入。
 替代条款
质量的任务: |
“大规模作业”的名字是Ruby on Rails的一个功能,允许同时修改多个对象属性。 |
AutoBinding: |
“Autobinding”项中使用框架如Spring MVC和ASP。净MVC。 |
PHP对象注入: |
一些PHP应用程序研究人员使用这个术语来攻击不安全使用unserialize()函数,但是它也可以用于 cwe - 502。 |
 的关系
 模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
 常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
完整性
|
攻击者可以修改敏感数据或程序变量。 |
|
完整性
|
|
|
其他 完整性
|
|
|
 观察到的例子
参考 |
描述 |
|
质量分配允许任意使用修改URL属性的修改。 |
|
源代码版本控制产品允许修改使用质量值得信赖的关键任务。 |
|
攻击者可以绕过付款介入电子商务产品。 |
|
使用PHP unserialize函数不受信任的输入允许攻击者修改应用程序配置。 |
|
使用PHP unserialize函数不受信任的输入的内容管理系统可能允许代码执行。 |
|
使用PHP unserialize函数不受信任的输入内容管理系统允许代码执行使用一个精心制作的饼干的价值。 |
|
用PHP编写的内容管理系统允许非系列化的任意对象,可能允许代码执行。 |
|
用PHP编写的内容管理系统允许通过页面评论代码执行。 |
|
使用cookie的PHP unserialize函数值允许远程代码执行或上传任意文件。 |
|
内容管理系统编写的Python解释不可信的数据,泡菜,允许代码执行。 |
|
Python脚本允许本地用户通过腌数据执行代码。 |
|
Python脚本允许远程攻击者使用pickle对象执行任意代码。 |
|
Ruby on Rails允许不可信的YAML的反序列化执行任意代码。 |
|
Spring框架允许反序列化的对象不可信来源执行任意代码。 |
|
Grails允许绑定任意参数的修改任意对象属性。 |
|
不正确的反序列化在web浏览器允许逃离沙箱。 |
|
媒体库允许反序列化对象的不可信的Java applet,导致执行任意代码。 |
 潜在的缓解措施
实施阶段:
如果可用,使用语言或框架的特点,使规范allowlists的属性或字段,可以被修改。如果可能的话,喜欢allowlists denylists。
与Ruby on Rails编写的应用程序,使用attr_accessible (allowlist)或attr_protected (denylist)宏在每个类,可用于大规模作业。
|
阶段:体系结构和设计;实现
如果可用,使用编程语言的签字/密封特性以确保反序列化数据没有被污染。例如,一个基于散列的消息验证码(HMAC)可以用来确保数据没有被修改。 |
实施阶段:
对于任何externally-influenced输入,检查内部对象的输入对一个allowlist属性或字段,可以被修改。 |
阶段:实施;架构和设计
重构代码,这样对象属性或字段不需要动态识别,只有暴露目标属性的getter / setter功能。 |
 弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
 会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
 笔记
 引用
|