<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          水貨CTO入職不到半年犯下低級錯誤,將公司拖入無底深淵

          共 3897字,需瀏覽 8分鐘

           ·

          2021-03-11 16:02

          編譯 | 劉志勇、Tina

          從大公司聘請來的 CTO 太水,犯了個低級錯誤,事后還故意刪除代碼隱藏證據(jù)。

          上周末,黑客組織 DDoSecrets 利用 SQL 注入漏洞,入侵了極右翼社交媒體網(wǎng)站 Gab,并下載了 70 GB 的數(shù)據(jù)。在 Gab 的開源代碼中快速瀏覽一下就會發(fā)現(xiàn),這個關(guān)鍵漏洞是由公司的首席技術(shù)官引入的。

           

          1 CTO 犯的低級錯誤,CEO 來買單

          黑客利用 SQL 注入漏洞從 Gab 的后臺數(shù)據(jù)庫中竊取了大約 70GB 的平臺用戶數(shù)據(jù),包含該網(wǎng)站的 4000 多萬條帖子,之后將所盜走的 70GB 數(shù)據(jù)交給了爆料網(wǎng)站 Distributed Denial of Secrets(DDoSecrets)。泄露的數(shù)據(jù)包含公開 / 私人貼文、哈希密碼與用戶私有訊息,涉及 1.5 萬名用戶,其中還包括前美國總統(tǒng)特朗普。DDoSecrets 已經(jīng)將這些數(shù)據(jù)匯編成了一個名為 GabLeaks 的東西,打算將其提供給特定的記者、社會科學(xué)家和研究人員進(jìn)行進(jìn)一步分析。

          作為一家初創(chuàng)公司,泄露 70G 數(shù)據(jù)無疑嚴(yán)重影響了用戶權(quán)益,這個亂攤子讓 Gab 的 CEO 疲于應(yīng)付。2 月 26 日,最初,CEO 安德魯·托爾巴(Andrew Torba)在 Gab 網(wǎng)站聲明中否認(rèn)了這一入侵行為,但數(shù)據(jù)泄露之后他又不得不承認(rèn)已經(jīng)發(fā)生了入侵行為,并且還稱攻擊者為“惡魔黑客”。Torba 說,該公司已意識到“該領(lǐng)域存在漏洞,并于上周對其進(jìn)行了修補(bǔ)。” 并且還將著手進(jìn)行全面的安全審核,在 2 月 28 日的一份聲明中,他表示:“整個公司將全力調(diào)查發(fā)生的事情,并努力追蹤和修補(bǔ)問題。”

          黑客發(fā) Twitter 嘲笑 Gab CEO 被嚇壞了。

          通過查看公司的 git commit 發(fā)現(xiàn),導(dǎo)致關(guān)鍵漏洞的代碼變更,是在 2 月份的某個時候從 Fosco Marotto 的賬戶上進(jìn)行的,他是一名前 Facebook 軟件工程師,11 月成為 Gab 的 CTO。周一,Gab 將此 git commit 從網(wǎng)站上刪除,但網(wǎng)絡(luò)上已有圖片保存了關(guān)鍵代碼。

          這張圖片顯示的是 2 月份的軟件變更情況,圖片來自一家保存提交的快照的網(wǎng)站。提交的內(nèi)容顯示,一名軟件開發(fā)人員使用 Fosco Marotto 的賬戶提交了代碼,代碼中明顯存在新手錯誤,這種錯誤可能會導(dǎo)致報道中的泄密事件。具體來說,第 23 行刪除了“reject”和“filter”的代碼,這兩個 API 函數(shù)實(shí)現(xiàn)了防止 SQL 注入攻擊的編程習(xí)慣。

          這一習(xí)慣允許程序員以安全的方式編寫 SQL 查詢,以“清理”網(wǎng)站訪問者在搜索框和其他 Web 字段中輸入的內(nèi)容,確保所有惡意命令在文本傳遞到后端服務(wù)器之前被清除。取而代之的是,開發(fā)人員向包含 find_by_sql 方法的 Rails 函數(shù)添加一個調(diào)用,該方法直接接受查詢字符串中未經(jīng)清理的輸入。Rails 是一套廣泛使用的網(wǎng)站開發(fā)工具包。

          “如果你知道在 Web 應(yīng)用中使用 SQL 數(shù)據(jù)庫,那么你將聽說過 SQL 注入,而且不難發(fā)現(xiàn) find_by_sql 方法不安全警告。Facebook 的前產(chǎn)品工程師 Dmitry Borodaenko 在一封電子郵件中提醒了我這個問題。“現(xiàn)在還不能 100% 肯定這就是 Gab 數(shù)據(jù)泄露事件中所使用的漏洞,但是絕對有可能是這樣的漏洞,在最近提交的 GitLab 倉庫中出現(xiàn)的代碼更改被恢復(fù),然后他們就讓代碼離線了。”具有諷刺意味的是,早在 2012 年,F(xiàn)osco 就曾警告程序員同行們,要使用參數(shù)化查詢來防止 SQL 注入漏洞。

           

          刪除不安全的代碼,隱藏證據(jù)

          Gab 開發(fā)的安全代碼流程遭到質(zhì)疑,同時,這家社交媒體網(wǎng)站因從其網(wǎng)站中刪除提交而受到批評。批評者稱,此舉違反了 Affero 通用公共許可證的條款,該許可證控制 Gab 對 Mastodon 的重用(用于托管社交網(wǎng)絡(luò)平臺的開源軟件包)。

          譯注:Affero 通用公共許可證(Affero General Public License,Affero GPL 或 AGPL),是一個廣泛被使用的自由軟件特許條款,最初由 Affero, Inc 撰寫。此特許條款最新版本為第 3 版(v3),2007 年 11 月發(fā)布。Affero 通用公眾特許條款是改自 GNU 通用公眾特許條款,并加入額外條款,其目的是為了 Copyleft 條款應(yīng)用于在網(wǎng)絡(luò)上運(yùn)行的應(yīng)用程序(如 Web 應(yīng)用),從而避免有人以應(yīng)用服務(wù)提供商方式逃避 GNU 通用公眾特許條款。

          上述批評者稱,這一刪除行為違反了一條規(guī)定,即要求復(fù)刻(fork)的源代碼直接從網(wǎng)站上鏈接。該要求的目的是提供透明度,讓其他開源開發(fā)者也能從 Gab 同行的工作中受益。

          Gab 長期以來一直在 https://code.gab.com/ 提供提交內(nèi)容。然后,在周一,該網(wǎng)站突然刪除了所有的提交:包括那些創(chuàng)建并修復(fù)了關(guān)鍵 SQL 注入漏洞的提交。取而代之的是,Gab 提供了 Zip 存檔文件形式的源代碼,該文件由密碼“JesusChristIsKingTrumpWonTheElection”(不含雙引號)保護(hù)。

          Mastodon 項(xiàng)目的代表沒有立即回復(fù)詢問他們是否同意批評者的擔(dān)憂的電子郵件。

          此外,Gab 的 Git 提交還顯示出,除了關(guān)于安全編碼和許可合規(guī)的問題外,公司開發(fā)者也在努力修復(fù)他們脆弱的代碼。下圖顯示了有人使用用戶名“developer”嘗試完全修復(fù)包含 SQL 注入漏洞的代碼,但沒有成功。

          線程參與者對此的反應(yīng)是諷刺地指出開發(fā)者似乎遇到的困難。

          在 Gab 的安全漏洞事件,前后的代碼處理為開發(fā)者提供了一個案例研究,說明如何維護(hù)站點(diǎn)的安全性和代碼透明度。考慮到提交的文件使用了 Gab 的 CTO 的賬號,這個教訓(xùn)就顯得更有分量了,因?yàn)樵谒械娜水?dāng)中,他知道的東西應(yīng)該更多。

           

          原因是 CTO 太水?

          這件事情也引起了開發(fā)者的廣泛關(guān)注,一位從事多年 Rails 開發(fā)的網(wǎng)友說:“這是不好的代碼,讓我感到驚訝的是這是由一位前 Facebook 工程師寫的(后來他成了 CTO)。粗略檢查就能看出一些錯誤,比如大型原始 SQL 查詢完全可以使用 AREL 或 ActiveRecord 這種更慣用的方式,沒有清理用戶輸入等等。”

          去年 11 月,Gab 宣布聘請 Fosco Marotto 作為他們的新 CTO。Marotto 曾在 Facebook 工作七年,擔(dān)任軟件工程師,負(fù)責(zé)后端工具包 Parse 的開發(fā),是 Parse 團(tuán)隊(duì)的關(guān)鍵成員,目前該工具包已經(jīng)開源。同時他還利用業(yè)余時間幫助 Gab 開發(fā)了免費(fèi)語音網(wǎng)絡(luò)瀏覽器 Dissenter。加入 Gab 后,公司在他們網(wǎng)站的聲明中說:“Marotto 有 23 年的行業(yè)經(jīng)驗(yàn),在后端基礎(chǔ)架構(gòu)上有深厚的知識和見解。這有助于 Gab 迅速發(fā)展為新的媒體巨頭。”

          防止 SQL 注入,在 Rails 文檔中有明確的示例說明(https://guides.rubyonrails.org/security.html#sql-injection),甚至示例與該提交中所討論的代碼完全一樣,所以這個技術(shù)在 Rails 里并不是什么新鮮玩意兒。在 2021 年還能讓黑客利用到 SQL 注入漏洞,這很讓人不可置信,一位網(wǎng)友在 Reddit 上評論道,“代碼將要部署到生產(chǎn)環(huán)境中,在合并代碼之前難道沒有讓同行審查嗎?如果首席技術(shù)官審查了開發(fā)人員的代碼后還犯這種錯誤,那么要么 CTO 和工程師都是白癡,要么工程師們在故意欺騙這位白癡。”

          而且除了這是一種糟糕的實(shí)踐之外,現(xiàn)有的每一個代碼靜態(tài)分析工具都會告訴你,這樣編寫 SQL 是一個非常糟糕的做法。CI 管道甚至?xí)苯泳芙^代碼,拒絕合并代碼。也就是說,即使我們的某個開發(fā)人員試圖忽略了這個明顯的安全漏洞,系統(tǒng)本身也能阻止它。因此,Gab 要么根本沒有任何 SAST 工具,要么故意選擇忽略他們的反饋。

          也有人認(rèn)為 CTO 不會關(guān)注這種細(xì)節(jié),CTO 應(yīng)該專注于戰(zhàn)略思維,同時讓公司中的一到兩位開發(fā)人員負(fù)責(zé)日常工作,針對此類基本問題進(jìn)行代碼審查。大部分企業(yè)中,CTO 的確屬于高級管理人員,善用高層次、有遠(yuǎn)見的思維制定戰(zhàn)略,并擔(dān)任企業(yè)中非常有影響力的溝通者角色。但這種情況不適合 Gab,因?yàn)?Gab 總共才只有 26 名員工,那么 CTO 就應(yīng)該是該領(lǐng)域內(nèi)對技術(shù)最熟練的人,同時也應(yīng)該為項(xiàng)目的交付流程負(fù)責(zé)。

          這件事情發(fā)生后,Marotto 不僅刪除了 Gab 的代碼庫,連帶刪除了他之前在 Facebook 里負(fù)責(zé)的 Parse 工具的安全代碼。這個 SQL 注入是個新手級別的錯誤,Gab 團(tuán)隊(duì)原來的代碼是正確的,反而是被 CTO 搞砸了,很明顯,Gab 沒有聘請到正確的人。

          延伸閱讀:
          https://arstechnica.com/gadgets/2021/03/rookie-coding-mistake-prior-to-gab-hack-came-from-sites-cto/
          https://news.ycombinator.com/item?id=26319649
          瀏覽 44
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品秘 国产A级 | 青青草视频成人动漫视频 | 色色色色色色五月婷婷 | 色婷婷五月在线 | 国内精品久久久 |