美国政府鼓励开发者在2026年之前停止使用C和C++

爱的威利斯 2024-11-11 18:46:52

近年来,内存安全问题引起了软件开发领域的广泛关注。美国网络安全与基础设施安全局(CISA)和联邦调查局(FBI)也加强了呼吁,敦促开发者逐步弃用C和C++等“内存不安全”语言,转向更安全的编程语言。这一建议主要面向那些涉及关键基础设施或国家安全的项目,旨在减少潜在的安全漏洞,提升整体网络安全水平。尽管此举存在显著的技术和成本挑战,但CISA和FBI认为长远来看,这种转变对安全的提升是值得的。

内存安全的困境:C和C++为何面临淘汰风险?

C和C++凭借高性能和灵活的内存管理能力,至今依然是众多大型项目中的首选语言。然而,正是这种灵活性使得C和C++在内存管理方面十分脆弱。由于开发者必须手动处理内存分配和释放,不可避免会产生诸如缓冲区溢出、释放后使用(use-after-free)等问题。数据显示,这类内存安全漏洞占据了大部分安全漏洞的比例,并为恶意攻击者提供了可乘之机。

CISA指出,内存不安全语言对系统和数据安全构成严重威胁,并警示那些为关键基础设施开发服务的企业,如果继续依赖C或C++,将大大增加安全风险。

C和C++的“替代方案”:推向Rust等内存安全语言

CISA推荐开发者采用诸如Rust、Java、C#、Go、Python和Swift等内存安全语言。与C/C++不同,这些语言内建了内存安全检查机制,可以有效避免许多常见的内存漏洞。例如,Rust引入了“借用检查”(borrow checker)机制,严格控制内存访问权限,减少内存泄漏和非法访问问题。虽然切换到这些语言有助于提高代码安全性,但迁移工作非常复杂。

尤其是,对于Linux等大型代码库来说,迁移到Rust等新语言的步伐缓慢而艰难。尽管Linux之父Linus Torvalds已经表示对Rust的支持,但要将Linux内核从C转移到Rust绝非易事。正如Torvalds所言,迁移语言的过程充满争议,开发者往往对自己熟悉的工具和语言拥有强烈依赖,再加上Rust与C在编程方式上的巨大差异,使得老牌开发者对转换持抵触态度。此外,内存安全语言可能会在某些情况下导致性能下降,迫使开发者和企业在“安全”和“性能”之间权衡。

内存安全路线图:企业的2026年任务

为确保内存安全的落地,CISA和FBI给出了明确的时间表,要求相关企业在2026年1月1日前实现以下目标:

制定内存安全路线图:针对已有C/C++代码,企业需制定清晰的路线图,逐步消除内存安全漏洞,优先改造关键代码。展示漏洞减少计划:企业需向客户展示如何通过内存安全措施减少内存相关漏洞,并证明遵循路线图的合理努力。优先使用内存安全语言:未来的新项目应尽量采用Rust、Java等内存安全语言,避免继续使用C/C++。

尽管上述要求并非强制执行,但对关键基础设施的厂商而言,这些准则已经为未来的合规性和安全性设定了标准。CISA还强调,这些努力不仅可以减少风险,还能在“设计即安全”(Secure by Design)原则下向客户表明企业对安全的重视。

结语

虽然转向内存安全语言具有提升安全的长远优势,但企业面临着巨大的转换成本。除了重新编写代码的工作量外,企业还需更换原有的开发工具链、调试器和测试框架,以适配新语言。此外,新旧代码的整合也可能带来技术难题。

不过,随着CISA和各国网络安全机构的持续推动,越来越多的组织可能会接受这项内存安全的倡导,尤其是那些需要符合高安全标准的关键基础设施厂商。总体来看,内存安全语言的推广不仅是对C和C++的替代,更是网络安全和软件行业适应新时代的必要进化。

0 阅读:1915
评论列表
  • 2024-11-12 15:19

    rust,python,开发库里面不少黑客木马

    用户15xxx03 回复:
    鬼佬开发工具哪个没有?只是知不知道的问题
  • 2024-11-12 17:34

    c语言是人类最优秀的集合,是为了社会推进发展。后面高级语言开始有后台

    用户10xxx69 回复:
    c是高级语言与汇编的完美过度,是最接近汇编的存在,所以效率非常高
  • 扯淡,操作系统不用C用什么

  • 2024-11-12 18:23

    完全不会普及,中国这边就不会鸟他。内核和MCU都是用C语言,甚至汇编来写。实时性是很关键的指标。

  • 2024-11-12 08:03

    rust有美国后面,美国积极推广,就等中国踩坑。

  • 2024-11-12 15:29

    rust,python背后不还是C++吗?

    憧憬、_next 回复:
    很多语言都是对c的高级封装,所以说它是高级语言和汇编的中间语言,直接使用c或者c++编程的大多都是项目追求极致速度,追求实时性的
    星雨 回复:
    这些编程软件都是c或c++写代码加以汇编写代码封装的
  • 2024-11-13 05:02

    美国宣传不安全的,都是他没法安插后门的,对于他没法掌控的东西,就等于不安全[得瑟]

  • 2024-11-16 13:11

    自己管理不好内存的,能称为程序员?

  • 呵呵呵呵呵!打个比喻,就好比战争中的坦克,你用均质装甲我可以击穿装甲,你用复合装甲我一样可以击穿装甲!

  • 2024-11-13 16:45

    用汇编 更安全[笑着哭]

  • 2024-11-13 13:45

    倡议者肯定是卧底或者科技间谍,c语言是其他编程语言的基础,

  • 2024-11-16 16:46

    作者通篇充斥着胡说八道和对C语言的谎言

  • 2024-11-13 12:57

    微软放弃经典的XP,来回搞些win7win10win11难道只是为了高性能?西方总会造坑,别乱跟

  • 2024-11-16 05:14

    网上天天骂美国,回头才发现什么都是用的别人的[呲牙笑]