《原始碼安全:懸在大廠頭上的達摩克利斯之劍》
從 b 站原始碼洩露開始到 github 最終刪除**的兩小時,大概是今年 b 站最煎熬的時刻,以至於他在向 github 求助刪除的 dmca 郵件中,在 please help us 後寫下了三個醒目的感嘆號。
b 站**洩漏雖然不是國內第一次**洩漏事件,卻是第一次因**洩漏上熱搜的話題。
去年在阿里雲的**託管平台上,也發生了企業**洩漏事件。由於介面上的功能歧義,上百家企業在建立專案的時候誤選擇 「internal」 ,將企業專案**進行了「平台公開」。同年八月份華住集團旗下酒店 5 億條公民個人資訊被曝洩露。針對此次洩漏的原因,相關科技組織分析是由於一位程式設計師(疑似華住程式設計師)曾在 github 上傳了乙個名為 cms 專案,專案的配置檔案**裡包含了華住敏感的伺服器及資料庫資訊,被黑客利用攻擊導致洩露。
除了上述情況之外,一些新入門的同學還沒有意識到源**屬於商業機密,將公司**拷貝到個人電腦後,出於共享學習的心態傳到了公共平台;或者是離職的同學在離開公司時沒有帶走一片雲彩,卻帶走了源**。總之,企業核心源**被「開源」的現象屢見不鮮。
github 2017~2018 年的 dmca 刪除通知數量不少企業都有自己的**防洩漏機制,比如核心**許可權控制、內外網隔離、保密協議等等措施,但**洩漏的現象依然在發生。而且影響嚴重的**洩漏事件不少都是由第三方發現的,等企業著手處理時已造成不少損失。接下來我們要**的就是如何把**洩漏的危害降到最低,我們列出常見的實踐,以及在主流**託管平台上發現侵權的倉庫後可以怎麼做,以供讀者參考。
對於企業來說,除了保障業務快速交付外,資訊保安也是重中之重。特別是在資訊及其敏感的行業,例如金融、公安、通訊、軍工等。不少公司都有非常嚴格的程式設計規範,例如:
不允許將敏感資訊硬編碼在**中,敏感資訊通常包括使用者賬戶、密碼、**號碼、資料庫密碼、伺服器遠端登入密碼等等。如果確實需要在**裡的配置檔案當中儲存敏感資訊,建議也不要明文儲存。
當**涉及到加解密演算法時,金鑰不允許全部硬編碼在**中。同時加解密演算法要選擇強度足夠的、業界認可的演算法,金鑰也要支援定期更換。
類似上述的編碼規範可通過原始碼安全掃瞄工具對版本進行增量掃瞄,避免人工檢視的低效率。有一些團隊不願意花時間在這些並不直接或者並不立即產生價值的事務上,但我們建議在安全和進度之間,研發團隊需要找到乙個平衡。
根據**託管**的公開 api 來開發掃瞄工具。比如 github 對公開倉庫提供的 search 介面。
如果 dmca 通知聲稱儲存庫的全部內容都存在侵權。那麼 github 會迅速禁用整個儲存庫。就像 b 站這次的洩漏,就幾乎沒有整改時間窗直接被禁用。
coding 不提供公開**的功能,舊版個人版中可以通過分享鏈結的方式邀請外部人員檢視**倉庫,同時該外鏈不支援檢索。點選即可體驗coding **安全保護。1997 年的春天,包含 eric raymond,tim o'reilly 在內的自由軟體社團第一次提出了「open source(開源軟體)」這個術語。從那時起支援「開源軟體」與支援「專有商用軟體」已成為了軟體行業的兩大陣營。支援「開源軟體」的陣營以乙個科研的角度對待源**,他們堅信為了促進電腦科學的進一步發展,源**是必須被共享和發布的科學知識。另一方則站在工業界的角度,認為企業必須對商業秘密守口如瓶。無論開源運動最終走向何方,從目前來看就算使用開源軟體也不意味著源**就可以隨意共享,開發者必須嚴格按照開源軟體協議使用。
重視自己的**版權,同時也尊重他人的**版權。我們希望企業被「開源」的現象會越來越少,同時也希望意外的原始碼洩漏不會成為企業的致命一擊。
*注:eric raymond,著名的程式設計師,開源軟體運動的代表人物之一。主持開發了開源軟體── fetchmail 。同時也是 ntercal 程式語言的主要創作者之一,曾經為 emacs 編輯器作出貢獻。
tim o'reilly,o'reilly media 出版公司的創始人,也是非會議的鼻祖 foo camp 的發起人。他是自由軟體和開源軟體運動的強力支持者,「 web 2.0 」一詞為他所首創。
參考
大廠介面測試都在用的技術 Diff(附原始碼)
diff是unix系統的乙個很重要的工具程式。它用來比較兩個文字檔案的差異,是 版本管理的基石之一。介面diff測試,簡單來說就是比對相同介面在不同版本不同環境下面的返回內容是否符合預期。對於日常迭代的介面來說,diff測試是我們介面基本功能測試的有效補充!當測試的介面響應中包括100 的字段需要校...
基於開源資料庫原始碼的安全應用定製
本文由 lonelyrains 以sqlite為例,sqlite商用版本才自帶有安全相關的功能。想做基於開源免費sqlite的安全軟體定製 基本框架 在 中新增openssl的那一套,使需要頒發證書 簽名 驗籤才能增刪查改sqlite的資料庫,而且存放的資料全是加工的密文。1 問題 基於密文資料庫的...
Spring中線程安全的單例模式原始碼分析
最近學習spring aop原始碼時,看到了spring原始碼中十分驚豔的乙個執行緒安全類,所以特意記錄下來。public abstract class globaladvisoradapterregistry 重置單例物件 static void reset 分析這段原始碼前,首先得介紹一下單例模...