來源:量子位
楊凈 子豪 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
堂堂一家公司的CTO,到底能水到什么程度?
因為一個低級錯誤,70GB大小的信息數(shù)據(jù)被泄露,公司還被黑客敲詐了50萬美元。
而被發(fā)現(xiàn)后,他為了隱藏證據(jù),竟還刪掉了代碼…
這就是最近在一個社交媒體網(wǎng)站Gab上發(fā)生的真實事件。
上周末,黑客通過SQL注入漏洞入侵他們的官網(wǎng),并竊取了15000位用戶的數(shù)據(jù)。
這其中還包括特朗普。
后經(jīng)媒體調(diào)查發(fā)現(xiàn),關(guān)鍵漏洞竟是由該公司的CTO造成的。
而這位CTO是一位入職不到半年,但有著23年開發(fā)經(jīng)驗的工程師。
其前東家更是名牌“大廠”——Facebook。
于是就有網(wǎng)友質(zhì)疑,這是公司眼瞎了?還是CTO太水了?
大廠“畢業(yè)”CTO,犯下致命低級錯誤
而事件的起因,是一位黑客利用SQL注入漏洞入侵了公司后臺,竊取了數(shù)據(jù)。
這其中包含用戶公開、私人的帖子、哈希密碼以及私人資料,共涉及70000條信息。
不光如此,黑客還將此事透露給了一個爆料網(wǎng)站DDoSecrets,與維基解密類似,從事披露黑客竊取的數(shù)據(jù)和機密信息等工作。
在事件公開之前,該網(wǎng)站的記者還在社交網(wǎng)絡(luò)上挑釁Gab的CEOAndrew Torba:
DDoSecrets甚至都沒有宣布任何消息,Gab就已經(jīng)害怕了。
隨后,不少媒體、專家在調(diào)查了這家公司的git commit記錄之后發(fā)現(xiàn),是一個名叫“Fosco Marotto”賬戶,更改了后臺的代碼,才讓黑客有機可乘。
而Fosco Marotto,正是公司的CTO。
不過目前,提交代碼已經(jīng)被刪除。
但還是被有心人找出了當(dāng)時的網(wǎng)站快照。
快照上顯示,代碼中存在明顯的低級錯誤,第23行中的“reject”和“filter”被刪除了。
這兩個API函數(shù),原本用于攔截SQL注入漏洞的攻擊。
具體而言,就是當(dāng)SQL指令傳送到后端數(shù)據(jù)庫服務(wù)器時,確保其中的惡意命令已經(jīng)被清除。
但他們沒有采取這種做法,而是在Rails函數(shù)中,添加了一個包含 “find_by_sql”方法的調(diào)用,導(dǎo)致查詢字符串中的輸入未經(jīng)過濾,而被直接接受。
(Rails是一個網(wǎng)站開發(fā)工具包)
一位Facebook 的前產(chǎn)品工程師Dmitry Borodaenko表示:
如果對SQL數(shù)據(jù)庫有任何了解的話,就應(yīng)該聽說過SQL注入攻擊。
雖然現(xiàn)在還不能百分百確定是由這個漏洞所引起的,但也是極有可能的。
還有不少專家批評了公司事后刪除git commit的行為。
這種刪除違反了“分支源代碼必須公開透明”的條款。
諷刺的是,早在2012年,這位CTO還在StackOverFlow上警告過其他程序員別犯這樣的錯誤:
應(yīng)該使用參數(shù)化查詢,防止被SQL注入攻擊。
因此就不免讓部分網(wǎng)友懷疑,這次他是故意泄露數(shù)據(jù)的。
CTO:生平第一次受到死亡威脅
事情還沒有公開報道的時候,Gab就立刻回應(yīng)了此事,應(yīng)該是因為一些記者收到了該公司的泄露數(shù)據(jù)。
2月26日,Gab CEOAndrew Torba就發(fā)表官方聲明,否認了這一入侵行為。
我們發(fā)現(xiàn)了這一漏洞,并在上周已經(jīng)進行了修補,還將著手進行全面的安全審核。
并表示就個人信息而言,Gab從用戶那里收集的信息非常少。因此一旦發(fā)生泄漏,對用戶的影響也會降至最低。
但這件事被ArsTechnica報道、事態(tài)更加嚴(yán)重之后,Gab選擇了與CTO站在一起一致對外。
CEOAndrew Torba連發(fā)兩條聲明,承認了官網(wǎng)被入侵這一事實。
他還表示公司正受到黑客的勒索,贖金為近500000美元的比特幣,并且此事已經(jīng)向執(zhí)法部門報告。
而當(dāng)事人——CTOFosco Marotto,也在HackerNews發(fā)表了個人聲明。
當(dāng)中顯示“自己生平第一次受到了死亡威脅”,“目前沒有任何證據(jù)顯示,那次代碼提交與這次黑客入侵有任何直接聯(lián)系”,“向ArsTechnica提供消息的那個人,跟我有個人恩怨”。
還給出了一些辯駁的理由:
我過去寫了很多年的SQL,當(dāng)然清楚用戶輸入的重要性。我還曾用各種語言寫過很多用戶輸入的代碼。
我并不是一個Rails開發(fā)者,我對Rails和ActiveRecord是持否定態(tài)度的。
網(wǎng)友:CTO還自己寫代碼?
事件一出,不少網(wǎng)友直接將矛頭指向CTO:為什么C級高管還要親自寫代碼?
有人認為,CTO應(yīng)該有更重要的職責(zé),比如戰(zhàn)略制定和決策,而不是關(guān)注細節(jié),更不會親自寫代碼。
對此,也有人提出不同觀點:
這并不是通用法則,在不同的公司,CTO的工作內(nèi)容可能會大不相同。
在Gab這樣的小型初創(chuàng)公司,CTO作為技術(shù)水準(zhǔn)最高的人,親自寫代碼,并非是不可能的。即便不是親自寫代碼,也需要為項目的交付流程負責(zé)。
不過,讓黑客利用SQL注入攻擊,還發(fā)生在一位前Facebook工程師身上,這實在讓很多網(wǎng)友感到難以置信。
一位網(wǎng)友直言道:如果CTO審查后還出現(xiàn)這種錯誤,他就是個白癡,要么就是工程師們在欺騙白癡。
也有網(wǎng)友為他鳴不平
部分網(wǎng)友表示:任何人都可能犯菜鳥錯誤,這就是為什么即使是老板,也要進行代碼審查的原因。
曾在Facebook擔(dān)任高級軟件工程師的一名網(wǎng)友,對此一點都不覺得驚訝:“沒有聽說過快速行動并解決問題嗎?重點是代碼速度,而不是質(zhì)量。”
也有網(wǎng)友認為,前Facebook工程師不會犯菜鳥編碼錯誤,帳戶可能是被盜了。
不過隨即被網(wǎng)友回復(fù):“被盜也只是另一個新手錯誤。”
還有網(wǎng)友指出,Gab也許沒有靜態(tài)分析安全測試工具(SAST),要么就是故意忽略了系統(tǒng)反饋。
現(xiàn)有的任何一個代碼靜態(tài)分析工具都會告訴你,這樣編寫SQL是一個非常糟糕的做法。CI管道甚至?xí)苯泳芙^代碼,拒絕合并代碼。
也就是說,即使開發(fā)人員忽略了這個明顯的漏洞,系統(tǒng)本身也能阻止它。
毫無疑問的是,無論過程如何,作為CTO的Fosco都要為這次事件承擔(dān)責(zé)任。
CTO們請注意!
那么問題來了:如何避免重蹈Fosco的覆轍?
這里有一份5.6K星的免費清單。
幾乎關(guān)于CTO的一切,都能在里面找到,簡直是CTO培養(yǎng)的保姆級指南。
不過這份指南,將重點針對初創(chuàng)公司和高速增長型企業(yè)的CTO和研發(fā)副總裁。
內(nèi)容涵蓋了從錄用到管理、技術(shù)、營銷等方面。
大致包括:角色定位、錄用流程、管理方法、員工手冊、開發(fā)過程、軟件架構(gòu)、技術(shù)學(xué)習(xí)、初創(chuàng)企業(yè)、產(chǎn)品、營銷,以及其他相關(guān)資源的鏈接。
好了,就剩最后一個問題了。
首先你得是一個CTO。(手動狗頭)
參考鏈接:
[1]https://arstechnica.com/gadgets/2021/03/rookie-coding-mistake-prior-to-gab-hack-came-from-sites-cto/
[2]https://www.wired.com/story/gab-hack-data-breach-ddosecrets/
[3]https://news.ycombinator.com/item?id=26319649
[4]https://www.breitbart.com/tech/2020/11/18/free-speech-platform-gab-announces-facebook-vet-as-technical-chief/
[5]https://developers.slashdot.org/story/21/03/02/2230235/rookie-coding-mistake-prior-to-gab-hack-came-from-sites-cto
[6]https://news.gab.com/2021/02/26/alleged-data-breach-26-february-2021/
[7]https://news.gab.com/2021/03/01/gab-does-not-negotiate-with-criminal-demons/
[8]https://news.gab.com/2021/03/03/an-update-on-the-gab-breach/
Github資源地址:
https://github.com/kuchin/awesome-cto
(聲明:本文僅代表作者觀點,不代表新浪網(wǎng)立場。)