近年来,内存安全问题引起了软件开发领域的广泛关注。美国网络安全与基础设施安全局(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++的替代,更是网络安全和软件行业适应新时代的必要进化。
rust,python,开发库里面不少黑客木马
c语言是人类最优秀的集合,是为了社会推进发展。后面高级语言开始有后台
扯淡,操作系统不用C用什么
完全不会普及,中国这边就不会鸟他。内核和MCU都是用C语言,甚至汇编来写。实时性是很关键的指标。
rust有美国后面,美国积极推广,就等中国踩坑。
rust,python背后不还是C++吗?
美国宣传不安全的,都是他没法安插后门的,对于他没法掌控的东西,就等于不安全[得瑟]
自己管理不好内存的,能称为程序员?
呵呵呵呵呵!打个比喻,就好比战争中的坦克,你用均质装甲我可以击穿装甲,你用复合装甲我一样可以击穿装甲!
用汇编 更安全[笑着哭]
倡议者肯定是卧底或者科技间谍,c语言是其他编程语言的基础,
作者通篇充斥着胡说八道和对C语言的谎言
微软放弃经典的XP,来回搞些win7win10win11难道只是为了高性能?西方总会造坑,别乱跟
网上天天骂美国,回头才发现什么都是用的别人的[呲牙笑]