写点什么

GitHub 遭遇 Mass Assignment 漏洞攻击

  • 2012-03-19
  • 本文字数:728 字

    阅读完需:约 2 分钟

GitHub 最近遭遇了一场 Ruby on Rails 漏洞攻击,该漏洞被称为 mass assignment。此漏洞被认为不仅影响了大量基于 Ruby 的网站,还对使用 ASP.NET MVC 和其他 ORM Web 框架的网站造成了破坏。

Mass assignment 用于将表单数据映射为对象,它在单独使用时是一项安全且高效的技术。这与 ASP.NET 中的数据绑定异曲同工,并且后者在单独使用时也同样很安全。其实,真正的漏洞是由于粗心大意地混用了 mass assignment 和 ORM。

考虑这样的场景:数据库包含一张“用户”表,其中混杂了敏感和非敏感数据,例如可能有些列代表用户显示姓名、电子邮件地址以及是否为管理员。开发人员希望创建一个页面修改显示姓名及电子邮件地址。为了达到这个目的,他们使用 Rails 或 MVC 脚手架自动生成了域对象,或许还有 view 本身。接下去,他们将用户无法编辑的字段,如“是否为管理员”复选框从 view 中移除。

如果开发人员忘记将 IsAdministrator 属性从域对象中移除,那么一个安全漏洞便就此产生。如果他们没有进行移除,那么 mass assignment 或数据绑定器可能会陷入某种圈套,它们会在合法改动中更新不该修改的属性。接下去,当记录保存时,ORM 库会悄无声息地存储新值。

有三种靠谱的方案可以解决该问题:

  • 标记不可被更新的属性,让 mass assignment/ 数据绑定器将其忽略;
  • 彻底清除业务对象中实际不需要的属性;
  • 创建模型专门接受更新请求,并手工将它们映射到 ORM 对象或存储过程调用。

应当指出,这并不是一个新的漏洞。我们可以很容易地找出 4、5 年前关于mass assignment 的警告,例如标题为“ Mass Assignment,黑客们的最爱”以及“不想被黑就使用attr_protected ”的文章。这次唯一不同的是受害站点知名度较高。

查看英文原文: http://www.infoq.com/news/2012/03/GitHub-Compromised

2012-03-19 08:422581
用户头像

发布了 125 篇内容, 共 40.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

低代码为什么需要专业代码

牛刀专业低代码

好的索引当然是要覆盖了!

江南一点雨

MySQL 数据库

一顿饭的事儿,搞懂了Linux5种IO模型

Java你猿哥

Java Linux 后端 ssm io

数字人是否能成为企业智能化的门户?

Onegun

人工智能 数字人

面对本地缓存和分布式缓存,我们该如何选择?

HTAP for MySQL 在腾讯云数据库的演进

NineData

MySQL 腾讯云 NineData HTAP for MySQL 2023云数据库技术沙龙

项目终于用上了 DDD 领域驱动,太强了!

Java 架构 DDD

精品!阿里P8爆款《SpringBoot+vue全栈开发实战项目》笔记太香了

Java 架构 Spring Boot Vue 前后端分离

一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器 | 京东云技术团队

京东科技开发者

Spring Boot 处理器 企业号 5 月 PK 榜 Graceful Response web接口开发

ElasticSearch中文分词和模糊查询

北桥苏

php elasticsearch thinkphp

ThottleStop 软件的应用场景

汪子熙

cpu intel 三周年连更

主网NFT铸造交易商城dapp系统开发搭建

开发v-hkkf5566

美团太细了!HashMap可以存null,ConcurrentHashMap不可以为什么

Java你猿哥

Java hashmap ssm

技术领先、“忠”于业务,用友走出多维数据库的价值之路

用友BIP

Django-Vue-Admin基于django+vue前后端分离开箱即用框架

巨梦科技

django Vue

最具有中国特色的微服务组件!阿里新一代SpringCloud学习指南

Java 架构 微服务 Spring Cloud spring cloud alibaba

代码注释的艺术,优秀代码真的不需要注释吗?

阿里技术

代码注释

被 ChatGPT 点燃的向量数据库们

Bytebase

人工智能 数据库 openai AIGC ChatGPT

深入理解 MySQL 索引底层数据结构

Java你猿哥

Java MySQL 算法 ssm sql

鬼知道我经历什么,从Java外包到了阿里P7,没想到我也有今天

Java你猿哥

Java Spring Boot JVM java面试 Java八股文

面对职业焦虑,我们能做些什么?| 社区征文

三掌柜

三周年征文

mosn基于延迟负载均衡算法 -- 走得更快,期待走得更稳

Java你猿哥

Java 负载均衡 ssm 架构师

不同设备如何统一语言编程平台高效开发?本文为你揭秘

HarmonyOS开发者

HarmonyOS

阿里Dubbo技术负责人准备的源码教程,很有大厂风格

Java dubbo

发布会实录|悠易科技CTO李旸:洞察新引擎 品牌新增长

游读分享

LinkFlow发布会实录|食品饮料品牌洞察应用实践分享

游读分享

KubeEdge在边缘计算领域的安全防护及洞察

华为云开发者联盟

开源 边缘计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

从零开始打造一款基于SpringBoot+SpringCloud的后台权限管理系统

Java Spring Cloud Spring Boot 权限管理

华为研究院19级研究员几年心得终成趣谈网络协议文档,附大牛讲解

Java 计算机网络 网络协议

真香!阿里P8微服务实战心得首次公开,涵盖架构设计所有知识点

Java你猿哥

Java 架构 微服务架构 架构设计 架构师

精准测试之过程与实践 | 京东云技术团队

京东科技开发者

精准测试 质量保障 企业号 5 月 PK 榜

GitHub遭遇Mass Assignment漏洞攻击_Ruby_Jonathan Allen_InfoQ精选文章