Redian新闻
>
从C和C++向Rust等内存安全编程语言的转变正在取得进展

从C和C++向Rust等内存安全编程语言的转变正在取得进展

公众号新闻

点击蓝字 关注我们

SUBSCRIBE to US


ISTOCK


内存安全备受关注。2022年11月,美国国家安全局建议使用内存安全编程语言,以防止软件内存安全问题。今年早些时候,《消费者报告》(https://www.consumerreports.org/)在其“记忆安全的未来”报告中鼓励使用记忆安全语言。


伦敦帝国理工学院计算系高级讲师Azalea Raad表示:“内存安全语言现在越来越受欢迎的关键原因之一是安全问题的普遍存在,主要在于内存安全漏洞。”


内存安全是编程语言的一个功能,它可以防止某些类型的内存访问错误,如越界读取和写入,以及在释放错误后使用。例如,在一个管理待办事项列表的应用程序中,越界读取可能涉及访问五个待办事项列表中不存在的第六个项目,而释放后使用错误可能涉及访问已删除待办事项列表上的一个项目。这些错误可能导致访问私人数据、损坏数据,甚至执行不属于程序的代码。


Raad说:“例如,越界读取可能导致从内存中或包含敏感数据的相邻块读取。同样,越界写入可能会覆盖内存中的敏感信息,并导致劫持程序的控制流并执行特权或恶意代码。”


在内存安全语言中,这些错误是在编译时或运行时发现的。在编译时,它们被标记为错误,然后可以进行修复。当在运行时检测到,它们将导致崩溃,而不是允许对内存进行未经检查的访问,从而限制潜在的损坏并防止安全漏洞。


除了C、C++和汇编之外,大多数编程语言都被认为是内存安全的。华盛顿大学Paul G. Allen计算机科学与工程学院教授兼副院长Dan Grossman说:“直到最近几年,几乎所有的系统软件都是用C或C++编写的,这是出了名的不安全 —— 这两种语言更容易出现基于内存的漏洞。。”


一些负责系统软件 —— 包括一些操作系统和其他低级系统等等的科技公司开始意识到了内存安全的重要性。2019年,谷歌和微软报告称,他们产品中的大多数漏洞都是内存安全问题。一项针对苹果操作系统的类似研究也发现了同样的问题。这些公司正在采取行动,采用更多的内存安全语言。例如,Meta正在接受Rust,Linux也正在其内核中添加对该语言的支持。在谷歌的Android 13操作系统中,大约五分之一的新原生代码在Rust中,由此,这家搜索巨头发现内存安全漏洞的数量和严重程度都大幅下降。


互联网安全研究小组执行主任Josh Aas表示:“我们现在明白,内存安全漏洞并不是什么深奥的计算机科学概念。”该小组的Prossimo项目正在推动向内存安全迈进。“这是真正的消费者安全问题。这是国家网络安全问题。”


Raad表示,Rust在2022年IEEE Spectrum顶级编程语言中排名第20(https://spectrum.ieee.org/top-programming-languages-2022),是C和C++的内存安全替代品,可用于编写低级系统代码或开发操作系统内核。她还建议软件开发人员在为iOS和macOS开发时改用Swift;Kotlin在为Android开发时提供了与Java的互操作性,Java是Android的主要语言;和Go为服务器编写网络代码。


为了使向新编程语言的转移更易于管理,特别是对于在大型代码库上工作的软件开发人员来说,Raad建议从新的代码库而不是现有的代码库开始着手,因为这不需要代码重写,“但仍需要调整和扩展现有的测试和部署基础设施,以支持新语言。”


下一步是针对现有代码库的新模块,这也不需要任何代码重写,但需要处理用于交换跨越两种语言边界的数据的数据结构等,Raad说。最后,程序员可以考虑用内存安全的语言重写现有的模块。Raad表示:“理想情况下,这应该是一个范围很小的模块,以最大限度地减少代码重写的固有风险,并且在切换到内存安全语言时具有明显的性能提升或安全优势。”


为了进一步简化转换,程序员可以利用应用程序编程接口(API)。Aas说:“很多Rust组件都带有C API,所以你可以从中受益,而且不必学习一门全新的语言。”


他补充道,在采用内存安全语言时,测试也是至关重要的。Aas说:“如果你担心重写代码可能会导致错误,那么最好认识到为现有代码编写测试的投资将在这里得到回报 —— 如果你对当前代码有很好的测试,那么这些测试将帮助你验证用内存安全语言进行的任何重写都是正确的。”


此外,公司本身可以通过提供培训机会和聘请高级软件工程师等方式来促进使用内存安全语言编程,这可能会产生“重大影响,因为他们可以提供代码审查并培训新的语言开发人员,”Raad说。


向新编程语言的转变通常需要一个学习曲线,但Grossman说:“在内存安全的情况下,回报通常是值得的。”


微信号|IEEE电气电子工程师

新浪微博|IEEE中国

 · IEEE电气电子工程师学会 · 


SF6是什么?为什么重要?

可穿戴装置 可直接将人体热量转化为电能

无线充电器达到兆赫范围 使无线充电更加普及

电子绷带(E-Bandages)可加速伤口愈合

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
10年饶毅团队在Neuron/NC等发表29篇文章,在神经生物学领域取得进展谷歌最好的程序员Jeff Dean:我用过 18 种编程语言终身仁慈独裁者、Python之父龟叔,曾被认为最不可能发明自己的编程语言今晚截团!全球超过3200万孩子都在玩的编程游戏,用“闯关”教真实的编程语言Rust 基础系列 #3: Rust 中的数据类型 | Linux 中国Rust 基础系列 #1: 创建并运行你的首个 Rust 程序 | Linux 中国Rust将迎来爆发式增长;更多国产编程语言进入视野 | 编程语言领域解读我们应该如何用好 AI?从 ChatGPT 到编程语言、大数据、前端新开源!跨时代AI编程语言NGPTL++腾讯发布 2022 研发大数据报告:Go 语言蝉联最热编程语言国内最流行的编程语言调优,它排第一!比Python快35000倍!LLVM&Swift之父宣布全新编程语言Mojo:编程被颠覆了源自以色列的编程游戏,通过“闯关”教孩子写真实的编程语言黑客使用哪些编程语言?硬核观察 #911 C++ 之父呼吁改变编程语言本身以提升安全性谷歌:使用 Rust 后,安卓系统的内存安全漏洞数量大幅下降Epic CEO:元宇宙已达6亿用户,元宇宙编程语言Verse意义何在?《触摸美国》的意义终身仁慈独裁者、Python 之父龟叔,曾被认为最不可能发明自己的编程语言宇宙人(1260期)长九、长十 拟用发动机同日取得进展;SpaceX猛禽3发动机完成测试;维珍轨道公司延长竞标截止日期新年好奥威尔在西班牙的奇幻冒险——Homage to Catalonia读后感微软公布 .NET最新的编程语言支持策略年年有鱼 春节快乐!Rust 基础系列 #2: 在 Rust 程序中使用变量和常量 | Linux 中国祝大家新年快乐!它就是比尔盖茨和 Linux 之父同时推崇的编程语言!将 sudo 和 su 移植到 Rust,Rust 要重写万物?2023 最好就业的 8 门编程语言出炉!C++ 之父:Rust等内存安全语言的安全性并不优于C++直连Colab,支持20种编程语言:谷歌版ChatGPT代码水平反杀了?武汉病毒所在I型单纯疱疹病毒载体构建的研究中取得进展应用层|关于编程语言中的那些「锁」事那些意欲取代 C++ 的编程语言,成功了吗?Rust 语言年度回顾:全球企业如何采用 Rust的?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。