速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Docker 严重错误导致企业数据被黑客擦除,已存在七年之久

  • 2021-06-30
  • 本文字数:2454 字

    阅读完需:约 8 分钟

Docker严重错误导致企业数据被黑客擦除,已存在七年之久

谨慎对待那些承诺让工作变得轻松的热门技术——它们通常会偷工减料,而安全性往往是其中之一。


几天前,由于 Docker 中存在多年的一个错误,导致 NewsBlur(一种基于 Web 的 RSS 阅读器)的数据库被黑客删除


在本周的一篇博客文章中,NewsBlur 的创始人 Samuel Clay 详细讲述了他的遭遇:在将 MongoDB 集群迁移到 Docker 容器过程中,一名黑客获得了 NewsBlur 数据库的访问权限,删除掉了 250GB 的原始数据,并要求他支付 0.03 BTC 的赎金。


Clay 将攻击归咎于数据库迁移期间发生的防火墙错误:“在我将 MongoDB 容器化时,Docker 帮助我在 iptables 中插入了一个允许的规则,从而向全世界开放了 MongoDB。”


而 Docker 的这个问题,早在 2014 年,就有开发者以“严重错误”反馈给了 Docker 公司,但一直没有得到解决。



NewsBlur 的 MongoDB 服务器是如何被入侵的?


上周,Clay 开始了 NewsBlur 的维护工作,他准备将公司的 PostgreSQL、MongoDB、Redis、Elasticsearch 几种数据库都迁移到 Docker 容器。在攻击发生前的几个小时里,他将应用程序的 MongoDB 集群切换到新服务器,并关闭了原始服务器,打算在新设置证明稳定可用后将其删除。


大约三个小时后,暴露的数据库似乎已被自动勒索软件脚本发现并删除。Clay 说,当他在看到手机上错误消息时,就明白这等于是收到了灾难警报。



这条错误消息中包含了关键词“drop”,用于删除数据库的 SQL 命令。


随后登录到 MongoDB 机器检查数据库处于什么状态时,他发现了一个名为“READ__ME_TO_RECOVER_YOUR_DATA”新的空数据库。其中包含了一条黑客留下的信息:“你的数据已经被删除,必须在 48 小时内支付 0.03 BTC 才能恢复它。”


Clay 迅速查看了 MongoDB 的访问日志。通过分析日志可以发现两个相隔几秒钟的连接。这两个来自未知 IP 的连接都发生在整个数据库被删除的前一刻。通过跟踪连接 IP,可以轻易地发现黑客进入服务器,并在几秒钟后就将其删除。



但事实上,Clay 启用了 UFW 防火墙,并努力保持在严格的允许列表中,仅对内部服务器开放。但出于 Docker 的原因,在新的服务器上却没有发挥作用。


在他将 MongoDB 容器化时,Docker 在 iptables 中插入了一个允许的规则,从而向全世界开放了 MongoDB。因此,当防火墙处于“活动状态”状态时,执行 sudo iptables -L | grep 27017,显示 MongoDB 已经开放。


幸运的是,Clay 并未向黑客支付赎金,因为通过分析他认为数据实际上没有被盗,而且他有被擦除的数据库的备份(副本)。日志也显示自动攻击者只发出了删除命令,并没有从 MongoDB 服务器上转移任何数据。


另一个能证明数据没有转移的证据是 24 小时内 db-mongo1 机器的流量快照。



下午 6 点 10 分:新的 db-mongo1 服务器轮换为 MongoDB 主服务器。这台机器是第一台新的、即将成为私有云的机器。


晚上 9 点 35 分:三小时后,一次自动黑客攻击试图打开与 db-mongo1 服务器的连接,该数据库立即被丢弃。随后停机了。


晚上 10 点 15 分:在以前的主服务器进入轮换状态之前,NewsBlur 做了一个服务器的快照,以确保备份在重新连接时不会自我删除。这个过程花费了几个小时的停机时间,但由于没有迫使我进入每日备份档案,存下了将近 18 个小时的数据。


凌晨 3 点:快照完成,并开始从原主服务器复制到新的 db-mongo1。


凌晨 4 点 30 分:已完成从旧主服务器入站的复制,并开始在新的辅助服务器上出站复制。现在 NewsBlur 已经恢复正常。


从打开开关到黑客删除 NewsBlur 的 MongoDB 集合并假装要赎回大约 250GB 的数据,花了 3 个多小时。几个小时后,当备份恢复后,NewsBlur 就重新上线了,Docker 制造的漏洞也修补完毕。


怎样才能保证不再发生这样的事情?


在过去的七年里,“Docker 网络绕过防火墙,且没有禁用选项”一直是开发人员关注的问题。早在 2014 年的时候,就有开发者上报给 Docker 公司,但问题一直没有得到解决。


虽然在线论坛有各种解决方案的建议,但 Docker 为什么不选择直接修复,Clay 对此评论说:“这有点像方便和安全之间的权衡。在这里,Docker 认为方便更重要。”


另一方面,处于开放状态的 MongoDB 数据库受到攻击的情况早已存在。本次事件在 Riddit 上引起开发者广泛关注之后,著名安全研究员 Bob Diachenko 在推特上写道



值得注意的是,在“黑客”将其清理干净之前,这个 MongoDB 在网上处于不安全状态将近一个月。


