整个周末,有消息称黑客入侵了最右边的社交媒体网站Gab,并利用了各种称为SQL注入的花园式安全漏洞下载了70 GB的数据。快速浏览一下Gab的开放源代码,可以发现该关键漏洞(至少是一个非常类似的漏洞)是由该公司的首席技术官介绍的。
这项变更在软件开发中被称为“ git commit”,是在2月某个时候从前Facebook软件工程师Fosco Marotto的帐户进行的,Fosco Marotto在11月成为Gab的CTO。周一,Gab从其网站上删除了git commit。下面的图像显示了2月的软件更改,如提供保存的提交快照的站点所示。该提交显示了一个使用Fosco Marotto命名的软件开发人员,准确地介绍了可能导致本周末报告的违规行为的菜鸟错误类型。具体来说,第23行去除了代码“ reject”和“ filter”,它们是实现编程习惯用法的API函数,可以防止SQL注入攻击。
这些惯用法“清理”了网站访问者在搜索框和其他Web字段中输入的输入,以确保在将文本传递到后端服务器之前,清除掉所有恶意命令。取而代之的是,开发人员向Rails函数添加了一个包含“ find_by_sql”方法的调用,该方法直接在查询字符串中接受未经过滤的输入。 Rails是一种广泛使用的网站开发工具包。
“ Sadly Rails文档没有警告您有关此陷阱的信息,但是如果您完全了解在Web应用程序中使用SQL数据库的任何知识,您就会听说过SQL注入,并且不难理解。碰到警告说find_by_sql方法不安全,” Facebook的前生产工程师Dmitry Borodaenko在电子邮件中写道。 “并没有100%确认这是Gab数据泄露中使用的漏洞,但肯定是可以的,并且此代码更改已在GitLab存储库中使用之前的最新提交中恢复。离线。”
Marotto没有回复一封电子邮件,希望对此帖子发表评论。尝试直接联系Gab失败。
除了提交有关Gab开发安全代码的过程的问题之外,该社交媒体网站还面临着从其网站删除提交问题的批评。批评人士说,此举违反了Affero通用公共许可的条款,该许可规范Gab对Mastodon的重用,Mastodon是用于托管社交网络平台的开源软件包。
批评人士说,该删除行为违反了要求从网站直接链接叉状源代码的条款。这些要求旨在提供透明度,并使其他开放源代码开发人员可以从Gab的同行中受益。
Gab长期以来在https://code.gab.com/上提供提交。然后,星期一,该站点突然删除了所有提交,包括那些创建并修复了严重SQL注入漏洞的提交。 Gab代替了他们,以Zip存档文件的形式提供了源代码,该文件受密码“ JesusChristIsKingTrumpWonTheElection”(减去引号)保护。
Mastodon项目的代表没有立即回复电子邮件,询问他们是否也分享批评者的担忧。
除了有关安全编码和许可证合规性的问题外,Gab git提交似乎还表明公司开发人员正在努力修复其易受攻击的代码。下图显示了使用用户名“ developer”的用户尝试完全修复包含SQL注入漏洞的代码,但未成功。
线程参与者通过讽刺地指出开发人员似乎遇到的困难来回应。
不好意思,不告诉我SQLi仍然在哪里,也许你应该打电话给驱魔人以弄清楚XDDDDDD pic.twitter.com/R4h0wNkoLg
—覆盖崩溃(@donk_enby)2021年3月1日
Gab的安全漏洞和事件前后的幕后代码处理为开发人员提供了一个案例研究,说明如何不维护网站的安全性和代码透明度。鉴于提交的内容使用了Gab的CTO的帐户,因此该课程的意义更加重大,他在所有人中应该都了解得更多。