MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?

MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?

來自專欄淺黑科技

原創: 史中 淺黑科技 淺黑科技

淺友們大家好~我是史中,我的日常生活是開撩五湖四海的科技大牛,我會嘗試各種姿勢,把他們的無邊腦洞和溫情故事講給你聽。如果你特別想聽到誰的故事,不妨加微信(微信號:shizhongst)告訴我。

MesaLock Linux:能用在黑匣子里的操作系統是什麼樣?

文 | 史中@淺黑科技

我的一個哥們,一直以來的夢想突然實現了:

他想當演員,

最近他在草榴上發現了自己主演的電影。。。

攝像機的角度很獨特,屬於一鏡到底的新浪潮後現代先鋒主義攝影流派,片尾也沒個演職員表。順著方向看,片子的導演兼攝像應該是他家的攝像頭。

他把攝像頭一把扯下來,攝像頭呆萌乖巧。看起來一副「兔兔這麼可愛為什麼要吃兔兔」的表情。

這世界上最野性的背叛,果然看上去都賊XX淡雅。

攝像頭、路由器,這種白色塑料包裹電路板的玩意兒,都叫「嵌入式設備」。現代醫學表明,嵌入式設備和漂亮小姐姐一樣,拿手好戲就是——「變心」。

漂亮小姐姐的事兒咱不懂,攝像頭的事兒今天中哥能給你多嘮幾句。

Lets ROCK

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 代碼世界。

這是一個鳥語花香,相對自由的世界,和我們的真實世界差不多:

各個繁忙的路口,紅綠燈自顧自交替冥滅。來往車輛(也就是進程)繁忙。不過大多數情況下,都是一派秩序井然的景象——紅燈停,綠燈行,大家在各自車道各安其事。

傳統 Linux 的世界,差不多就是這樣。

不過,你懂的。

1.經常有車不按套路出牌,和別的車爭搶車道(數據競爭:Data Race);

2.也經常有車闖紅燈,導致交通事故(程序崩潰:Crash);

3.還有人把成車隨便停在路邊無人看管(空指針:null),被其他壞人開走(釋放後利用:UAF)。

4.等等等等。

我描述的這些種種,其實本質上都是漏洞造成的。

人們總說漏洞,到底什麼是漏洞呢?

一句話:就是一個系統里發生了本來不該發生的事情。(比如你女票的手機平白無故地連上了你哥們家的 Wi-Fi。)

在《盜夢空間》里,突然發生的爆裂,就像系統漏洞引發的崩潰。

在傳統 Linux 的世界,就是因為有很多規則的空子可以鑽,所以出現了各種意料不到的漏洞。於是交警各種忙前忙後,「救火」處理事故,開罰單,但還是不斷有新的問題發生。

2)接下來我帶你探訪一下 MesaLock Linux 的代碼世界。

這個世界,用一句話來說,就是:規矩多。

同樣還是一個繁忙的路口,紅綠燈交替冥滅,但不同的是,路口站了一位警察叔叔。

他會「幫助」你遵守規則。

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、金剛不壞的「內芯世界」。

你想想看,如果黑匣子上的數據被黑客篡改,那麼對於一次事故的記錄將會完全被反轉。就像電影《少數派報告》里講的那樣,真兇逍遙法外,而善良的人卻被冤枉被各路牛鬼蛇神追殺。

《少數派報告》講述了記憶被篡改,真兇逍遙法外的故事。

而且,如果你覺得黑匣子僅僅是用在飛機里的,就錯了。在未來自動駕駛的汽車裡,都要安裝黑匣子,因為人們需要依靠它記錄的信息,分析自動駕駛系統究竟出了什麼錯誤。以此類推,甚至未來在摩拜單車裡都需要黑匣子。

所以 MesaLock Linux 目前也在適配百度自家的自動駕駛系統的黑匣子。這個項目也是百度安全 OASES 聯盟中的一個。(另外幾個技術是:KARMA 熱修復,OASP,OpenRASP,MesaLink,如下圖所示。)

OASES 全家福。

5、說說開源

最後,我還是想說下開源。

MesaLock Linux 現在(2018年5月)的版本號是 0.2。這意味著它還只是一個雛形。根據「道兒上的」規矩,一般等到1.0版本的時候,一個軟體才到了「可用」的狀態。

而從 0.2 到 1.0,中間還有漫漫長路要走。這意味著,假如你想買嵌入 MesaLock Linux 系統的攝像頭,起碼還等要半年時間。

不過,MesaLock Linux 是一個開源系統。如果用餐飲來比喻,開源系統不是麥當勞、肯德基這樣的具體餐館,而是像「番茄芝士牛肉漢堡」這一類食品。只要你喜歡它,人人都可以推廣它。如果因為你的推廣,後來滿大街的西餐店都賣「番茄芝士牛肉漢堡」,你也能更方便地買到它了,這就是好處。

所以,一個開源系統被大家接受,其實也不是靠一個人,或者一個團隊,而是靠整個社區各種人的貢獻。

MesaLock Linux 在 GitHub 上的簡介

所以,百度安全實驗室要做的事情就是如下三個:

1、在冷啟動階段,孤獨地自己寫代碼,一點點搭建起來 MesaLock Linux 的雛形;

2、不斷地在 GitHub 或者其他社區中向大家介紹 MesaLock Linux;

3、制定一個遠景的路線圖,讓大家知道 MesaLock Linux 想要建造一個「有秩序」的系統空間,從而讓萬物都變得更安全。用未來的規劃,吸引願意加入的程序猿或者製造商,一起來實現它,一起來使用它。

為了方便全世界的開發者都能加入 MesaLock Linux 的代碼貢獻,mssun 用近乎「潔癖」的方法在寫基礎代碼,每寫一塊兒,都會用非常詳細的英語標註出自己這樣寫的原因是什麼,是出於怎樣的思考。

MesaLock Linux 在 GitHub 上的進展。

這樣雖然很費時間,但是「其他人看歷史記錄的時候,就能更準確地理解代碼的意義,跟上項目的進度。」

有時我看到,微博上有些留言會諷刺國產系統。雖然他們沒有針對 MesaLock Linux,但是我還是會覺得刺耳。我只能更努力地去寫代碼。希望在未來,發源自中國的安全嵌入式系統,能夠被世界認可,也被我們的同胞認可。

mssun 說。

現在,MesaLock Linux 在 GitHub 上已經獲得了一百多顆星星,也逐漸收到來自美國和世界各地的程序員想加入社區的請求,一切看起來都還不錯。

他不知道 MesaLock Linux 究竟能發展到什麼程度。

但我覺得,這件事兒值得做。

他說。

程序員們無私地為大家貢獻開源的安全系統,我覺得我也應該盡一份力。所以我把 MesaLock Linux 的鏈接放在這裡,感興趣的盆友歡迎支持~

github.com/mesalock-lin

再自我介紹一下吧。我叫史中,是一個傾心故事的科技記者。我的日常是和各路大神聊天。如果想和我做朋友,可以關注微博:@史中方槍槍,或者搜索微信:shizhongst

不想走丟的話,你也可以關注我的公眾號「淺黑科技」


推薦閱讀:

升級 kernel 4.9 體驗 TCP BBR 記錄
怎麼才能翻過公司防火牆 訪問自己的網站?
有哪些 Linux 逆向相關的學習資料推薦?
有哪些適合舊電腦且對新手友好的Linux發行版?
Linux各發行版介紹(入門向)

TAG:Linux | 代碼 | 操作系統 |