专业人士认为该攻击是自动化的,并且是 2016 年底开始的勒索潮流的一部分。当时多个黑客组织开始擦除 MongoDB 服务器并索要赎金,这些服务器所有者都是在没有密码的情况下将 MongoDB 实例暴露在网络上。虽然黑客声称他们复制了已删除的数据,但在大多数情况下是虚张声势,希望受害者支付小额赎金,赎金要求通常在 200 美元到 2000 美元之间。


这些攻击多年来一直存在,至今仍然活跃。我们从本次事件中能吸取到的教训是:


  • 将数据迁移到 VPC(即虚拟私有云,Virtual Private Cloud),可让关键服务器只能通过私有网络中的其他服务器访问。但正是这一迁移过程中,遭受到了黑客的攻击。讽刺的是,将数据迁移到私有网络时,NewsBlur 需要从公共可访问的机器上迁移所有数据。它是整个过程的第一步。

  • 需要在所有的数据库上启用数据库用户认证机制。长期以来,NewsBlur 都依赖防火墙来保护自己免受威胁,但当防火墙默默地失效时,数据库就被暴露了。如今,谁能说,如果防火墙失效了,但是由于已经存在认证机制,那么黑客攻击将会被发现。这个密码需要足够长,才能避免暴力破解,因为到最后,一个开放的数据库,如果不受密码保护,它就很可能会出现在黑客攻击的名单上。

  • 需要调整具有删除权限的数据库用户。大多数数据库用户应该只需要读和写的权限。在最理想的情况下,只允许本地主机用户执行潜在的破坏性操作。


但这些都只是防御策略的一部分,一项合适的防御策略绝不能仅仅依赖于一个精心设置的层。对于 NewsBlur 来说,这一层是一个只允许访问的防火墙。


像往常一样,真正的有用的是“备份”策略。定期的、经过测试的备份是任何网络服务的必要组成部分。


参考链接:


http://blog.newsblur.com/2021/06/28/story-of-a-hacking/


2021-06-30 15:264944

评论 4 条评论

发布
用户头像
docker怎么设置的也不贴
2021-07-01 08:55
回复
2021年最新整理,名企校招各大岗位的技能树,含技术细节,Python, Golang, iOS, Android, Java,C/C++,前端,运维,测试,运营岗位。
https://github.com/0voice/develop_skill_tree
2021-07-08 15:23
回复
用户头像
这不能叫严重错误,应该是工作人员的失误
2021-06-30 17:06
回复
用户头像
设置个密码能死?
2021-06-30 15:52
回复
没有更多了
发现更多内容

第八周作业

Geek_4c1353

极客大学架构师训练营

当Nginx遇上Tomcat集群,又是一场负载均衡的爱恨情仇

小Q

nginx tomcat 学习 架构 面试

践行新基建,共建城市智能体,为数字经济发展提供新动能

CECBC

云计算 大数据

iptables 端口转发

田振宇

SpringBoot启动原理

编程门槛 框架设计 spring Boot Starter】

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

JackJiang

音视频 即时通讯 视频

【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器

IoT云工坊

人工智能 云计算 物联网 API 红外遥控器

当Tomcat遇上Netty,我这一系列神操作,同事看了拍手叫绝

小Q

Java 学习 程序员 架构 面试

与第三方系统打通的N种进阶方式

棒锤🐮

架构

重拳出击!平台经济反垄断,互联网巨头市值蒸发千亿

CECBC

小额贷款 反垄断

浅谈程序员的“内卷化”

数据社

Java批量导入去除重复数据并返回结果,我差点就被放倒了

小Q

Java 学习 程序员 架构

腾讯WeMap,一颗“孢子”的数智化之旅

脑极体

我终于拥有自己的独立博客了。

彭宏豪95

GitHub 写作 博客 IT

阿里首发MySQL“完美日记”,基础+优化+事务+集群+锁+主从复制+安全备份

Java架构追梦

Java MySQL 数据库 架构 面试

搞微服务用阿里开源的 Nacos 真香啊!

阿里巴巴 开源 编程

奈学教育荣获“中关村高新技术企业”认证

古月木易

教育 IT

科技助力餐饮,普渡送餐机器人在餐博会上被众人围观!

DT极客

腾讯云直播全解析,双11怎么买才不亏?

腾讯云音视频

腾讯云 阿里云 云直播 直播 视频

对比一下,你的简历是不是也写成了这样,能拿高薪才怪了

小Q

Java 学习 架构 面试 简历

第七周作业

Geek_4c1353

极客大学架构师训练营

11.11 程序员的 1111 种死法

京东科技开发者

程序员 程序人生

奈学教育荣获“中关村高新技术企业”认证

奈学教育

奈学教育

「架构师训练营」第 4 周作业

小黄鱼

极客大学架构师训练营

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,使用栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

CloudQuery v1.2.1 版本发布

BinTools图尔兹

数据库 开发者 运维 工具 开发工具

从应用开发角度认识K8S

LorraineLiu

容器 云原生 k8s入门

年末十家手机银行数字化升级大盘点:谁家开发更全面?谁家建设更到位?

CECBC

疫情 银行 手机银行

《我想进大厂》之Java基础夺命连环16问

艾小仙

Java 面试 编程语言

面试官问我redis数据类型,我回答了8种

数据库 学习 面试

架构训练营-week8-数据结构与算法,网络,IO

于成龙

极客大学架构师训练营 架构训练营

Docker严重错误导致企业数据被黑客擦除,已存在七年之久_服务革新_Tina_InfoQ精选文章