文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

最安全的编程语言:Rust

2024-12-03 09:04

关注

在IT巨头那里,Rust尤其受到重视。例如,微软曾专门委派一名实习生,用Rust重写一个至关重要的网络处理程序,该程序的内存安全漏洞过去让微软安全响应中心(MSRC)头疼不已。

[[389175]]

Rust已经连续五年被开发人员评为“最受喜爱”的编程语言,因为它可以避免某些类型的内存安全错误,能从根本上改善软件漏洞的现状。

让Rust声名远播的优点还包括:提供C和C++的速度和控制能力,同时还提供了其他语言(例如Go和Python)的安全性和安全性保证。MSRC将近70%的漏洞归类为内存安全问题,因此消除此类漏洞至关重要。

MSRC软件工程师Alexander Clarke近日发文表达了对Rust的偏爱,他在博客中指出,尽管用C++编译可能会更容易,但是生成的程序更有可能出现错误和漏洞。

Alexander说:“Rust编译器的错误消息功能特别有用。”“通过错误消息,Rust能确切告诉你代码为什么不正确,并给出解决建议,从而落实了安全编程的概念。”

在Mozilla采用Rust为Firefox浏览器重写代码十多年之后,Rust可能已准备就绪。

虽然当前Rust的采用率仍然很低,根据“StackOverflow 2020开发人员调查”,仅5.1%的开发人员使用Rust语言,但许多大型公司已承诺在特定的开发项目中使用Rust。

从2016年开始,Mozilla基金会就开始在推出使用Firefox浏览器中的Rust语言开发的代码。2019年,微软表示其打算更广泛地采用Rust在Windows中编写系统软件。在2021年2月,Mozilla拆分了该项目,由新的Rust Foundation管理,项目的创始赞助商包括微软、谷歌、亚马逊和华为。

为什么Rust越来越受欢迎?

Rust Foundation的临时执行董事Ashley Williams表示,这不仅与速度和安全性有关,至少对开发人员而言也是如此:“实际上,人们对Rust的赞誉,不仅包括语言和编译器,还包括高人气的开发社区和一流的软件包管理器。”

对于企业而言,是否采用Rust取决于Rust的短板——Rust的缺点是什么?很多开发人员发现Rust的编译器喜欢无缘无故地报警并拒绝工作;某些编码模式会导致缓冲区溢出,释放后使用(use-after-free)漏洞,内存两次释放问题以及引用空指针。

虽然尚存在一些问题,瑕不掩瑜,Rust的安全性的回报足够诱人。以微软为例,Rust可以帮助微软消除大部分CVE漏洞。微软首席云开发倡导者Ryan Levick在一篇博客文章中说,使用编程语言构建核心系统组件可以帮助减少主要的漏洞来源。

他说:“我们相信Rust在编写安全系统软件方面会改变游戏规则。”“Rust提供编写底层系统所需的性能和控制,同时使软件开发人员能够编写健壮、安全的程序。”

当然,我们也需要留神编程语言安全性的过分夸大。

1996年1月,Sun Microsystems(升阳公司)宣布推出Java 1.0,鼓吹可移植代码(例如“一次编写,随处运行”),Sun还吹捧了许多安全属性,例如自动内存管理(即“垃圾回收”)以及类型安全性和防止小程序(Applets)修改系统资源的隔离功能等。

时至今日,根据StackOverflow调查,Java的使用率约为40%,仅次于JavaScript、HTML/CSS、SQL和Python,位居第五。但是,根据《2020年开源安全状况》,在2019年开源组件中发现的6,000多个漏洞中,Java程序占15%,仅次于C(占30%)和PHP(占27%)。

Java的案例表明,效率优先的开发人员通常不会使用安全功能,而是继续开发不安全的代码。

Rust的安全方法比Java更自以为是,很可能无法避免开发人员对安全性的破坏。尽管Rust提供了内存安全性,但它也提供了一种绕过方法——“UNSAFE”关键字。使用关键字是开发人员覆盖编译器并阻止编译器检查代码块的一种方法——因为开发人员拍胸脯担保该代码是安全的。

许多Rust爱好者认为滥用关键字会破坏Rust模型。Williams对此表示理解,她说:“有些人确实会用不安全的方式使用UNSAFE防护块。”“如果将内容放入不安全的块中,编译器将不会对其进行检查,如果这些内容有误,则可能会导致内存错误。”

但是她指出,即使使用了正确的编译器功能,漏洞也很可能会渗透到开发人员的程序中,但是安全研究人员和黑客往往会发现开发人员遗留下来的问题和漏洞。例如:重点关注Rust安全的站点RustSec列出了Rust软件包(或“crates”)和语言中的250多个漏洞。

【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】

戳这里,看该作者更多好文 

 

来源:51CTO专栏内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