2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:265049

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

Qt | QWidget的一些总结

YOLO.

qt 7月月更

小心!正则 test() 匹配的一个“坑”

掘金安东尼

正则 7月月更

【LeetCode】数位和相等数对的最大和Java题解

Albert

LeetCode 7月月更

分享 15 个 Vue3 全家桶开发的避坑经验

Geek_z9ygea

Vue Vue3

KUDU1.11 环境安装

怀瑾握瑜的嘉与嘉

7月月更 kudu

让你事半功倍的JS utils工具函数

南城FE

JavaScript 前端 工具库 7月月更

在 Excel 内使用 ODBC 消费 SAP ABAP CDS view

汪子熙

JDBC SAP abap ODBC 7月月更

Spring系列一:Spring基础篇

叶秋学长

LeetCode-100. 相同的树(java)

bug菌

Leet Code 7月月更

Android 功能开发笔记

沃德

android 程序员 7月月更

解密方舟的高性能内存回收技术——HPP GC

HarmonyOS开发者

HarmonyOS

试着换个角度理解低代码平台设计的本质

Geek_z9ygea

Vue 前端 React 低代码平台

STM32+DHT11读取温湿度数据显示

DS小龙哥

7月月更

算力网络,AI先行,昇腾AI助力运营商数字化转型 ——携手聚力,共赢算力时代

科技热闻

后深度学习时代,推荐系统向何处去?

博文视点Broadview

云原生(八) | Devops篇之深入Devops

Lansonli

云原生 7月月更

出自阿里P8的Java面试神册,涵盖30个技术栈扛住面试官的狂轰乱炸

程序知音

Java 面试 程序员面试 后端技术 Java八股文

短视频直播系统源码

开源直播系统源码

短视频源码 直播系统源码 开源源码

Unity3D和Android交互

沃德

程序员 Unity 7月月更

在 Business Application Studio 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete 操作

汪子熙

Cloud SAP Fiori SAP UI5 7月月更

C++课程设计:图书管理系统【附源码】

攻城狮杰森

c++ 7月月更 课程设计 图书管理系统

被大厂强制毕业,两个月空窗期死背八股文,幸好上岸,不然房贷都还不上了

程序知音

Java 程序员 java面试 后端技术 八股文

亮点抢先看!2022 开放原子全球开源峰会定于 7 月 25-29 日在北京举办

kk-OSC

开源 开发原子全球开源峰会

QT|QLabel显示多行文本过多后显示省略号

中国好公民st

qt 7月月更

strcat() - 连接字符串

謓泽

7月月更

C# DataGridView数据导出Excel文件

IC00

C# 7月月更

java零基础入门-java8新特性(下篇)

喵手

Java 7月月更

LeetCode-数组中数字出现的次数(单身狗问题)

芒果酱

c++ C语言 数据结构算法 Leet Code 7月月更

qt 实现日历美化

小肉球

qt 7月月更

C#入门系列(二十五) -- 接口

陈言必行

7月月更

mysql进阶(十三)命令行导出导入数据库

No Silver Bullet

MySQL 数据库 数据导入 数据导出 7月月更

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