当前位置: 首页 > 科技观察

大厂水货CTO:一个低级BUG被勒索50万,事后删代码

时间:2023-03-18 15:38:35 科技观察

堂堂公司的CTO能走多远?因为一个低级错误,70GB的信息和数据被泄露,公司被黑客勒索50万美元。被人发现后,为了隐藏证据,还删掉了代码……这是最近发生在社交媒体网站Gab上的真实事件。上周末,黑客通过SQL注入漏洞攻破了他们的官方网站,并窃取了15,000名用户的数据。这也包括特朗普。经媒体调查发现,关键漏洞是该公司的CTO所为。而这位CTO是一位入职不到半年的工程师,却有着23年的开发经验。它的前主人是著名品牌“大厂”——Facebook。于是就有网友质疑,公司是不是瞎了眼?还是CTO太水了?大厂“毕业”的CTO,犯了一个致命的低级错误。事件起因是黑客利用SQL注入漏洞侵入公司后台窃取数据。这包括用户的公开和私人帖子、散列密码和私人资料,共涉及70,000条消息。不仅如此,黑客还将此事透露给了一个类似于维基解密的爆料网站DDoSecrets,从事黑客窃取的数据和机密信息的披露工作。在事件公开之前,该网站的记者还在社交网络上挑衅了Gab的CEOAndrewTorba:DDoSecrets甚至没有宣布任何事情,Gab已经被吓坏了。之后,不少媒体和专家通过调查这家公司的gitcommit记录,发现是一个名为“FoscoMarotto”的账号更改了后台代码,给黑客可乘之机。FoscoMarotto是该公司的CTO。但是,目前,提交代码已被删除。不过当时的网站快照被有心人翻出来了。快照显示代码中存在明显的低级错误,第23行的“reject”和“filter”已被删除。这两个API函数最初是用来拦截SQL注入漏洞的。具体的,在向后端数据库服务器发送SQL命令时,确保其中的恶意命令已经被清除。但他们并没有这样做,而是添加了对包含“find_by_sql”方法的Rails函数的调用,从而使查询字符串中的输入无需过滤即可被接受。(Rails是一个网站开发工具包。)Facebook前产品工程师DmitryBorodaenko说:如果你对SQL数据库有所了解,你应该听说过SQL注入攻击。虽然不能100%确定是这个漏洞导致的,但是可能性很大。也有不少专家对公司事后删除gitcommit的行为提出了批评。此删除违反了“Fork源代码必须公开透明”的条款。讽刺的是,早在2012年,这位CTO还在StackOverFlow上警告其他程序员不要犯这样的错误:应该使用参数化查询来防止SQL注入攻击。因此,难免有网友怀疑他这次是故意泄露数据。CTO:Gab生平第一次在事件公开报道之前就做出回应,可能是因为一些记者收到了公司泄露的数据。2月26日,Gab首席执行官安德鲁·托尔巴(AndrewTorba)发表官方声明,否认入侵行为。我们发现了这个漏洞,并于上周对其进行了修补,并且即将开始全面的安全审计。并表示,在个人信息方面,Gab从用户那里收集的信息非常少。因此,一旦发生泄露,对用户的影响将降到最低。但在此事被ArsTechnica举报后,事态变得更加严重后,Gab选择与CTO站在一起,发表了同样的声明。CEOAndrewTorba连续两次发表声明,承认官网被黑的事实。他还表示,该公司遭到黑客勒索,勒索金额接近50万美元的比特币赎金,此事已报告给执法部门。当事人CTOFoscoMarotto也在HackerNews上发表了个人声明。显示“我人生中第一次收到死亡威胁”、“目前没有证据表明提交代码与此次黑客攻击有直接关系”、“向ArsTechnica提供信息的人有个人恩怨”与我一起”。也给出一些反驳:我以前写过很多年的SQL,当然知道用户输入的重要性。我还用各种语言编写了很多用户输入的代码。我不是Rails开发者,我对Rails和ActiveRecord持消极态度。网友:CTO还自己写代码?事件一出,不少网友直接将矛头指向了CTO:为什么C级高管要自己写代码?有人认为CTO应该承担更重要的职责,比如战略制定和决策制定,而不是关注细节,更不用说自己写代码了。对此,也有人提出了不同的看法:这不是一个普遍规律。在不同的公司,CTO的工作内容可能大不相同。在Gab这样的小创业公司,CTO不是不可能是技术水平最高的人,自己写代码。即使你不自己写代码,你仍然需要负责项目的交付过程。不过,让黑客利用SQL注入攻击的事情,也发生在一位前Facebook工程师身上,着实让不少网友感到难以置信。有网友直言:如果CTO在review之后还犯这种错误,他就是白痴,或者工程师在骗白痴。有网友吐槽他。有网友表示:谁都会犯菜鸟式的错误,这也是为什么连老板都要进行codereview的原因。一位在Facebook担任高级软件工程师的网友对此并不意外:“你没听说过快速行动和解决问题吗?重点是代码速度,而不是质量。”也有网友认为,前Facebook工程师不是Rookie,编码错误就会犯,账号可能被盗。不过,立即有网友回应:“盗窃只是又一个新手失误。”有网友指出,Gab可能没有静态分析安全测试工具(SAST),也可能是故意忽略了系统反馈。任何现有的代码静态分析工具都会告诉您,像这样编写SQL是一种非常糟糕的做法。CI管道甚至会直接拒绝代码,拒绝合并代码。也就是说,即使开发人员忽略了这个明显的漏洞,系统本身也会阻止它。毫无疑问,无论流程如何,作为CTO的Fosco都将对此次事件负责。CTO们注意了!那么问题来了:如何避免重蹈Fosco的覆辙?这是一个有5.6K星的免费列表。几乎所有关于CTO的内容都能在里面找到,简直就是保姆级的CTO培训指南。但是,本指南将重点关注初创公司和高增长公司的CTO和研发副总裁。内容涵盖从招聘到管理、技术、营销等各个方面。一般包括:角色定位、招聘流程、管理方法、员工手册、开发流程、软件架构、技术学习、初创企业、产品、营销以及其他相关资源的链接。好吧,还有最后一个问题。首先你得是CTO。(手动狗头)