写点什么

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

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

关注

评论

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

“不知今夕是何年”的周基年解法|得物技术

得物技术

Java 程序员 前端 后端 企业号 4 月 PK 榜

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

股市老人

跨界创新,数字赋能:探索低代码平台的多元化应用场景

优秀

低代码 低代码开发平台 低代码平台 低代码应用场景

10分钟带你了解 Linux 系统中的 Top 命令

霍格沃兹测试开发学社

昇思之路,从AI基础软件到生态繁花

脑极体

AI

Penpad Season 2 质押突破350ETH,参与可获Scroll生态空投

石头财经

劳动力规划:对企业加速运营的未来展望

智达方通

企业管理 企业转型 全面预算管理 劳动力规划

Octavia Venture 成立,打造数十亿美元规模的 AI 价值体系

股市老人

Python的流程控制,你真的会了吗?(一)

霍格沃兹测试开发学社

被 AI 写的游戏代码砸中是什么感觉 | 10 分钟打造你的超级 AI 编码助手

阿里云云效

阿里云 云原生 通义灵码

解密通义灵码:软件研发工具的“大脑”

阿里云云效

阿里云 云原生 通义灵码

谈谈我对 AIGC 趋势下软件工程重塑的理解

阿里云云效

阿里云 云原生 AIGC 通义灵码

微调工程师岗位可能并不存在,但使用 AI 编码工具已经成为刚需

阿里云云效

阿里云 云原生 AIGC 通义灵码

ShowMeBug李亚飞:IDE与AI自动编程技术将增强超级程序员

B Impact

无需注册即可使用 ChatGPT;Poe 创始人:大模型幻觉是创业公司的机会丨RTE 开发者日报 Vol.176

声网

我们是如何测试人工智能的(一)基础效果篇(内含大模型的测试内容)

测吧(北京)科技有限公司

Golang数据库事务实践

俞凡

golang

一张二维码VS一个行李箱?!看华为云时习知如何助力防城港核电基本安全考试

平平无奇爱好科技

聚道云助IT公司破解数据同步难,高效转型新利器!

聚道云软件连接器

案例分享

聚道云软件连接器:助力企业财务效率提升的成功案例

聚道云软件连接器

案例分享

Flutter应用在苹果商店上架前的准备工作与注意事项

Java 的诞生——从 Oak 到 Java

胡译胡说

Java 历史

Flink Checkpoint 状态后端详解:类型、特性对比及场景化选型指南

木南曌

flink 实时计算

SQLite的第一版不过是在GDBM上套了个壳

胡译胡说

sqlite 数据库 历史 KV存储

Octavia Venture 成立,打造数十亿美元规模的 AI 价值体系

股市老人

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

股市老人

C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

BlockChain先知

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