好意思国汇集安全和基础法子安全局(CISA)近日发布的申报造访了172个关键开源项意见内存安全问题。申报显露,提升半数项意见代码存在内存不安全的情况,尤其在资源边界和性能条目高的情况下,建树东谈主员还是遴荐使用内存不安全的说话。
关键开源项意见内存安全景色散播 开头:CISA
内存安全的蹙迫性
内存安全说话通过自动管束内存,精致常见的内存关联造作(如缓冲区溢出和开释后使用)。举例,Rust的借用检讨器简略摈斥数据争用,说话如Golang、Java、C#和Python通过垃圾回收来精致内存被造作讹诈。比拟之下,内存不安全的说话(如C、C++和Assembly)不提供内存管束机制,增多了建树东谈主员出错的风险。
造访后果
字据CISA、联邦造访局(FBI)以及澳大利亚和加拿大安全机构的申报,关键的开源形势中存在大批内存不安全的代码。以下是主要发现:
52%的关键开源形势包含内存不安全的代码。
这些形势中55%的代码行数(LoC)是内存不安全的。
大型形势大多数使用内存不安全的说话。
暗LoC策划十大项意见内存不安全代码比例均提升26%,平均比例为62.5%,有些形势高达94%。
即使用内存安全说话编写的形势也时时依赖于用内存不安全说话编写的组件。
一些关键开源项意见内存不安全代码比举例下:
Linux:95%
Tor:93%
Chromium:51%
MySQLServer:84%
glibc:85%
Redis:85%
SystemD:65%
Electron:47%
提议措施
CISA指出,软件建树东谈主员濒临多重挑战,尤其在收场汇集、加密和操作系统功能时,不得不使用内存不安全的说话。此外,建树东谈主员随机为了性能和资源边界,专诚或造作地禁用内存安全功能,即使这么作念会带来风险。
CISA提议软件建树东谈主员使用内存安全的说话(举例Rust、Java和GO)编写新代码,并将现存形势(尤其是关键组件)疏浚为这些说话。
此外,CISA还提议建树东谈主员罢免安全编码践诺,仔细管束和审核依赖联系,并践诺抓续测试,包括静态分析、动态分析和粗率测试,以检测和责罚内存安全问题。