影视聚合站 科技 文章内容

实力坑队友! CTO 写出低级 Bug,致公司 70 GB 数据遭泄露!

发布时间:2021-03-05 17:57:52来源:程序人生

‍‍

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

整理|苏宓

出品|CSDN(ID:CSDNnews)

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

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

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

CTO写的Bug,后果很严重!

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

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

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

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

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

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

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

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

那么,要问FoscoMarotto是何许人也?

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

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

修正主义者的历史

然而又是这一举措,Gab再次成为众矢之的。

作为一家创业型的开源社交网络服务平台,其支持言论自由,也一直被视为Twitter的最佳替代品,不过,Gab此次在没有任何解释之下,直接删除提交的代码,引发业界不小争议。

对此,有批评人士称,此举违反了Affero通用公共许可的条款,该许可将规范Gab对Mastodon(用于托管社交网络平台的开源软件包)的重用。

据公开资料显示,GNUAffero通用公共许可协议是一个广泛被使用的自由软件许可协议,其改自GNU通用公共许可协议,并加入额外条款,其目的是为了Copyleft条款应用于在网络上运行的应用程序(如Web应用),从而避免有人以应用服务提供商方式逃避GNU通用公共许可协议。

批评人士表示,Gab的删除行为违反了要求从网站直接链接到分叉源代码的条款。这些要求旨在提供公开、透明度,并使其他开放源代码开发者可以从Gab的同行中受益。

据报道,Gab一直都是在https://code.gab.com/上提交代码的。

但是,本星期一,Gab突然删除了所有提交,包括那些创建并修复了严重SQL注入漏洞的提交。取而代之的是,Gab使用了Zip存档文件的形式提供了源代码,该文件受密码“JesusChristIsKingTrumpWonTheElection”的保护。

截止目前,据GabGitcommit显示,该公司的开发者也正在努力修复其易受攻击的代码。正如下图所示,一位用户名为“developer”的开发者正在尝试完全修复包含SQL注入漏洞的代码,但最终并未成功。

网友:不足为奇

针对这样的错误,也引发了不少网友的讨论:

一点都不足为奇。在某一时刻,当他们有一个API时,我可以跟踪和看到在网站上看不到的"锁定"帐户中的信息。我对他们网站反馈了这一问题,他们回复说:“哦,是的,我们现在正在做很多改变,”然后从来没有修复过这一Bug。

对于企业而言,CTO应该专注于战略层面,手里下应该会有1-2位开发者来领导日常的开发工作,并针对此类基本问题(或使用代码分析器)进行代码审查,以检测sql、xss、xsrf、会话管理、基于密码的用户数据加密、消息加密和其他琐事。这并不是说我喜欢Gab这家公司,但我不知道有多少这样的新手错误,然后最终会被归咎于"外包公司"。

这是糟糕的代码,有点让我吃惊的是,一个前Facebook工程师写了它(后来成为CTO),显然,Gab并没有雇佣到一位最优秀、最聪明的CTO。

参考链接:

https://ddosecrets.substack.com/p/release-gableaks-70gb

https://arstechnica.com/gadgets/2021/03/rookie-coding-mistake-prior-to-gab-hack-came-from-sites-cto/?comments=1

https://www.knowpia.cn/pages/affero%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81

对此,你怎么看?欢迎参与投票、在留言区讨论交流!

#欢迎来留言#

留言点赞数量最多的前三名

程序人生携手【北京大学出版社】送出

《Python数据科学实践》一本

截至3月9日14:00点

© 2021 ysjhz.com Inc.

站点统计| 举报| Archiver| 手机版| 小黑屋| 影视聚合站 ( 皖ICP备16004362号-1 )