MesaLock Linux:能用在黑匣子里的操作系统是什么样? – 作者:史中浅黑科技


浅友们大家好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你特别想听到谁的故事,不妨加微信(微信号:shizhongst)告诉我。

MesaLock Linux:能用在黑匣子里的操作系统是什么样?


文 | 史中@浅黑科技


我的一个哥们,一直以来的梦想突然实现了:

他想当演员,

最近他在草榴上发现了自己主演的电影。。。

摄像机的角度很独特,属于一镜到底的新浪潮后现代先锋主义摄影流派,片尾也没个演职员表。顺着方向看,片子的导演兼摄像应该是他家的摄像头。

他把摄像头一把扯下来,摄像头呆萌乖巧。看起来一副“兔兔这么可爱为什么要吃兔兔”的表情。

image.png

摄像头、路由器,这种白色塑料包裹电路板的玩意儿,都叫“嵌入式设备”。现代医学表明,嵌入式设备和漂亮小姐姐一样,拿手好戏就是——“变心”。

漂亮小姐姐的事儿咱不懂,摄像头的事儿今天中哥能给你多唠几句。

image.png

Let’s ROCK

1、嵌入式设备天生“体弱多病”

小朋友,先考你一个问题,嵌入式设备里面运行的系统叫什么啊?对!叫嵌入式系统。(我们今天主要讨论的是智能摄像头、智能电视这一类高级的嵌入式系统。)

说实话,很多寨厂的原则就是,嵌入式系统,能嵌进去就完事了。至于摄像头是否会被黑客控制,至于用户,也就是你,当不当草榴男猪脚,属实管不着。

当然,厂商也有苦衷,因为这嵌入式系统,很多都是基于开源的 Linux 系统开发的。(就连你每天用的手机,Android 或者 iOS,追根溯源都是 Linux 的亲戚。)而 Linux 本身是个体弱多病的体质,经常会被发现这样那样的漏洞,于是厂商生产时要做足“体检”,把该打的疫苗打上,把该补的补丁补好。

体检水平不好的厂商,产品就可能会被黑客攻击,发生文章开头的一幕。

image.png

至于 Linux 为什么是一个体弱多病的系统,可以做个简单的比喻:

1)就像一个身体不好的小孩纸,可能得感冒、肺炎、肠炎等等等,虽然病症不同,但归根结底都是因为免疫力不够好。

2)Linux 系统被黑客发现各种漏洞。虽然攻击方式五花八门,但是殊途同归,最后90%都归结为“内存破坏”。再追根溯源,因为使用 C 语言编写,所以传统 Linux 系统全家在内存的保护方面都存在“免疫缺陷”。

如此说来,摄像头被攻击,你当个男猪脚,这事儿太正常了。

那,就没人管管吗?

image.png

2、给 Linux 做“转基因”的团队

当然有人管。

首先,很多大厂,例如(BAT3HJ 百度阿里腾讯360华为京东)都对自己生产的摄像头、路由器严加检查,加上自己的技术能力好,各种体检全都招呼,所以出厂的硬件一般都打好了补丁,相对安全。

其次,浅黑科技的好盆友,一众“白帽子黑客”,每天都在奋力地寻找摄像头、路由器或者其他嵌入式设备的漏洞,然后提交给厂商。厂商尴尬而不失礼貌地把漏洞修好。

再次,最近我遇到一个神奇的团队,他们的“野心”更大:想直接给 Linux 换一个“转基因”的强悍免疫系统,从根本上断了漏洞产生的根儿。

这个神奇的团队就是百度安全实验室。他们这种直接挥刀给 Linux 做手术“一劳永逸”的玩法,可以说相当彪悍了。

我决定仔细研究研究。

image.png

他们做的这个系统叫做 MesaLock Linux,是一个非盈利的开源项目。世界上各路大神都可以为这个系统添砖加瓦做贡献,大家也都不从这个项目里赚钱,就像做公益。

前两天,我和这个项目(目前)主要的代码贡献者 mssun 聊了聊。

想象你缩小,再缩小,再缩小。

你小到可以钻进摄像头的外壳,进入墨绿的电路板,跟那些川流不息的电子站在一起。

这样你就 会被电死 进入了代码的小世界。

1)我们不妨先去探访一下传统的 Linux 代码世界。


这是一个鸟语花香,相对自由的世界,和我们的真实世界差不多:

各个繁忙的路口,红绿灯自顾自交替冥灭。来往车辆(也就是进程)繁忙。不过大多数情况下,都是一派秩序井然的景象——红灯停,绿灯行,大家在各自车道各安其事。

image.png

传统 Linux 的世界,差不多就是这样。


不过,你懂的。

1.经常有车不按套路出牌,和别的车争抢车道(数据竞争:Data Race);

2.也经常有车闯红灯,导致交通事故(程序崩溃:Crash);

