北京时间4月19日,美国航空航天局 (NASA) 研发的直升机型机器人“机智号” (Ingenuity) 在火星上完成垂直起飞、滞空和垂直降落的动作,全程共计39秒。虽然旅程仅为10英尺(约3.05米)左右,但却成为人类的一大里程碑,证明了受控航天器登陆火星的可能性。
开源软件发挥关键作用
GitHub 发布博客文章指出,实际上构建“机智号”的团队规模要远大于JPL 的6000名员工。这个1.8千克重的直升机背后是 Aero Vironment、洛克希德·马丁和高通等知名公司的承包商,而鼎力支持这款强大软件的,是数千名遍布全球的开源开发人员,而这些人甚至不知道自己做出了多么大的贡献。
“机智号”直升机在其导航计算机上运行着嵌入式 linux 发行版。该版本大部分使用 JPL 的开源飞行控制框架 F Prime (F’) 通过 C++ 编写而成。同时,Python 生态系统从地面控制到飞行建模再到数据处理等整个过程都发挥了关键作用。
近1.2万名开发人员向“机智号”所使用的开源软件贡献了代码、文档、图形设计等,使 “机智号“ 的发射成为可能。为祝贺开源软件的这一历史性时刻,GitHub 为所有贡献人员添加了新徽章,表彰他们对人类发展进步做出的贡献。JPL 分享了为”机智号“做出贡献的所有开源项目,GitHub 以此为据颁发徽章。
这些开源库安全吗?
GitHub 开发者关系的高级总监 Martin Woodward指出,“我们发现了多层次的依赖关系。单个项目可能具有10个或不到10个依赖关系,而且呈蜘蛛网结构,每个依赖关系还依赖于其它项目。不知不觉中,无数开发人员为项目做出了巨大贡献。“NASA 与 GitHub 共享了”机智号“所依赖的59个开源库及其版本,如下图所示。





那么,“机智号“所使用的这些开源软件版本是否安全?奇安信开源卫士团队对此进行了检测。
结果发现,至少有五个开源库中存在严重等级不同的漏洞。其中,“超危”漏洞共1个,“高危”漏洞共10个,“中危”漏洞共10个,“低危”漏洞共1个,共计22个。

以 Python-pillow/Pillow 版本8.1.0为例,具体的检测过程如下。
(1)查验条件:

(2)查验结果:

(3)易受影响的漏洞

开源软件的安全性
正如 GitHub 在文章中所提到的那样,“机智号”大量使用开源软件的情况和当前所有交付的软件系统一样,其中99%的系统依赖于开源组件。Python 的核心贡献人员 Carol Willing 指出,“就像在湖中投掷了一块卵石,小小的贡献就能泛出涟漪,产生更大的影响。而这就是一种开源之美,其他人可以利用你的出色工作并将其发扬光大,让它变得更强大更有意义。“
随着开源软件的广泛应用,它的安全性也愈发重要。开发和交付的加速,使得软件开发环境愈加复杂,对第三方应用和平台的依赖愈发增强。近期,Contrast Labs 发布《2021年开源安全报告》指出,“开源库为攻击者提供了两种主要的漏洞利用途径”,一是通过已发现漏洞实施攻击,二是通过库来源引入漏洞实施攻击。开源软件背后调用或依赖的其它开源软件也可能存在漏洞,这种深层关联下的开源软件很难通过漏洞扫描工具发现,从而导致所有使用最终产品的企业变得易受攻击,而这种情况一直不断上演,比如 OpenSSL “心脏出血”漏洞事件、SolarWinds 开源供应链事件等。因此,需要尽早在开发生命周期中部署开源安全工具和进程,在不耽误开发的情况下对漏洞优先级进行排序、检测并解决它们。
参考来源
- https://github.com/readme/nasa-ingenuity-helicopter
- https://docs.github.com/en/github/setting-up-and-managing-your-github-profile/personalizing-your-profile#list-of-qualifying-repositories-for-mars-2020-helicopter-contributor-badge
- https://mp.weixin.qq.com/s/5_RW08OMx8nC8Icj-r0SKQ
题图:Pixabay License
文内视频:NASA 官网
转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

