063 文档数据库的缔造者MongoDB(下) 鉴于10gen公司改名叫MongoDB了,这篇文章里我们统一称为MongoDB公司。上回说到MongoDB公司的发展策略是尽善尽美地提供良好的使用体验,而对于产品功能本身,则是哪怕不成熟也先推出来再说。这种策略的好处是让这个数据库很快地流行开来,坏处是用户用久了各种问题层出不穷,苦不堪言,用户甚至跳出来公开说“不要用MongoDB”。

MongoDB作为一个不成熟的产品,在2016年的时候终于曝出了一个非常严重的事件:MongoDB的安全门事件。任何一个国家的任何一个计算机产品,如果出现了安全相关的事件,对产品的影响都可能是致命的。

这个事件是安全界大牛维克托 · 格弗斯(Victor Gevers)在2016年底发现的,并于2017年初开始广为人知。做这个事情的黑客组织(HaRak1r1)把MongoDB的数据给删除了,然后留下一个叫作WARNING的数据库,里面的主要内容是说:给我们送0.2比特币到某个收费的地址,然后给我们发邮件([email protected])告诉我们你的IP地址,这样你就能够把丢失的数据拿回来。

大概是这个事情被到处报道,闹得沸沸扬扬的,而这个黑客组织又怕暴露在聚光灯下,在两天紧锣密鼓地攻击了大概8500个不同的MongoDB以后,这个黑客组织收手了。

然而架不住“撑死胆大的,饿死胆小的”,黑客后浪推前浪,前浪虽然死在了沙滩上,后浪仍接踵而来,own3d马上就开始继续搞事,而且收费涨到了半个比特币,一下涨了好几倍。这之后,阿猫阿狗的黑客组织鱼龙混杂地展开攻击,开始删除各种MongoDB的数据。事情到这个地步,问题已经扩大化了。

那么,到底是什么导致了这个问题呢?为什么有那么多人的MongoDB在“裸奔”呢?这个问题非常有意思,而国外早有好事者在研究。

简单来说,MongoDB从一开始就不是一个安全的系统。MongoDB的早期版本一直都默认侦听0.0.0.0这个外网地址,但如果有基本的安全常识,都应该知道默认配置要放到内网地址127.0.0.1。

这个问题在2011年11月就有用户汇报给了MongoDB,有兴趣的可以查Jira上的Server-4216。很有意思的是,在这个汇报的问题中,MongoDB公司CTO在2012年还回复说,如果我们修了这个BUG,就会影响到以前的安装的行为。如此严重的BUG在MongoDB中,又是什么时候修复的呢?2014年。

近三年的时间里,这个BUG的优先级居然只有P2级别。一般软件公司遇到这种安全问题,给的等级多半都是P0级别。当我亲自去查看这个BUG的详情时,一种恐惧感油然而生。MongoDB的人,难道基本的安全常识都没有吗?

做个对比来看,传统的数据库,不管是商用的Oracle、SQL Server,还是开源的PostgreSQL、MySQL,默认的设置都有用户名和密码,都会监听在内网上。我们不能说这就特别安全,但起码默认的设置还是合情合理的。MongoDB倒好,默认的设置是在外网上“裸奔”。我也不知道这个事情为什么长久未被解决。

根据不完全统计,这次全球暴露在黑客眼皮子底下,没有任何安全防范措施的数据近600 TB。当然,这个数字还可能更大。这件事让我们看到了,一个产品如果做得非常好用,但是该花力气的地方却没花,可能造成的破坏力到底有多大。

MongoDB的这次安全门事件,也引发了一些人一直以来就有的顾虑。在印度,政府对MongoDB一直就持怀疑态度,觉得这个软件不安全,其主要理由是MongoDB的投资机构里面有一家叫作In-Q-Tel的风险投资公司。这家公司在创投圈里很有名,可能不被普通群众熟知,但是其背后的老板,那可是无人不知无人不晓的CIA。

一家接受了CIA这个美国情报机构作为老板的风险投资公司,它开发的软件到底安全性有多高,是不是有后门,有没有搞鬼,基本上是件说不清楚的问题。这次大规模的数据泄露“裸奔”事件,和产品可能既有的漏洞是不是有关系,更是谁也说不清楚的事情了。

可以说,在我见过的数据库产品中,这是第一个犯下如此常识性数据安全错误的。那么,一家企业会想让自己的数据“裸奔”于互联网,被黑客删除问你要比特币吗?如果你不想面临这样的境况,那就得仔细斟酌一下要不要使用MongoDB了。

当然,MongoDB的新版里这个问题早就修复了。只是很多人,尤其是政府部门,对于这个接了CIA投资的公司,始终都保持了一些警惕的态度。我并没有看到中国对这家公司和这个产品的担心,但是印度已经有了这样的担心。这种担心是杞人忧天,还是确有必要呢?

2017年下半年,震撼整个IT圈的事情莫过于MongoDB开始准备材料要上市了。具体上市的时间可能不是今年底,就是明年初。MongoDB这一路走来,终于走向上市的道路,这的确是一件可喜可贺的事。

小道消息传来,有人采访MongoDB的领导,领导当然是一副天机不可泄露的样子。今年9月份在慕尼黑参加数据库领域的顶级会议VLDB时,我还和MongoDB的人聊天,问他们对公司即将上市是怎么看的。

对方的第一反应当然是环顾左右而言它,不想讨论这个话题。于是我说,要不我们就假设要上市吧,那么上市以后对你们有什么改变呢?当然,改变最大的就有辛辛苦苦那么久,终于要赚到钱了。

在北美市场上创业公司不计其数,能够最后走到上市的却百不存一。顺利地上市,无疑是对MongoDB这个产品的最大肯定。投资人终于有了回报,员工和创始人终于可以从此财务自由、衣食无忧了。上市,对于很多人来说是人生的新起点;对很多公司来说,也是发展的里程碑。

这条上市路,不知道MongoDB会怎样走下去,市场上对于MongoDB的热情毕竟没有当初那样热烈了。然而即使热度降低以后,MongoDB依然是全球市场上占有率最高的数据库之一。MongoDB“容易上手”的特性,决定了它在初创公司里占据特殊的地位,更何况很多公司还拿它来跑更重要的非初创产品呢。

但是我们也应该承认,即使到今天,MongoDB刨去“易用性”,在很多方面仍然存在很多这样那样的问题。MongoDB公司赚钱的途径也有一些,但是离盈利却还比较遥远。虽然大家都知道创业公司一般都要烧钱很多年。

MongoDB一路走来并即将上市,这也是一个成功的故事了。而从10gen发展至今,它在开发出MongoDB这个产品之后所采取的一系列开发和商业运作措施,和很多同时代、同类型的公司相比有着鲜明的特点。2017年初的这次大规模安全事件,则是一个非常值得你我思考的严肃事件。

关于MongoDB的故事讲完了,MongoDB上市的消息也已被证实。但不知道你又会如何看待MongoDB的这次安全门事件,以及MongoDB的投资机构里面有CIA作后台的In-Q-Tel呢?

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e6%8a%80%e6%9c%af%e4%b8%8e%e5%95%86%e4%b8%9a%e6%a1%88%e4%be%8b%e8%a7%a3%e8%af%bb/063%20%e6%96%87%e6%a1%a3%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e7%bc%94%e9%80%a0%e8%80%85MongoDB%ef%bc%88%e4%b8%8b%ef%bc%89.md