写点什么

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

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

关注

评论

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

广州站 | 云原生 Serverless 技术实践营精彩回顾

阿里巴巴云原生

阿里云 Serverless 云原生 线下活动

腾讯新闻基于 Flink PipeLine 模式的实践

腾讯云大数据

flink pipeline 流计算 Oceanus

你还在一个挨一个的删除镜像文件吗?

liuzhen007

28天写作 12月日更

对上管理

张老蔫

28天写作

1-10聚合架构第十一讲:不服?那得治!

钰湚—付晓岩

架构实战营模块二作业

Evan

Thanos 架构剖析(四)数据存储和运维工具

耳东@Erdong

store tools Thanos 签约计划第二季

Go 语言快速入门指南:第四篇 与数据为舞之数组

宇宙之一粟

数组 签约计划第二季 12月日更

和12岁小同志搞创客开发:手撕代码,做一款遥控灯

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

重学计算机组成原理(4)-还记得纸带编程吗?

JavaEdge

12月日更

聊天与学习

将军-技术演讲力教练

45 K8S之系统扩展CRD/自定义API Server

穿过生命散发芬芳

k8s 28天写作 12月日更

学习源码整体架构系列 | 前端

若川

内容合集 签约计划第二季 技术专题合集

【Spring Boot 快速入门】七、Spring Boot集成RabbitMQ

小阿杰

RabbitMQ SpringBoot 2 内容合集 签约计划第二季

Thanos 架构剖析(二)统一的查询入口

耳东@Erdong

Thanos query 签约计划第二季 Query Frontend

和12岁小同志搞创客开发:手撕代码,做一款数字骰子

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

【Spring Boot 快速入门】六、Spring Boot集成Redis

小阿杰

redis SpringBoot 2 内容合集 签约计划第二季

Thanos 架构剖析(三)如何选择 Sidecar 和 Receiver

耳东@Erdong

Thanos 签约计划第二季 Sidecar Receiver

拆解&组合

圣迪

数据 创新 组合 拆解 要素

Volatile 原理七:volatile都不保证原子性,为啥我们还要用它

悟空聊架构

volatile 原子性 28天写作 悟空聊架构 12月日更

Go 语言快速入门指南 【专题合集】

宇宙之一粟

Go 内容合集 签约计划第二季 技术专题合集

Thanos 架构剖析(五)历史数据怎么办

耳东@Erdong

Thanos 签约计划第二季 compactor

创业研发团队的氛围营造

wood

创业 管理 28天写作

阿里云 FaaS 架构设计与创新实践

阿里巴巴云原生

阿里云 Serverless 云原生 Faas

Python Qt GUI设计:窗口之间数据传递(拓展篇—5)

不脱发的程序猿

Python qt PyQt GUI设计 窗口之间数据传递

Go 语言快速入门指南:第五篇 与数据为舞之切片

宇宙之一粟

golang slices 切片 签约计划第二季 12月日更

Hystrix

李子捌

微服务 28天写作 12月日更

Thanos 架构剖析(六)告警规则如何管理

耳东@Erdong

Thanos 签约计划第二季 Rule

Go 语言快速入门指南:第三篇 流程控制

宇宙之一粟

for 流程控制 swith 签约计划第二季 if语句

神工鬼斧惟肖惟妙,M1 mac系统深度学习框架Pytorch的二次元动漫动画风格迁移滤镜AnimeGANv2+Ffmpeg(图片+视频)快速实践

刘悦的技术博客

人工智能 机器学习 深度学习 PyTorch 图像处理

模块2作业

miliving

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