写点什么

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

2021 年 6 月 30 日

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 年 6 月 30 日 15:263521

评论 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
回复
没有更多了
发现更多内容

nodejs中的文件系统

程序那些事

nodejs 文件系统 异步IO 异步编程 程序那些事

企业需要DevSecOps来保证应用程序的安全

啸天

安全 DevSecOps 应用安全

在 AWS 的视角下,正确打开零信任安全模型

亚马逊云科技 (Amazon Web Services)

云计算 AWS

架构师训练营 week13 课后作业

花果山

ClickHouse在大数据领域企业级应用实践和探索总结

王知无

大数据 Clickhouse

读书笔记之互联网金融思考一则

石君

金融科技 互联网金融 28天写作

AWS Graviton2 | 匠“芯”定制,性能为王

亚马逊云科技 (Amazon Web Services)

云计算 AWS

项目管理系列 (5)-沟通规划

Ian哥

项目管理 沟通与管理 28天写作

【计算机内功修炼】七:高并发高性能服务器是如何实现的

码农的荒岛求生

高并发 事件驱动 高性能 Event Driven 高并发优化

HTML(一)——html相关介绍

程序员的时光

程序员 28天写作

高并发场景下如何优化服务器的性能?

冰河

Linux 并发编程 高并发 服务器 性能调优

有道乐读 x AWS | 云上的少儿图书馆!这个寒假让孩子爱上“乐读”

亚马逊云科技 (Amazon Web Services)

云计算 AWS

第一周-胡赵凯-总结

hisun胡

产品经理训练营

Flink1.12集成Hive打造自己的批流一体数仓

王知无

大数据 flink

精选算法面试-哈希表II

李孟

面试 算法 28天写作

案例研究之聊聊 QLExpress 源码 (八-2)

小诚信驿站

聊聊架构 28天写作 QLExpress源码 聊聊源码

敏捷开发需要内外兼修

Bruce Talk

敏捷开发 Agile

程序员行业半衰期太短,如何保持高效发展?

李忠良

28天写作

数字货币交易APP系统开发|数字货币交易软件开发

开發I852946OIIO

系统开发

前端也要懂机器学习(下)

执鸢者

机器学习 前端

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

王知无

大数据 hdfs

给自己当前岗位所定义的理想岗位模型

邹小胖

自我思考

产品经理训练营课后作业-第一周-认识产品经理

.nil?

产品经理训练营

币币撮合交易系统软件开发|币币撮合交易APP开发

开發I852946OIIO

系统开发

数字货币合约交易系统软件开发|数字货币合约交易APP开发

开發I852946OIIO

系统开发

构师训练营 - 第十三周课后练习

joshuamai

第一周-胡赵凯-作业

hisun胡

产品经理训练营

单例模式作业

MR.X

怎样更好地阅读源码?

程序员架构进阶

方法论 开发 源码阅读 提升自我 28天写作

架构师训练营 week13 学习笔记

花果山

架构师课程--第十三周作业

孤星

亚马逊云科技 Webinar 电商专场

亚马逊云科技 Webinar 电商专场

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