3.还有人把成车随便停在路边无人看管(空指针:null),被其他坏人开走(释放后利用:UAF)。

4.等等等等。

image.png

我描述的这些种种,其实本质上都是漏洞造成的。

人们总说漏洞,到底什么是漏洞呢?

一句话:就是一个系统里发生了本来不该发生的事情。(比如你女票的手机平白无故地连上了你哥们家的 Wi-Fi。)

image.png

在《盗梦空间》里,突然发生的爆裂,就像系统漏洞引发的崩溃。


在传统 Linux 的世界,就是因为有很多规则的空子可以钻,所以出现了各种意料不到的漏洞。于是交警各种忙前忙后,“救火”处理事故,开罚单,但还是不断有新的问题发生。

image.png

2)接下来我带你探访一下 MesaLock Linux 的代码世界。


这个世界,用一句话来说,就是:规矩多。

同样还是一个繁忙的路口,红绿灯交替冥灭,但不同的是,路口站了一位警察叔叔。

他会“帮助”你遵守规则。

image.png

1、每辆车只能占用一个车道,如果你想要使用另一条车道,就必须在警察叔叔的监督下,完成车道的交接,你放弃了 A 车道,转而拥有了 B 车道。你可能觉得好麻烦。但规矩有规矩的好处,这样就完全杜绝了争抢车道发生事故的可能。

这个例子对应到代码上就是:同一个内存地址,只能对应一个变量。如果它属于变量 A,那么它就一直属于变量 A,如果变量 B 要使用它,就要办理一个“交接手续”。这种情况下,就不会出现内存竞争的问题了。(这就叫做:内存所有权机制。)

2、你开完一辆车,绝不可以随意停在路边。警察叔叔会第一时间赶到,监督你把车开进车库,以防被坏人开走。

这个例子对应到代码上就是:如果一个变量 A 使用了某个内存地址,当它的进程运行结束后,就必须主动释放这块内存。这样,就不会出现让程序员头疼的“空指针”的问题了。(这就叫做:内存生命周期管理)

处女座肯定愿意生活在这样的世界里:

image.png

看出来了么,传统的 Linux 和 MesaLock Linux,这两个世界运行规律相同,最大的区别就在于,一个相对自由,不太规矩;另一个处于“警察”的强监管之下,井井有条。

问:那么,百度安全实验室是怎么让 MesaLock Linux 中拥有说一不二的警察叔叔呢?

答:因为他们使用了两种有“强迫症”的编程语言——Rust 和 Go——来编写了 Linux 的部分代码。Rust 这种语言,本身就自带“警察”属性,可以保证大家都规规矩矩地调用内存,排排站吃果果,谁闹事就大刑伺候。

image.png

mssun 解释了一下:

在传统的 Linux 世界里,最容易出现问题的,就是 Linux 的用户空间应用程序。所以,只要把这部分用 Rust 语言重写,就能规避掉绝大部分出现“已知问题”的可能性。

在他眼里,MesaLock Linux 应该是一劳永逸解决嵌入式设备安全性的好方法。所以,从 2017 年夏天开始,他就按照心中的蓝图开始搭建这个系统,用 Rust 语言编写了很多 Linux 的用户空间程序,相当于在最混乱的路口安插了很多“警察”。

讲真,这事儿有点难度。难度在哪儿呢?

因为 Rust 代码机制严谨,而人脑又经常犯点小错误,所以编写的程序经常会各种龟毛地通不过编译。你回忆一下小时候打《超级玛丽》的时候,每次都卡在不同的地方但就是通不了关的悲惨记忆。大概就是这个感觉。每当卡住,同事们就看到角落里,mssun 举着键盘在桌子上“啪啪啪啪”。

image.png

啪啪啪之后,接着滚回去修改代码。

虽然作为程序员,为了用户的安全,写代码写到痛不欲生。

但是我想说,

讲真,

这和我们用户有什么关系呢?

哈哈哈哈哈哈!!!

当然也没有那么悲惨了。其实经过一段时间血泪洗礼, mssun 说他已经开始轻车熟路,欢迎各位程序猿上车。。。 

4、摄像头、路由器、黑匣子

说了一大圈,我那朋友,草榴男猪脚还被我们晾在一边呢。。。

我们还是回头看他家里的摄像头、路由器。

其实百度安全实验室这个法子,未尝不是一条有趣的路线。这些嵌入式设备,如果嵌入的是 MesaLock Linux,那么无疑安全性就会大大提高。

所以,下次再见到男猪脚,我决定建议他购买一个搭载 MesaLock Linux 的摄像头。

虽然我一直在说摄像头、路由器,但是嵌入式设备可远远不止这些。

我给你开个脑洞:

黑匣子。


