C之父再开枪,美国安全局也要碰一碰
作者徐杰承
审校言征
在刚刚过去的2022年,C以4。62的流行增长率,时隔近20年再度荣获了TIOBE的年度编程语言桂冠。而作为C语言的缔造者,C之父BjarneStroustrup最近却显得有些暴躁。
去年9月,微软CTOMarkRussinovich在其社交账号上发布动态称:开发人员是时候停止使用CC来启动新项目,并建议在使用nonGC语言的场景中使用Rust。对此,Bjarne也在一次采访中回怼了Mark的言论。然而就在这次事件平息后不久,一个更具影响力的组织又将矛头指向了C。
2022年年底,美国国家安全局(NSA)在其所发布的《SoftwareMemorySafety》报告中指出:C语言和C语言是不安全的,建议各组织放弃使用CC,并鼓励各组织将编程语言从C和C等转向更加安全的替代语言如C、Rust、Go、Java或Ruby。对此,NSA网络安全主任NealZiring还在一次采访中表示,所有程序员都在犯简单的错误,这些错误依然非常普遍。
NSA的这篇报告,也再次激发了Bjarne的战斗欲望。在经历了数周的准备后,Bjarne于近日发布了一篇名为《Thinkseriouslyaboutsafety;thendosomethingsensibleaboutit》的论文,正式回应了NSA一系列言论。而双方的这场隔空对话,也将C这门拥有近30年历史的老牌编程语言再次推上了风口浪尖。1、NSA:少用或禁用CC
在《SoftwareMemorySafety》报告中,NSA指出:现代社会严重依赖软件的自动化与隐性信任,如果开发人员所编写的软件无法按照预期方式运行,那就意味着有时我们将不得不为恶意目的妥协。目前,恶意利用软件漏洞的行为经常基于内存问题,其中典型的例子便是内存缓冲区益出。
其举例称:微软在2019年的一次会议上就曾表示,自2006年至2018年,70的漏洞是由内存安全问题引起的。恶意攻击者可以利用这些漏洞进行远程代码执行或其他非法行为。而谷歌也于近几年在Chrome浏览器中发现了类似的内存安全漏洞。
常用语言如C和C,虽然提供了很大的自由度和灵活性,但在进行内存管理时,过于依赖于程序员来执行所需的检查内存引用。因此,简单的错误就可能导致基于内存和可利用性的漏洞。虽然软件分析工具可以监测到许多内存实例,管理事务和操作环境选项也可以提供一些保护,但内存安全语言的固有保护可以防止或减轻大多数内存管理问题。
技术的缺陷将使作恶者更容易找到存在问题的代码,使用内存安全语言可以防止程序员引入某些内存相关问题的类型。它们的语言特性将保护程序员无意中引入的内存管理错误。因此,美国国家安全局建议各组织选择明智的做法减少或禁用固有内存保护问题的编程语言,如CC,尽可能使用内存安全语言,如C、Rust、Go、Java或Ruby。2、Bjarne:你们根本不懂C
认真考虑‘安全’,然后采取一些明智的措施这是Bjarne回应NSA的论文的标题。太多人谈论如神话般的C与C,然后开始关注C语言的弱点,但这些缺点在C中完全可以避免,并且C能更加直接的表达程序员的想法。在该文章中Bjarne表示,许多C的使用者停滞不前,NSA完全忽略了C30年来的进步,并将C与C混为一谈,这令人感到非常遗憾。
现在,如果我认为这些‘安全’的语言中任何一种在我说关心的使用范围内优于C,我不认为CC的淡出是一件坏事,但事实并非如此。Bjarne提到,NSA对安全的概念仅限于内存安全,而忽略了一门语言可能被用来违反某种形式的安全保障和十几种其他方式。
安全的目标应该是类型和资源安全,其中每个对象都根据其类型使用,并且没有资源泄露。对于C,这意味着一些运行时规范检查,消除通过空指针的访问并避免类型转换和联合体的误用。C提供了高级工具,如容器、span、rangefor循环和变量,它们可以在不损害生产率或效率的同时提供保障。关于NSA提到的所谓安全语言,Bjarne表示,所有语言都容易收到未经静态验证的代码攻击,每个系统都必须使用硬件,而有效的硬件访问很少是安全的。
此外,Bjarne还提供了安全使用C的一些策略:静态分析,以验证没有不安全的代码被执行编码规则,以简化代码,使工业规模的静态分析可行库,使简化的代码能简化编写,并确保在需要时进行运行时检查
Bjarne提到,目前世界上有数百万C程序员与数十亿行C代码,该语言被应用在包括航空航天、医疗仪器、人工智能机器学习、知识图谱、生物医学及高能物理等领域,自己对于NSA的言论感到震惊。此外,在文章的末尾,Bjarne还对NSA提出了一个灵魂拷问:据我所知,在发布报告前,没有一位专家向C标准委员会进行过资讯,所谓明智的做法是什么,建议列出一个明确的清单。3、谁输谁赢并没那么重要
诚然,C之父与美国国家安全局的这次隔空喊话,让广大开发者饱饱的吃了一次大瓜。但在这场针尖对麦芒的battle中,谁输谁赢其实真的没有那么重要。C不安全、C安全,这两种说法从辩证的角度来看都是正确的。我们必须承认NSA所提出的,的确有些语言在内存安全保障方面的语言特性是优于C的;而对于Bjarne的回应,在合理使用工具和保障规范的前提下,C也确实能够保证其安全性。
作为一门拥有30年历史的老牌编程语言,C依然能够在今天保持其强大的竞争力,并在编程语言排行榜中位居前列,这无疑不证明着C功能的强大,以及其在时代考验下的演进效率。正如Bjarne所说,如今我们拥有着数十亿行的C代码,基于C所编写的软件也运行在世界的每一个角落。无论在过去还是现在,世界上每天都会产生大量的C代码与C开发者,而这一趋势也将在未来继续延续。
每种语言都有自身的优劣势以及适合的应用场景,世界上并没有最好的编程语言,只有最适合的编程语言。在此借由Slashdot上一位网友的留言:你可以用C写出安全的代码么?当然可以,用C、ASM甚至任何成熟的编程语言都可以做到。对于任何成熟语言,关键问题都不在于是否能做到,而在于如何选择和更好地使用它们。参考链接:
https:www。infoworld。comarticle3686517cpluspluscreatorbjarnestroustrupdefendsitssafety。html
https:www。theregister。com20221111nsaurgesorgstouse
https:developers。slashdot。orgstory2301210526236rustsafetyisnotsuperiortocbjarnestroustrupsays
长期的自由人人向往的生活上一篇文章我们一起学习了提前退休,需要准备多少钱呢?,这篇文章我们共同追求一个目标长期的自由。我们都热爱旅游,之前在一部美剧里看过一句台词,印象很深刻房子是我们为自己打造的牢笼,就
实拍越南人民生活照,原来已经这么开放越南属于东南亚地区的国家之一,这几年越南也在大力的发展经济。其实越南在1986年开始学习中国改革开放,初见成效。(此处已添加小程序,请到今日头条客户端查看)只是越南整体来说基础比较
集装箱民宿房可以随便搭建吗?需要哪些手续?价格多少钱一平?民宿就是为了游客来当地旅游时有一个体验当地自然文化生活方式的一种小型住宿设施!近年来随着集装箱房的流行,很多地方选择用漂亮的集装箱房代替传统的民宿建筑,不仅造型美观,搭建还方便,设
徽州不仅仅是赏花登山逛古村秋日徽州地区村落美成了仙境徽州不仅仅是赏花登山逛古村,到了秋日徽州地区村落美成了仙境。01塔川事实上仅枫景而言,更像画里乡村是宏村旁边的塔川村,塔川与北京香山,四川九寨沟,新疆喀纳斯并列为中国最美四大秋色。
神秘湘西,天下凤凰这里原来不只有沈从文这局好玩儿说起湘西,人们的第一印象往往是屈原楚辞中的神巫故事和那些颇有张力的形容词汇,但在作家沈从文的笔下,那里却是一片世外桃源。哪一个才是真实的湘西?来到凤凰古城这个同时存在于真实和想象中
陕西一个古镇,地处三个省份交界点,并且离九寨沟也很近随着社会的进步,人们的休闲时间也会去外面逛逛,看看外面的景色。而古镇一般都是人们常去的地方,但要说到古镇,那是最受欢迎的,因为古镇的建筑都是古代化的,那里的古色古香,都会给人一种肃
中国自己的国家公园,是美国黄石公园13倍,每年只有2000人进入你知道吗?中国也有自己的国家公园,并且是美国黄石国家公园的13倍,那这究竟是怎样一个地方呢?国家公园可不是你家门口的休闲公园,也不同于常见的旅游5A级景区,而是最能够代表一个国家特
渔村与渔夫一些人在这个宁静的地方,能领略到太湖中的美景,处处是美景也能面对太湖进行深沉的思考,沉醉其中而无人打扰。美丽的太湖特别宽阔,浩浩荡荡,看不到边际,很容易让人遐想连篇。在湖中有两个岛
非洲角马全介绍白化角马,还有黄金异种角马,种类有六七种角马是我们熟知的一种动物,近年来,随着与非洲草原相关的纪录片的热播,人们对广袤的非洲草原已经有了一定的向往,对在草原上驰骋的动物也十分熟悉威武雄壮的狮子,高大壮硕的非洲象,凶猛的鳄
日照旅游,在日照穷游的两天交通在市区坐公交确实很方便,每隔十分钟就有一辆,而且有些景点有好几路公交经过。如果稍微远的景点可以骑扫码的共享电驴,这两种交通方式是最便宜的,两天差不多1020元住宿第一次住渔家乐
紫金矿业2022年前三季度净利润166。67亿元同比增长47。47中证智能财讯紫金矿业(601899)10月22日披露2022年第三季度报告。2022年前三季度,公司实现营业总收入2041。91亿元,同比增长20。84归母净利润166。67亿元,