华为5G代码被英国喷了:太复杂,看不懂,不知道安全不安全
今天在阮一峰老师的博客里看到一则消息,让人忍俊不禁。
前段时间华为把自己的源代码交给英国进行安全性评估,现在英国的网络安全中心给出了评估结果,新闻报道中说:
华为的代码是一场噩梦,非常复杂,以「不安全」的方式编写,使用「不安全」的语言。考虑到代码的规模和复杂性,导致无法分析代码以寻找错误,更不用说发现隐藏的后门。即使有后门,也无法跟bug相区分。
翻译人话就是,华为的5G代码被英国喷了:太复杂,看不懂,完全不知道安全不安全,分不清Bug和后门。
特意找到了原始的英文报告,这是英国该机构设置的华为网络安全评估中心发布的第五份年度评估报告,发布时间是3月28日,而华为网络安全中心已经存在8年之久,安全评估的事情其实早就开始了,并且是每年审查。
image image报告一共46页,英语学渣匆匆扫了几眼,评估中心先是对自己的工作进行了高度的赞扬,然后表示对华为的整体表现还是满意的!华为在过去的一年里实现了自己承诺,并且代码质量也有了很大的改善,但是还有巴拉巴拉的缺陷...这都是中心辛勤劳作取得成绩!
报告里其实没说审查华为的代码是一场噩梦,也没有说审查工作很难做,所谓噩梦的说法,完全是英文报道的小编自己加的料,大概国外小编的日子也不好过......
报告只是很严谨的表示,我们不能完全保证这是安全的,代码里还有让人不满意的地方,并表示必须要让华为重构(transformation plan),但是对这个过程有点信心不足......
image imageTransformation plan,大概就是年初华为说的,要5年投入20亿美元提升代码质量的事情:
image不过即使代码无可挑剔了,我想,也没有哪个机构敢拍胸脯保证没有安全隐患,安全工作要是有这么好做,哪来那么些黑客和安全公司,而且漏洞和安全事故还每年都有......
华为属于通信行业,通信行业最风光的时候早就过去了,昔日的高科技光辉也彻底被互联网公司的万丈光芒压下去了。但是根据我在这两个行业里有限的从业经历,通信行业对代码质量的要求是远远高于互联网公司的。
别的不说,先看人员配备。
通信公司研发人员和测试人员的比例是1:1,而且开发是开发,测试是测试,泾渭分明的两大帮派,因为关系到各自的绩效,开发人员要少出bug,测试人员要多找bug,常常为这是不是一个Bug争的面红耳赤......
互联网公司流行的口号是全栈,自写自测,8个开发配一个测试,测试人员还不怎么受待见,美其名曰测试开发,可见纯测试人员是多么地被怠慢.....
然后再看对新员工的态度。
通信公司新员工入职后,要正正经经地进行几周不等的全天培训,那可是扎扎实实地培训,有导师、有教程、有实验、有时候还要写代码作业......新人进组后,整个项目组如临大敌,对新人的代码要一审再审三审,还要全组开会,一起教育批判......
互联网公司,额,培训是什么?聚餐么?
然而,即便这样,通信行业领头大哥的代码,还是被喷了....
首先没有端到端的完整性检查,英国的评估中心表示,估计华为自己也搞不清自己构建的每个版本里都有些什么内容......
image然后软件的管理是有缺陷的,增加了漏洞出现的概率:
image再是,虽然改进了不少,但是在软件工程和质量安全方面还是有数量可观的重要缺陷......
image具体有哪些缺陷呢?报告里从二进制文件和软件的一致性、配置管理、第三方组件、软件生命周期管理、测试方案、代码质量等方面,洋洋洒洒地列出了整20大条.....
有一些特别有意思的地方,譬如评估中心到华为上海的研发中心看了下,发现华为正在搞自己的实时操作系统,但是基于一个马上就不被社区维护的kernel 版本,评估中心对此很不放心......华为上海的同学,你的盒饭到了。
评估中心还心痛地发现,你们的代码里用了很多不安全的函数啊,亲:
image还检查了一些华为对华为的编码规范的执行情况,简直不要太贴心!
image不得不说,西方国家在软件工程和方法论方面的造诣是远远超过国内的,多看一些老外主导的重要开源项目就知道了,逻辑代码附带测试代码是标配,翻开代码一看,明显是先确定设计模式,然后填充代码。
至于国内,咳咳,坚持写测试代码的同学,让我看到你的双手!
这种差异大概是从学校教育阶段就开始的,至少在我的受教育经历中,老师们真得只是把教学当成任务,完全没有对「方法」的探讨,被放养的学生都是自己去摸索方向,以至于都毕业领证了,有些同学啊,还没有入门呢......
参加工作以后,还常常见到一些工作多年的同行,对技术缺乏基本认知,对做事方法没有最基础的认识,探讨问题的时候完全是瞎忽悠拽名词......
一般人还犟不过他们,除非从头开始进行一遍基础知识教育,逐一纠正各种想当然的、半知半解的错误认知,妈的......
注意这不是说国内没有大牛,国内大牛的水平是杠杠的,在国际上也是呼风唤雨、叱咤风云,但是整个IT行业从业人员的平均水平就......
在做事情的方式方法上,我们还真得多向老外学习,吸收他们数十年积累传承下来的经验教训。
没事多看看开源社区的代码,看看人家是怎么做事、怎样就事论事交流的、遇到问题是如何解决的,学习一下他们的代码管理维护和发布方法。
有点没想到是,几个国家折腾来折腾去,背后竟然是一场跨国的code review,莫非输赢完全取决于程序员们谁能喷过谁?
你们这些程序员呐,平日不好好写代码,知道自己给国家造成了多大麻烦吗!
下篇就告诉你,要怎样读代码!
image