世界上最早的黑匣子诞生在1950年,里面有一卷金属箔,用针在上面划出痕迹,反应数据的变化。初代黑匣子能记录航向、高度、空速、垂直过载和时间等5个飞行参数,不过,对于飞机来说,仅仅记录这几个参数的玩意儿只能用简陋来形容。

image.png第二代黑匣子,跟盒式磁带差不多同一个年代出现(1960)。没错,它用来存储信息的介质换成了磁带。有了新的材料,它可以记录几十个参数。

image.png第三代黑匣子,出现在1990年代,你猜对了,存储介质变成了硅。这时候它已经可以记录几百个飞机参数了。

image.png

在我的循循善诱下,你可能明白了,“黑匣子”也是一种嵌入式设备啊。而且,黑匣子是一种对安全性要求高到变态的嵌入式设备。

黑匣子的安全性,应该分为两部分:

1、全金属扛虐的机甲外壳;

2、金刚不坏的“内芯世界”。

你想想看,如果黑匣子上的数据被黑客篡改,那么对于一次事故的记录将会完全被反转。就像电影《少数派报告》里讲的那样,真凶逍遥法外,而善良的人却被冤枉被各路牛鬼蛇神追杀。

image.png

《少数派报告》讲述了记忆被篡改,真凶逍遥法外的故事。


而且,如果你觉得黑匣子仅仅是用在飞机里的,就错了。在未来自动驾驶的汽车里,都要安装黑匣子,因为人们需要依靠它记录的信息,分析自动驾驶系统究竟出了什么错误。以此类推,甚至未来在摩拜单车里都需要黑匣子。

所以 MesaLock Linux 目前也在适配百度自家的自动驾驶系统的黑匣子。这个项目也是百度安全 OASES 联盟中的一个。(另外几个技术是:KARMA 热修复,OASP,OpenRASP,MesaLink,如下图所示。)

image.png

OASES 全家福。

5、说说开源

最后,我还是想说下开源。

MesaLock Linux 现在(2018年5月)的版本号是 0.2。这意味着它还只是一个雏形。根据“道儿上的”规矩,一般等到1.0版本的时候,一个软件才到了“可用”的状态。

而从 0.2 到 1.0,中间还有漫漫长路要走。这意味着,假如你想买嵌入 MesaLock Linux 系统的摄像头,起码还等要半年时间。

不过,MesaLock Linux 是一个开源系统。如果用餐饮来比喻,开源系统不是麦当劳、肯德基这样的具体餐馆,而是像“番茄芝士牛肉汉堡”这一类食品。只要你喜欢它,人人都可以推广它。如果因为你的推广,后来满大街的西餐店都卖“番茄芝士牛肉汉堡”,你也能更方便地买到它了,这就是好处。

所以,一个开源系统被大家接受,其实也不是靠一个人,或者一个团队,而是靠整个社区各种人的贡献。

image.png

MesaLock Linux 在 GitHub 上的简介

所以,百度安全实验室要做的事情就是如下三个:

1、在冷启动阶段,孤独地自己写代码,一点点搭建起来 MesaLock Linux 的雏形;

2、不断地在 GitHub 或者其他社区中向大家介绍 MesaLock Linux;

3、制定一个远景的路线图,让大家知道 MesaLock Linux 想要建造一个“有秩序”的系统空间,从而让万物都变得更安全。用未来的规划,吸引愿意加入的程序猿或者制造商,一起来实现它,一起来使用它。

为了方便全世界的开发者都能加入 MesaLock Linux 的代码贡献,mssun 用近乎“洁癖”的方法在写基础代码,每写一块儿,都会用非常详细的英语标注出自己这样写的原因是什么,是出于怎样的思考。

image.png

MesaLock Linux 在 GitHub 上的进展。


这样虽然很费时间,但是“其他人看历史记录的时候,就能更准确地理解代码的意义,跟上项目的进度。”

有时我看到,微博上有些留言会讽刺国产系统。虽然他们没有针对 MesaLock Linux,但是我还是会觉得刺耳。我只能更努力地去写代码。希望在未来,发源自中国的安全嵌入式系统,能够被世界认可,也被我们的同胞认可。

mssun 说。

现在,MesaLock Linux 在 GitHub 上已经获得了一百多颗星星,也逐渐收到来自美国和世界各地的程序员想加入社区的请求,一切看起来都还不错。

他不知道 MesaLock Linux 究竟能发展到什么程度。

但我觉得,这件事儿值得做。

他说。

程序员们无私地为大家贡献开源的安全系统,我觉得我也应该尽一份力。所以我把 MesaLock Linux 的链接放在这里,感兴趣的盆友欢迎支持~

https://github.com/mesalock-linux/mesalock-distro

image.png

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

不想走丢的话,你也可以关注我的公众号“浅黑科技”

来源:freebuf.com 2018-07-16 16:18:30 by: 史中浅黑科技

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论