日本 1F
这开源漏洞这么多,NASA也敢用?有点不敢信
四川省遂宁市 2F
前几天刚学嵌入式linux,没想到火星直升机也跑这系统,离谱🤯
日本 3F
F’框架居然是C++写的,难怪稳定性扛得住火星环境
广西柳州市 4F
Python居然从地面控制到数据处理全包了,生态是真的强
韩国 5F
pillow还有超危漏洞?那飞行图像处理不会出问题吧?
湖北省十堰市 B1
@ 寒江蓑 pillow只是图像处理的一环,但太空环境容不得半点马虎
江苏省苏州市 6F
说实在的,依赖链这么深,查漏太难了,感觉像赌博
山东省潍坊市 7F
我之前做项目就踩过依赖嵌套的坑,升级一个库能崩掉三个模块
河南省安阳市 B1
@ 雪凝霜 前几天刚搞完项目的依赖更新,简直噩梦,一模一样
马来西亚 8F
GitHub发徽章倒是挺暖心,可安全检测能不能也跟上啊
湖北省黄石市 9F
这种级别的项目都用开源,说明社区力量真不能小看
广东省东莞市 10F
要是火星上突然崩了系统,重启都来不及吧hhh
上海市松江区 11F
开源软件虽然漏洞多,但NASA肯定做了冗余设计,不然不敢这么用。
澳大利亚 12F
没想到Python在太空项目里这么重要,看来学Python不亏。
日本 13F
这种依赖嵌套确实头疼,我们项目现在都开始做安全扫描了。
上海市 14F
火星环境那么极端,软件稳定比功能多重要多了。
重庆市 B1
@ 交响曲 超危漏洞在火星上爆发,修都修不了,只能祈祷了吧
浙江省杭州市 15F
给GitHub发徽章这操作挺有意思,算是给开源社区的正向反馈。
湖北省武汉市 16F
超危漏洞在太空项目里出现,听着就吓人,不过应该都打了补丁吧?
广东省广州市 B1
@ 躺平协会会长 重启都不行,火星上蓝屏了只能等地球指令,想想都窒息
日本 17F
嵌入式linux能上火星,我们公司连个工控系统都搞不定,差距太大了。
中国 B1
@ 复古风情 我们厂里连个树莓派都跑不稳linux,人家都上火星了,破防了
新疆乌鲁木齐市 18F
这种项目肯定有备份系统,真崩了也能切到备用的,就是延迟高点。
日本 19F
飞行图像处理应该用了多个库,pillow可能只是其中一环,不过有漏洞总归是隐患。
山东省滨州市 20F
依赖管理现在都有工具了,不过升级前还是得好好测试,不然真容易出问题。
马来西亚 21F
这依赖链太深了,查漏成本得有多高啊🤔
韩国 22F
Python生态强归强,但一堆包版本对不上就离谱
北京市 23F
NASA敢用肯定做过隔离和加固,普通项目可学不来
巴基斯坦 24F
我们实验室用的工控系统连linux都跑不稳,别说上天了
福建省福州市 25F
说白了还是得靠冗余设计顶着,代码再干净也怕意外
北京市 26F
开源是香,但安全审计跟不上,迟早出大事
上海市 27F
没想到自己提的PR也能间接上火星,离谱又骄傲
四川省成都市 28F
这漏洞数量有点吓人,火星上可没法热修复啊
山东省滨州市 29F
pillow那个超危漏洞具体影响啥功能?有人知道吗
山东省滨州市 30F
开源软件上火星,这操作太秀了
四川省巴中市 31F
F’框架用C++写确实稳,但开发效率估计低得一批
湖南省长沙市 32F
开源依赖链深得像迷宫,查漏补丁怕不是要人命
福建省泉州市 33F
前几天刚在项目里遇到pillow版本冲突,没想到NASA也踩这坑
江苏省无锡市宜兴市 34F
火星环境那么恶劣,软件容错肯定拉满了,不然早翻车了
北京市 35F
GitHub发徽章挺酷,但安全检测滞后是不是有点形式主义?
福建省南平市 36F
Python全栈上火星?生态强是真的,就是包管理太玄学
上海市 37F
开源贡献者自己都不知道上了火星,这事挺科幻的。
湖北省咸宁市 B1
@ 甜豆小奶包 这么一说还真挺魔幻的
日本 38F
要是真因为一个低危漏洞导致任务失败,那可太冤了
上海市 39F
嵌入式linux上天成功,说明基础系统其实够用了,别老想着换新轮子
日本 40F
这种关键系统居然还用带漏洞的库,NASA心真大🤔
辽宁省朝阳市 41F
开源库有漏洞还能成功,运气也是实力的一部分吧