MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?
07-12
MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?
攝像頭、路由器,這種白色塑料包裹電路板的玩意兒,都叫「嵌入式設備」。現代醫學表明,嵌入式設備和漂亮小姐姐一樣,拿手好戲就是——「變心」。漂亮小姐姐的事兒咱不懂,攝像頭的事兒今天中哥能給你多嘮幾句。Lets ROCK
推薦閱讀:
來自專欄淺黑科技
原創: 史中 淺黑科技 淺黑科技
淺友們大家好~我是史中,我的日常生活是開撩五湖四海的科技大牛,我會嘗試各種姿勢,把他們的無邊腦洞和溫情故事講給你聽。如果你特別想聽到誰的故事,不妨加微信(微信號:shizhongst)告訴我。MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?
文 | 史中@淺黑科技我的一個哥們,一直以來的夢想突然實現了:他想當演員,最近他在草榴上發現了自己主演的電影。。。攝像機的角度很獨特,屬於一鏡到底的新浪潮後現代先鋒主義攝影流派,片尾也沒個演職員表。順著方向看,片子的導演兼攝像應該是他家的攝像頭。他把攝像頭一把扯下來,攝像頭呆萌乖巧。看起來一副「兔兔這麼可愛為什麼要吃兔兔」的表情。這世界上最野性的背叛,果然看上去都賊XX淡雅。1、嵌入式設備天生「體弱多病」
小朋友,先考你一個問題,嵌入式設備裡面運行的系統叫什麼啊?對!叫嵌入式系統。(我們今天主要討論的是智能攝像頭、智能電視這一類高級的嵌入式系統。)說實話,很多寨廠的原則就是,嵌入式系統,能嵌進去就完事了。至於攝像頭是否會被黑客控制,至於用戶,也就是你,當不當草榴男豬腳,屬實管不著。當然,廠商也有苦衷,因為這嵌入式系統,很多都是基於開源的 Linux 系統開發的。(就連你每天用的手機,Android 或者 iOS,追根溯源都是 Linux 的親戚。)而 Linux 本身是個體弱多病的體質,經常會被發現這樣那樣的漏洞,於是廠商生產時要做足「體檢」,把該打的疫苗打上,把該補的補丁補好。體檢水平不好的廠商,產品就可能會被黑客攻擊,發生文章開頭的一幕。至於 Linux 為什麼是一個體弱多病的系統,可以做個簡單的比喻:1)就像一個身體不好的小孩紙,可能得感冒、肺炎、腸炎等等等,雖然病症不同,但歸根結底都是因為免疫力不夠好。2)Linux 系統被黑客發現各種漏洞。雖然攻擊方式五花八門,但是殊途同歸,最後90%都歸結為「內存破壞」。再追根溯源,因為使用 C 語言編寫,所以傳統 Linux 系統全家在內存的保護方面都存在「免疫缺陷」。
如此說來,攝像頭被攻擊,你當個男豬腳,這事兒太正常了。那,就沒人管管嗎?2、給 Linux 做「轉基因」的團隊當然有人管。首先,很多大廠,例如(BAT3HJ 百度阿里騰訊360華為京東)都對自己生產的攝像頭、路由器嚴加檢查,加上自己的技術能力好,各種體檢全都招呼,所以出廠的硬體一般都打好了補丁,相對安全。其次,淺黑科技的好盆友,一眾「白帽子黑客」,每天都在奮力地尋找攝像頭、路由器或者其他嵌入式設備的漏洞,然後提交給廠商。廠商尷尬而不失禮貌地把漏洞修好。
再次,最近我遇到一個神奇的團隊,他們的「野心」更大:想直接給 Linux 換一個「轉基因」的強悍免疫系統,從根本上斷了漏洞產生的根兒。這個神奇的團隊就是百度安全實驗室。他們這種直接揮刀給 Linux 做手術「一勞永逸」的玩法,可以說相當彪悍了。我決定仔細研究研究。他們做的這個系統叫做 MesaLock Linux,是一個非盈利的開源項目。世界上各路大神都可以為這個系統添磚加瓦做貢獻,大家也都不從這個項目里賺錢,就像做公益。前兩天,我和這個項目(目前)主要的代碼貢獻者 mssun 聊了聊。3、代碼的小小世界
想像你縮小,再縮小,再縮小。你小到可以鑽進攝像頭的外殼,進入墨綠的電路板,跟那些川流不息的電子站在一起。這樣你就 會被電死 進入了代碼的小世界。1)我們不妨先去探訪一下傳統的 Linux 代碼世界。這是一個鳥語花香,相對自由的世界,和我們的真實世界差不多:各個繁忙的路口,紅綠燈自顧自交替冥滅。來往車輛(也就是進程)繁忙。不過大多數情況下,都是一派秩序井然的景象——紅燈停,綠燈行,大家在各自車道各安其事。不過,你懂的。
1.經常有車不按套路出牌,和別的車爭搶車道(數據競爭:Data Race);2.也經常有車闖紅燈,導致交通事故(程序崩潰:Crash);3.還有人把成車隨便停在路邊無人看管(空指針:null),被其他壞人開走(釋放後利用:UAF)。4.等等等等。我描述的這些種種,其實本質上都是漏洞造成的。人們總說漏洞,到底什麼是漏洞呢?一句話:就是一個系統里發生了本來不該發生的事情。(比如你女票的手機平白無故地連上了你哥們家的 Wi-Fi。)
這個世界,用一句話來說,就是:規矩多。
同樣還是一個繁忙的路口,紅綠燈交替冥滅,但不同的是,路口站了一位警察叔叔。他會「幫助」你遵守規則。1、每輛車只能佔用一個車道,如果你想要使用另一條車道,就必須在警察叔叔的監督下,完成車道的交接,你放棄了 A 車道,轉而擁有了 B 車道。你可能覺得好麻煩。但規矩有規矩的好處,這樣就完全杜絕了爭搶車道發生事故的可能。這個例子對應到代碼上就是:同一個內存地址,只能對應一個變數。如果它屬於變數 A,那麼它就一直屬於變數 A,如果變數 B 要使用它,就要辦理一個「交接手續」。這種情況下,就不會出現內存競爭的問題了。(這就叫做:內存所有權機制。)2、你開完一輛車,絕不可以隨意停在路邊。警察叔叔會第一時間趕到,監督你把車開進車庫,以防被壞人開走。這個例子對應到代碼上就是:如果一個變數 A 使用了某個內存地址,當它的進程運行結束後,就必須主動釋放這塊內存。這樣,就不會出現讓程序員頭疼的「空指針」的問題了。(這就叫做:內存生命周期管理)處女座肯定願意生活在這樣的世界裡:看出來了么,傳統的 Linux 和 esaLockM Linux,這兩個世界運行規律相同,最大的區別就在於,一個相對自由,不太規矩;另一個處於「警察」的強監管之下,井井有條。問:那麼,百度安全實驗室是怎麼讓 MesaLock Linux 中擁有說一不二的警察叔叔呢?答:因為他們使用了兩種有「強迫症」的編程語言——Rust 和 Go——來編寫了 Linux 的部分代碼。Rust 這種語言,本身就自帶「警察」屬性,可以保證大家都規規矩矩地調用內存,排排站吃果果,誰鬧事就大刑伺候。mssun 解釋了一下:在傳統的 Linux 世界裡,最容易出現問題的,就是 Linux 的用戶空間應用程序。所以,只要把這部分用 Rust 語言重寫,就能規避掉絕大部分出現「已知問題」的可能性。在他眼裡,MesaLock Linux 應該是一勞永逸解決嵌入式設備安全性的好方法。所以,從 2017 年夏天開始,他就按照心中的藍圖開始搭建這個系統,用 Rust 語言編寫了很多 Linux 的用戶空間程序,相當於在最混亂的路口安插了很多「警察」。講真,這事兒有點難度。難度在哪兒呢?因為 Rust 代碼機制嚴謹,而人腦又經常犯點小錯誤,所以編寫的程序經常會各種龜毛地通不過編譯。你回憶一下小時候打《超級瑪麗》的時候,每次都卡在不同的地方但就是通不了關的悲慘記憶。大概就是這個感覺。每當卡住,同事們就看到角落裡,mssun 舉著鍵盤在桌子上「啪啪啪啪」。啪啪啪之後,接著滾回去修改代碼。雖然作為程序員,為了用戶的安全,寫代碼寫到痛不欲生。但是我想說,講真,這和我們用戶有什麼關係呢?哈哈哈哈哈哈!!!當然也沒有那麼悲慘了。其實經過一段時間血淚洗禮, mssun 說他已經開始輕車熟路,歡迎各位程序猿上車。。。 4、攝像頭、路由器、黑匣子說了一大圈,我那朋友,草榴男豬腳還被我們晾在一邊呢。。。我們還是回頭看他家裡的攝像頭、路由器。其實百度安全實驗室這個法子,未嘗不是一條有趣的路線。這些嵌入式設備,如果嵌入的是 MesaLock Linux,那麼無疑安全性就會大大提高。所以,下次再見到男豬腳,我決定建議他購買一個搭載 MesaLock Linux 的攝像頭。雖然我一直在說攝像頭、路由器,但是嵌入式設備可遠遠不止這些。我給你開個腦洞:黑匣子。世界上最早的黑匣子誕生在1950年,裡面有一卷金屬箔,用針在上面划出痕迹,反應數據的變化。初代黑匣子能記錄航向、高度、空速、垂直過載和時間等5個飛行參數,不過,對於飛機來說,僅僅記錄這幾個參數的玩意兒只能用簡陋來形容。第二代黑匣子,跟盒式磁帶差不多同一個年代出現(1960)。沒錯,它用來存儲信息的介質換成了磁帶。有了新的材料,它可以記錄幾十個參數。第三代黑匣子,出現在1990年代,你猜對了,存儲介質變成了硅。這時候它已經可以記錄幾百個飛機參數了。而第四代黑匣子,儼然就是一台籠罩了全金屬外殼的微型電腦,它可以記錄上千條參數,還可以定時向衛星發送數據。在我的循循善誘下,你可能明白了,「黑匣子」也是一種嵌入式設備啊。而且,黑匣子是一種對安全性要求高到變態的嵌入式設備。黑匣子的安全性,應該分為兩部分:1、全金屬扛虐的機甲外殼;2、金剛不壞的「內芯世界」。你想想看,如果黑匣子上的數據被黑客篡改,那麼對於一次事故的記錄將會完全被反轉。就像電影《少數派報告》里講的那樣,真兇逍遙法外,而善良的人卻被冤枉被各路牛鬼蛇神追殺。推薦閱讀:
※升級 kernel 4.9 體驗 TCP BBR 記錄
※怎麼才能翻過公司防火牆 訪問自己的網站?
※有哪些 Linux 逆向相關的學習資料推薦?
※有哪些適合舊電腦且對新手友好的Linux發行版?
※Linux各發行版介紹(入門向)