日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTO 太水!犯了低级错误,还删除代码隐藏证据!

發布時間:2024/9/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTO 太水!犯了低级错误,还删除代码隐藏证据! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:InfoQ ??劉志勇、Tina

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

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

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

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

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


黑客發 Twitter 嘲笑 Gab CEO 被嚇壞了。

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


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

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

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

2、刪除不安全的代碼,隱藏證據

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

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

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

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

Mastodon 項目的代表沒有立即回復詢問他們是否同意批評者的擔憂的電子郵件。

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


線程參與者對此的反應是諷刺地指出開發者似乎遇到的困難。


在 Gab 的安全漏洞事件,前后的代碼處理為開發者提供了一個案例研究,說明如何維護站點的安全性和代碼透明度??紤]到提交的文件使用了 Gab 的 CTO 的賬號,這個教訓就顯得更有分量了,因為在所有的人當中,他知道的東西應該更多。

3、原因是 CTO 太水?

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

2020 年 11 月,Gab 宣布聘請 Fosco Marotto 作為他們的新 CTO。Marotto 曾在 Facebook 工作七年,擔任軟件工程師,負責后端工具包 Parse 的開發,是 Parse 團隊的關鍵成員,目前該工具包已經開源。同時他還利用業余時間幫助 Gab 開發了免費語音網絡瀏覽器 Dissenter。加入 Gab 后,公司在他們網站的聲明中說:“Marotto 有 23 年的行業經驗,在后端基礎架構上有深厚的知識和見解。這有助于 Gab 迅速發展為新的媒體巨頭。”

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

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

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

這件事情發生后,Marotto 不僅刪除了 Gab 的代碼庫,連帶刪除了他之前在 Facebook 里負責的 Parse 工具的安全代碼。這個 SQL 注入是個新手級別的錯誤,Gab 團隊原來的代碼是正確的,反而是被 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

推薦閱讀

誤執行了rm -fr /*之后,除了跑路還能怎么辦?!

程序員必備58個網站匯總

大幅提高生產力:你需要了解的十大Jupyter Lab插件

總結

以上是生活随笔為你收集整理的CTO 太水!犯了低级错误,还删除代码隐藏证据!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。