MongoDB 远程命令执行漏洞:噩梦还是开眼?

oschina
 oschina
发布于 2013年03月28日
收藏 10

3月24日公开披露的 MongoDB 零日漏洞 (CVE-2013-1892) 已经引起了人们的关注,IT 安全和开发人员已经开始在热议这个话题。为什么这个问题会引起关注,我们认为主要原因有 3 点:

  1. 一些开发者认为类似 MongoDB 这样的 NoSQL 数据库要比关系型数据库更加安全,因为不存在 SQL 注入问题
  2. MongoDB 的使用人数在不断的增长,越来越多的人认为它是 NoSQL 数据库的领跑者
  3. 披露的漏洞影响非常之大,而且漏洞可利用来做很多破坏性的攻击,该漏洞被披露出来几天就已经有人发布攻击脚本

关于这个问题给开发者和架构师带来最大的教训是:out-of-sight/out-of-mind 特性是此漏洞的根本原因:如果它不是一个文档,那么就不应该被访问!

而通用和强大的接口(如nativeHelper接口)就像是野兽。不管你多么自信你可以驯服它,但有被咬的时候。保护你自己的唯一方法就是将它们锁起来,除非需要的时候否则不予接触。

需要指出的是我们在二月份讨论过的 Rails YAML vulnerability 有着非常相似的原因,因为默认可以访问通用而强大的接口。

从另外一方面来说,该接口可能导致的代码执行问题由来已久,可能因为没有一个概念验证连接到它,因此没引起注意。有人可能要问还有多少没有被暴露出来的潜在问题,如果这些问题被黑客利用会导致什么严重的后果。

译者注:eye opener 是“令人惊异的” 的意思,但我发现直译更能非常形象的表达这个词的意思。

via sdelements

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:MongoDB 远程命令执行漏洞:噩梦还是开眼?
加载中

最新评论(12

七液
七液

引用来自“我土鳖”的评论

引用来自“walden”的评论

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子

比如说用scanf,里面有个%s,然后我传进去一票东西把栈干爆……

输入攻击很少出现scanf很少有人用这个函数,xxxprintf这类输出字符串攻击才多,strcpy很少有人过滤,恶意的shellcode和覆盖也可以很容易攻击,而且这类漏洞有许多都可以用fuzz以非常低廉的成本测试出来,flash,word,excel这类第三方软件的漏洞危害性更大(系统不会自动打第三方补丁,而且大部分人都用老版本也不太关注这个,甚至现在还有利用宏病毒技术干活的)
南漂大洋洲_Syd
南漂大洋洲_Syd
微软M$总是想污染好的技术,以前污染java,现在污染javascript
七液
七液

引用来自“walden”的评论

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子

栗子不好找呀,等买来了我举个栗子截图给你看。
可以参考<<0day安全:软件漏洞分析技术>>大部分漏洞都是由于参数不严格造成的。有人做过统计70%的漏洞由于I\O错误造成的,平时出现最多的strcpy复制数据没有界限,sprintf(这些类似函数)造成的缓冲区溢出,还有输入参数只是进行简单的非NULL判断,windows,linux后来的内核溢出漏洞几乎都是参数过滤不严格造成的,linux下那种任意地址可读写漏洞就更多了(你可以写了就可以覆盖代码,就可以干更多猥琐的事情了)DOS(攻击后就死机崩溃)就更多更多了.找一下相关的0day漏洞挖掘的资料看一下就知道了.
walden
walden
嗯 见识了
我土鳖

引用来自“walden”的评论

引用来自“我土鳖”的评论

引用来自“walden”的评论

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子

比如说用scanf,里面有个%s,然后我传进去一票东西把栈干爆……

后果是什么 我回去试试

栈溢出覆盖返回地址形成攻击啊。
walden
walden

引用来自“我土鳖”的评论

引用来自“walden”的评论

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子

比如说用scanf,里面有个%s,然后我传进去一票东西把栈干爆……

后果是什么 我回去试试
王阿觉
王阿觉
开天眼
我土鳖

引用来自“walden”的评论

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子

比如说用scanf,里面有个%s,然后我传进去一票东西把栈干爆……
walden
walden

引用来自“七液”的评论

只要过滤不严格什么都可以产生“注入攻击”的,
比如函数参数过滤不严格造成栈溢出,也可以算是一种“注入攻击”。没有绝对安全的系统,就和linux一样,只要是系统都有对应的攻击方法,如果没有,那只能说暂时没发现。

参数过滤不严格造成栈溢出 七夜兄能不能举个栗子
巢鹏
巢鹏
呵呵 我的memcached都试过被空格攻击。。。
返回顶部
顶部