BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

GitHub遭遇Mass Assignment漏洞攻击

| 作者 Jonathan Allen 关注 595 他的粉丝 ,译者 曹如进 关注 0 他的粉丝 发布于 2012年3月20日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT