写点什么

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

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

关注

评论

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

Go- for循环

HelloBug

for Go 语言

Agora 教程丨一个典型案例,教你如何使用水晶球“数据洞察”

声网

Agora 教程 水晶球

云与AI真的能互相成就?还是最好各自独立行走?

脑极体

【漏洞分析】远程命令执行漏洞总结

网络安全学海

网络安全 信息安全 网络 渗透测试 安全漏洞

不少同学想要放弃秋招了........

今晚早点睡

程序员 秋招

再也不怕 JavaScript 报错了,怎么看怎么处理都在这

前端依依

学习 技术 大前端 js

适女化科技(一):伪需求,真消费

脑极体

最好用的 Angular 甘特图组件 ngx-gantt

PingCode研发中心

软件 工具 甘特图 ngx-gantt

Go- goto和label

HelloBug

Go 语言 goto label

程序员作图工具和技巧,你 get 了么?

程序员鱼皮

Java 大前端 后端 架构设计 代码

获取 NodeJS 程序退出码

编程三昧

node.js Node 8月日更

Python代码阅读(第16篇):列表求差集

Felix

Python 编程 Code Programing 阅读代码

Socket 通信原理

一个大红包

8月日更

半监督学习概述(二)

Databri_AI

学习 深度半监督

干货!DataPipeline2021数据管理与创新大会全篇划重点

DataPipeline数见科技

大数据 数据融合 数据管理

Go- break和continue

HelloBug

Go 语言 break continue

Alibaba史上最牛的分布式核心原理解析全彩手册开源!称霸GitHub

Java~~~

Java 架构 面试 分布式 微服务

暴力美学,拒绝平庸,Alibab开源内部神仙级“K8S核心笔记”下载

Java~~~

Java 架构 面试 微服务 k8s

教你一招疯狂拿Offer!用微服务设计一个超大型分布式电商平台

Java~~~

Java 架构 面试 Spring Cloud 架构师

阿里新产!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

Java~~~

Java spring 架构 面试 Spring Cloud

跨团队项目的集成测试实践分享

PingCode研发中心

软件测试 测试

Vue进阶(五十九):ES数组操作:splice() 实现数组删除、替换、增加指定元素

No Silver Bullet

Vue 8月日更 splice

docker概念很乱?俺来替你理一下!

Java Docker 架构 后端

重构你的css吧!(初看)

云小梦

CSS bem elementUI scss ITCSS

阿里巴巴最新产物!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

Java spring 程序员 架构 后端

☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

洛神灬殇

Java 编译器 技术栈 8月日更

项目进度经常超时怎么办?项目经理如何有效管理项目进度?

优秀

项目管理工具

火爆 GitHub!这个图像分割神器开源了

百度开发者中心

人工智能 开源 最佳实践 图像

Go- 函数返回值

HelloBug

函数 返回值 Go 语言

Go- switch-case结构

HelloBug

Go 语言 switch case

小说类公众号如何运营:先要满足特定读者人群

石头IT视角

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