17611538698
webmaster@21cto.com

新的安全 C++ 提案都有啥?程序员需要了解哪些?

编程语言 0 638 2024-10-17 09:48:15

图片

导读:C++正在不断向Rust等语言学习,让自己变得安全可依赖。

引言

2020年,Google 突然发现自己的Chrome 有70%以上的严重安全漏洞,然而实际上都是由内存安全问题引起的。

Chrome 团队这样表示:“也就是说,C 或 C++ 语言中的指针错误会导致内存被误解。”也就是把黑锅扔给了C++。

2022 年,美国国家安全局 (NSA) 网络安全技术总监 Neal Ziring 就内存安全发表了自己的看法。

他这样表示说:“内存管理问题已经被利用了几十年,而且至今仍然非常普遍。我们在开发软件时,必须始终使用内存安全语言和其他保护措施,以消除恶意网络行为者的这些弱点。”

图片

 (NSA) 网络安全技术总监 Neal Ziring

但事情并没有就此结束。内存安全编程语言继续受到密切关注。今年 2 月,美国白宫国家网络总监办公室 (ONCD)发布了一份审计报告,建议所有程序员都应转向内存安全编程语言。

报告指出,目前网络安全威胁防护的负担落在了终端用户身上,“用户必须努力主动消除各类软件漏洞”。

这份报告进一步阐述道:“专家们已经发现了一些编程语言,它们既缺乏与内存安全相关的特性,而且在关键系统中具有很高的扩散性,比如 C 和 C++。”

内存的安全现在比以往任何时候都重要,因为我们所做的很多事情都在互联网上发生。

最近的世界经济论坛有人员表示,过去的新冠疫情又加速了电子商务、在线支付和数字广告的快速普及。

因此,存在更多潜在漏洞可供黑客们利用。开发者问答社区Stack Overflow也指出,过去一些最大的漏洞事件基本都是内存安全问题。

其中:包括 2014 年的Heartbleed 病毒,该病毒影响了 OpenSSL 软件,导致恶意攻击者窃取 X.509 证书、用户名和密码、即时消息和电子邮件。2017 年,WannaCry勒索软件攻击在全球蔓延,感染了超过 23 万台计算机,引起了社会的广泛关注。

Revolut 发布的一份新的消费者安全和金融犯罪报告指出,2024 年上半年,Meta 平台是全球所有诈骗的最大来源 (62%)。Revolut 发现,Facebook 的欺诈量 (39%) 是 WhatsApp (18%) 的两倍多。

确保 C++ 安全


内存安全语言确实已经有了一堆,包括 Rust、Go、Java、Swift 和 Python。C++ 受到特别关注,因为其中编写了大量关键代码。


考虑到这一大背景,C++ 社区再也坐不住,他们做出反应也就不足为奇了。于是该团队在今年 9 月宣布了安全 C++ 扩展提案。这项工作是通过 C++ 联盟进行的,其总裁兼执行董事Vinnie Falco表示,这是“一项革命性的提案,为 C++ 编程语言添加了内存安全功能。”


图片


Falco 补充说道:“对安全代码的需求从未如此迫切。随着软件安全性和可靠性的重要性日益提高,开发人员面临着采用更安全编码实践的越来越大的压力。


安全C++扩展(Safe C++ Extensions)将旨在通过引入可防止常见内存相关错误的新功能来满足这一关键需求。” 


那么,他说的这些能解决问题吗?


一些批评者对此就表示怀疑,C++ Alliance 的开发人员 Sean Baxter 指出:


“只有一种流行的系统级/非垃圾收集语言能够提供严格的内存安全性。那就是 Rust 语言。”


建议开发者们采取多种措施来确保 C++ 代码的性能,包括禁止开发人员编写可能导致生命周期安全、类型安全或线程安全未定义行为的操作。


此外,还存在其他的挑战。Baxter 指出说,“尽管它们处于同一领域,但 C++ 和 Rust 具有不同的设计,互操作能力有限,因此从 C++ 到 Rust 的增量迁移是一个艰苦的过程。”


图片

小结

将代码移至内存安全语言和状态,将是一项艰巨而耗时的工程。美国国防高级研究计划局(DARPA) 目前正在寻求利用人工智能弥补这一差距。它正在开发一种名为 TRACTOR(将所有 C 语言转换为 Rust)的编程代码转换工具。

它这样表示说,“目标是实现与熟练的 Rust 开发人员相同的质量和风格,从而消除 C 程序中存在的所有类型的内存安全漏洞。”

各位同学怎么看?欢迎留言~

作者:万能的大雄

评论