写点什么

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

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

关注

评论

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

HTML(四)——建立超链接

程序员的时光

html 程序员 28天写作

Orleans 知多少 | .NET分布式框架

dotnet actor orleans

项目管理变更之交付目标的变化

L3C老司机

Soul 学习笔记---使用 zookeeper 实现数据同步(六)

fightingting

Soul网关

数据倾斜?Spark 3.0 AQE专治各种不服

王知无

大数据 spark

基础不牢,地动山摇;自学进大厂的第18天!

Java架构师迁哥

Mybatis【13】-- Mybatis动态Sql标签的使用

秦怀杂货店

sql mybatis

基于Prometheus+Grafana打造企业级Flink监控系统

王知无

大数据 flink 监控

JVM的内存分代,这篇文章帮你理一理

Java鱼仔

Java 面试 JVM

Windows DHCP最佳实践(三)

BigYoung

windows Windows Server 2012 R2 DHCP

蔡超:这八点架构师感悟,真的很干货 | 大道至简

李忠良

28天写作

管理者掌握这5个提问技巧,秒变提问高手

一笑

团队管理 管理 团队建设 提问的艺术 28天写作

老龄化不可避免,灰犀牛是否可以成为黑天鹅?

JiangX

政策 28天写作 双循环 人口结构

Spring Boot 中使用拦截器

武哥聊编程

Java springboot SpringBoot 2 拦截器 28天写作

大数据知识专栏 - MapReduce的Combiner实现shuffle调优

小马哥

大数据 hadoop mapreduce 七日更

【并发编程的艺术】JAVA并发机制的底层原理

程序员架构进阶

Java 架构 并发编程 内存模型 28天写作

竟然输给了一款软件「幻想小说 13/28」

道伟

28天写作

Go中的SSRF攻防战

Gopher指北

安全 Go 语言

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

脑极体

重学JS | Web Workers让JS存在多线程环境

梁龙先森

编程 大前端 28天写作

HDFS杂谈:DFSAdmin Report解读

罗小龙

hadoop hdfs 28天写作 dfsadmin

LKA是如何实现的(28天写作 Day13/28)

mtfelix

自动驾驶 28天写作

存在即合理

lidaobing

比特币 28天写作

1000公里续航动力电池背后的迷雾与真相

脑极体

28天瞎写的第二百二十四天:食品专业的编程高手

树上

28天写作

Git学习【1】 -- 基本常用命令

秦怀杂货店

git GitHub

京东架构师分享的 Redis学习笔记手抄版;

Java架构师迁哥

HDFS中的常用压缩算法及区别

王知无

大数据 hdfs

soul数据同步(一)概述及websocket同步策略

xzy

Soul网关 soul

两层和三层网络架构差异

甲方日常 88

句子

工作 随笔杂谈 日常

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