Article / 文章中心

文章分类

CTO 写低级 Bug,致公司 70 GB 数据遭泄露!

发布时间:2021-03-05 点击数:613

前有“程序员删库跑路”,后有 CTO 在网站后台引入 Bug,导致公司 1.5 万账户信息外泄。

近日,据外媒报道,美国开源社交网络服务平台 Gab 受到黑客攻击,其中,包括一些知名人士在内的 1.5 万 Gab 账号及个人信息遭到泄露。

据悉,一位未透露姓名的黑客利用 SQL 注入漏洞入侵 Gab 后台,并从数据库中窃取了约 70 GB 数据提供给了爆料组织 Distributed Denial of Secrets(简称 DDOSecrets)。这些数据包括了 7 万多条信息、4000 多万条帖子,以及哈希密码、明文密码、用户个人资料等。

然而,在 Gab 公司审查并欲修复漏洞之际,竟然发现此 Bug 出自自家公司的 CTO 之手,而这究竟又是怎么一回事?

CTO 写的 Bug,后果很严重!

正如上文所述,Gab 公司在遭到黑客攻击后,爆料组织 DDOSecrets 团队公开发文表示,“正在将这些泄露的数据汇编成了一个 GabLeaks 的文件,同时将对外分发共享此数据集,记者、学者以及研究者可以通过公开渠道与其获得联系,对这些信息进行研究学习。”

在知晓这一消息之后,Gab 创始人 Andrew Torba 发表声明强烈谴责了相关的组织以及传播的记者。

不过,就在谴责泄露组织及相关人员之际,Gab 内部也对网站的整体安全进行了审查。然而万万没想到的是,在快速浏览了 Gab 的开放源代码之后,竟然发现关键漏洞(至少有一个非常类似的漏洞)是源自 Gab CTO 提交的代码。

据外媒报道,通过查看 Gab 公司提交的“Git commit”更改记录中发现,今年 2 月,有一个名为 Fosco Marotto 的软件开发者,提交了一份代码。在这份代码中存在一个很明显的错误类型,而这往往是新手才容易犯的错误,即第 23 行代码中,拆分了“reject”和“filter”代码,这两个 API 函数实现了防止 SQL 注入攻击的编程习惯。

这种惯用的方法可以帮助程序员能够以安全的方式编写 SQL 查询功能,且可以“清理”网站访问者在搜索框和其他 Web 网站中输入的字段,借此来确保在将文本传递给后端服务器之前,先清除掉所有恶意命令。

不过,开发者也需要向一个包含“find_by_sql” 方法的 Rails 函数添加了一个调用,这一方法直接在查询字符串中接受未经过滤的输入(Rails 是一种广泛使用的网站开发工具包)。

对此,Facebook 的前产品工程师 Dmitry Borodaenko 在一封电子邮件中写道,“ 或许 Rails 的官方文档没有警告过用户存在这个陷阱,但是,如果作为开发者,完全了解在 Web 应用程序中使用 SQL 数据库的任何知识,那么,相信你也听说过 SQL 注入,由此也不难发现“find_by_sql”方法不正确的警告。”

同时, Dmitry Borodaenko 指出,“现在并非能够 100% 确认这是在 Gab 数据泄露中使用的漏洞,但是不排除可能性,现在 Gab 团队已经将其在 GitLab 存储库中提交的最新代码恢复到了上一版本 。”

那么,要问 Fosco Marotto 是何许人也?

据悉,Fosco Marotto 此前在 Facebook 作为软件工程师任职 7 年,2020 年 11 月,正式加入 Gab 平台担任 CTO 一职。针对上面所犯的错误,也颇具有讽刺意义的是,Fosco 曾在 2012 年提醒过其他程序员,一定要使用参数化查询来防止 SQL 注入漏洞。

如今,Gab 已从其网站删除了 Git commit。

来源:csdn