Abstract:
 
Channel.java 中的类既是数据库持久实体,又是动态绑定请求对象。如果允许使用请求参数自动填充数据库持久实体,攻击者将能够在关联实体中创建计划外的数据库记录,或者更新实体对象中的计划外字段。
 
 
Explanation:
 
持久对象通常绑定到底层数据库,并由持久性框架(如 Hibernate 或 JPA)自动更新。如果允许这些对象自动绑定到 Spring MVC 的请求,攻击者将能够通过提供附加的请求参数向数据库中注入非预期的值。
例 1:Order、Customer 和 Profile 都是 Hibernate 持久类。
 
public class Order {
            String ordered;
            List lineItems;
            Customer cust;
...
} public class Customer {            String customerId;
            ...
    Profile p;
...
} public class Profile {     String profileId;             String username;            String password;
            ...
}
 
OrderController 是处理该请求的 Spring 控制器类:
 
@Controller
public class OrderController {
...
            @RequestMapping("/updateOrder")       public String updateOrder(Order order) {
                        ...
                        session.save(order);
            }
}
 
因为命令类会自动绑定到该请求,所以利用这一漏洞,攻击者可以通过在该请求中添加如下请求参数来更新其他用户的密码:"http://www.yourcorp.com/webApp/updateOrder?order.customer.profile.profileId=1234&order.customer.profile.password=urpowned"
 
 
 
Instance ID: B662F07294A63FAB5003A902EE57D350
 
Priority Metadata Values:
 
            IMPACT: 3.0
 
            LIKELIHOOD: 3.2
 
Legacy Priority Metadata Values:
 
            SEVERITY: 3.0
 
            CONFIDENCE: 5.0
 
 
Remediation Effort: 3.0
 
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
 
Recommendations:
 
请不要使用持久实体对象作为请求绑定对象。应手动将请求绑定对象中需要持久保留的属性复制到持久实体对象。或者,应明确定义请求绑定对象中可以通过请求参数设置的属性。
 
 
References:
 
[1] Ryan Berg and Dinis Cruz, Two Security Vulnerabilities in the Spring Framework's MVC, 2008, http://o2platform.files.wordpress.com/2011/07/ounce_springframework_vulnerabilities.pdf
 
[2] Standards Mapping - Common Weakness Enumeration, CWE ID 915
 
[3] Standards Mapping - NIST Special Publication 800-53 Revision 4, SI-10 Information Input Validation (P1)
 
[4] Standards Mapping - OWASP Mobile Top 10 Risks 2014, M1 Weak Server Side Controls
 
[5] Standards Mapping - OWASP Top 10 2004, A1 Unvalidated Input
 
[6] Standards Mapping - OWASP Top 10 2007, A4 Insecure Direct Object Reference
 
[7] Standards Mapping - OWASP Top 10 2010, A4 Insecure Direct Object References
 
[8] Standards Mapping - OWASP Top 10 2013, A4 Insecure Direct Object References
 
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1, Requirement 6.5.6
 
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2, Requirement 6.5.2
 
[11] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0, Requirement 6.5.1
 
[12] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0, Requirement 6.5.1
 
[13] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1, Requirement 6.5.8
 
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2, Requirement 6.5.8
 
[15] Standards Mapping - Security Technical Implementation Guide Version 4.1, APSC-DV-002150 CAT II, APSC-DV-002560 CAT I
 
[16] Standards Mapping - Web Application Security Consortium Version 2.00, Abuse of Functionality (WASC-42)
 
 
 

Mass Assignment:Request Parameters Bound into Persisted Objects 质量分配:请求绑定到持久对象中的参数的更多相关文章

  1. 如何将Request对象中的参数列表打印出来

    Map<String, String[]> map = request.getParameterMap(); Set<Map.Entry<String, String[]> ...

  2. Parameter Passing / Request Parameters in JSF 2.0 (转)

    This Blog is a compilation of various methods of passing Request Parameters in JSF (2.0 +) (1)  f:vi ...

  3. 【Asp.Net MVC】Avoid Mass Assignment in ASP.NET MVC

    Mass Assignment Vulnerability in ASP.NET MVC: http://freshbrewedcode.com/joshbush/2012/03/05/mass-as ...

  4. More than the maximum number of request parameters

    前些时间,我们的的一个管理系统出现了点问题,原本运行的好好的功能,业务方突然讲不行了,那个应用已经运行了好多年了,并且对应的代码最近谁也没改动过,好奇怪的问题,为了解决此问题,我们查看了日志,发现请求 ...

  5. Atitit GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”

    Atitit GRASP(General Responsibility Assignment Software Patterns),中文名称为"通用职责分配软件模式" 1. GRA ...

  6. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  7. JAVA 如何把request请求的参数,快速放到model对象中

    因为项目需要,需要从request中读取大量的参数. 因为本人过懒,所以写了个方法把request参数,直接放到对应的类中. 参数 String str="aa,bb,cc"; P ...

  8. java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)

    interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ...

  9. 检测到有潜在危险的 Request.Form 值。 说明: ASP.NET 在请求中检测到包含潜在危险的数据

    在请求方法的顶部添加        [ValidateInput(false)]就OK了 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Reques ...

随机推荐

  1. 一张图讲解单机FastDFS图片服务器安装步骤(修订版)

    前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...

  2. Block-wise 2D kernel PCA/LDA for face recognition-笔记

    In the present work, we propose a framework for kernel-based 2D feature extraction algorithms tailor ...

  3. 对于web前端的理解

    对于web前端的理解 其实写这篇文章的首要目的是为了准备一道面试题——你对前端的看法是什么?本文不会仅从技术角度去考虑这个问题,还会依据这个社会的变革去讨论这个问题.本文仅代表个人观点,不喜勿喷. W ...

  4. 【灵魂拷问】你真的懂得Mysql的管理和使用吗?

    作者 | Jeskson 来源 | 达达前端小酒馆 MySQL管理,数据库管理和数据表管理,用户管理. 初始化数据库,创建数据库,查看数据库,删除数据库. 创建数据表,查看数据表,修改数据表,删除数据 ...

  5. SQL追踪器的安装和使用

    SQL追踪器主要作用快速查出错误SQL语言.此工具能几秒钟追踪出sql 数据库操作,能几分钟内分析任意项目系统数据库表结构,瞬间无刷新测试.调试 php代码 第一步:下载 https://pan.ba ...

  6. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  7. 阿里巴巴的 Kubernetes 应用管理实践经验与教训

    作者 | 孙健波(天元)  阿里巴巴技术专家 导读:本文整理自孙健波在 ArchSummit 大会 2019 北京站演讲稿记录.首先介绍了阿里巴巴基于 Kubernetes 项目进行大规模应用实践过程 ...

  8. springboot+mybatis sql 打印在控制台

    第一种方法 在mybatis文件夹下新建mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ? ...

  9. luogu P2704 [NOI2001]炮兵阵地

    题目描述 司令部的将军们打算在NM的网格地图上部署他们的炮兵部队.一个NM的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P" ...

  10. ios开发入门- WebView使用

    转自:http://mahaile.blog.51cto.com/2891586/1021515/ 目标 : webview使用 在一些移动app中,有时程序会载入 外表的html 界面, andro ...