写点什么

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:422506
用户头像

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

关注

评论

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

SharePoint 往事之:使用Bootstrap定制SharePoint网站页面

手艺人杨柳

SharePoint

docker-mcr 助您全速下载 dotnet 镜像

newbe36524

Docker netcore

week02 作业

Geek_196d0f

第二周作业

证明谁才是第一

依赖倒置 接口隔离原则

第二周学习总结

赵龙

依赖倒置原则

Z冰红茶

架构师训练营第二周感悟

张锐

极客大学架构师训练营

Week 02 学习总结 框架 设计原则

Z冰红茶

架构师训练营:第二周 作业

Bruce Xiong

架构师训练营第二周作业(1)

烟雨濛濛

【架构师训练营】第2周作业

花生无翼

极客大学架构师训练营

第二周作业

赵龙

面向对象设计原则课后作业

周冬辉

手撕设计原则:接口隔离

JefferLiu

面向对象 架构师 面向对象设计 面向对象设计原则

架构师训练营:第二周学习总结

Bruce Xiong

架构师训练营第二周作业(2)

烟雨濛濛

架构师训练营第二周作业

olderwei

极客大学架构师训练营

架构师训练营第二周总结

olderwei

区块链在农业领域能有什么用武之地?

CECBC

区块链技术 上链 农业链 三农

依赖倒置及Cache重构设计

架构5班杨娟Jessie

极客大学架构师训练营

Spring中依赖倒置原则的理解

极客李

软件设计原理

证明谁才是第一

专栏

2020/6/16 架构学习心得

架构5班杨娟Jessie

极客大学架构师训练营

重拾依赖倒置原则(训练营第二课)

看山是山

oop 极客大学架构师训练营 依赖倒置原则 DIP

week02 小结

Geek_196d0f

架构师训练营第二周作业

张锐

极客大学 极客大学架构师训练营

极客时间架构课 Week02- 作业一:命题作业

yulyulcl

架构师实现自己架构目标工具手段-软件设计

WulalaOlala

极客大学架构师训练营

北京疫情反弹 区块链怎样破解食品溯源难题?

CECBC

区块链技术 商品溯源 上链

架构师训练营第二周作业

子豪sirius

架构师训练营第0期第二周作业

无名氏

依赖倒置原则 DIP 依赖反转原则

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