你以為看到了軟體的原始碼,就意味著沒有後門嗎?關於開發環境安全那點兒事兒
廢話不多說,先看兩個新聞
吃瓜群眾帶你瞭解 NMP 包 event-stream 被植入比特幣後門的來龍去脈
第二篇挺長的,先幫總結一下,各位看官有時間可以再慢慢看,挺有意思,可以當看小說打法時間
第一篇
Nodejs生態圈中一個重要的專案event-stream由於作者精力有限,就把開發維護的工作轉讓給了另一個人 結果這個人在這個專案裡偷偷植入了惡意程式碼,會將使用者比特幣錢包裡的比特幣偷走 由於Nodejs使用的包管理工具NPM是鼓勵大家升級版本,因此這個帶惡意程式碼的版本迅速的被升級到了各個使用它的地方,影響面很廣
第二篇
撇開離奇曲折的破案過程不說,純就結果來說其實很簡單
一個通過易語言製作外掛的小夥,在易語言的一個外掛中植入一段惡意程式碼
凡是使用了這個外掛的開發工具開發出來的易語言程式,都會帶著一個後門,可以啟用一個勒索病毒
由於易語言本身用來開發外掛等灰色產業的東西居多,大家對於防毒軟體報警時信任都變成日常操作了
導致這次這個勒索病毒的爆發
是不是感覺都很離奇,正常的開發程式碼都沒問題,單一旦開發環境或者依賴的環境出了問題,我們依然難逃劫難
這其實並不新鮮
在15年的時候,就出現過蘋果的開發軟體XCode如果不從官方渠道下載,很容易下載到被植入了惡意程式碼的開發包,用這個開發出來的app都會帶有竊取蘋果賬號以及可以被遠端控制的的功能,當時也是影響了一大批有名的app
再往前回顧,其實很早就有人提醒過這樣的事兒
Ken Thompson(UNIX的發明者)在1984(比我都大)圖領獎的獲獎演講上問了一個問題 “看到了軟體的原始碼,就意味著沒有後門嗎?編譯器是否可能存在能自我複製的後門?”
我們看到的原始碼距離真正的執行還差著很遠,以JAVA為例,些java程式碼需要IDE(使用記事本的大神不在討論範圍內),程式碼寫完要經過編譯器編譯成位元組碼,位元組碼的執行需要JAVA虛擬機器,同時還需要java自帶的類庫,使用的第三方類庫等等,經歷了非常多的環節,而我們寫的程式碼僅僅是最外面的那一點兒而已
就其中一種來說,還可以想辦法化解,我們要儘可能在官方環境下載相關軟體,說起來簡單,單這其實對版權意識不強的中國人來說也是需要長時間的適應的。可能有些人不同意這種說法,舉個例子,現在有多少使用IDEA
同理,我們在maven上依賴的那些第三方擴充套件,哪些是能保證真正安全的呢?fastjson裡面有沒有問題?spring裡面有沒有可能被注入了?jdbc會不會洩漏我們配置的資料庫配置呢?這些現在都很難找到答案
程式界一直都在強調“我們不要重複造輪子”,但已經造好的輪子怎麼才能讓我們放心的用?
這些問題是需要全球開發者共同努力來回答的,我們也許能有一些標準,有一些手段。也許到最後,我們還是要依靠人性的善良
最後又想起來個事兒,其實前幾年出過一次有人網一個js的庫裡面植入惡意程式碼,結果被NPM的小組審出來了,封殺掉了,這次為啥就沒發現呢,這次的知名度更高使用更廣泛,是因為沒錢沒人了嗎?說到這兒再結合近期的redis閉源,neo4j商業版閉源,為大眾服務做貢獻的組織怎麼能正確的在價值鏈上找到自己的位置真的是個難題
最最後誇誇老羅,回饋開源社群這事兒咋就沒人抄你呢?