Image 2 Image 3 Image 3 Image 3

谷歌正寻求提高 C++ 内存安全

频道:行业资讯 日期: 浏览:1281

  

谷歌Chrome安全团队称其一直在致力于改善Chrome浏览器的内存安全;近期,该团队正在研究使用堆扫描技术来提高c++的内存安全。

虽然从内存安全方面出发,生锈当下可能更受大众喜爱。但Chrome安全团队认为,尽管人们对比c++具有更强内存安全保证的其他语言有兴趣,但在可预见的未来,像铬这样的大型代码库将使用c++。鉴于此,Chrome工程师已经找到了使c++更安全的方法,以减少缓冲区溢出和后使用免费(UAF)等与内存相关的安全漏洞。数据表明,这些漏洞占所有软件安全漏洞的70%。

<前>    <跨风格=" background:透明;颜色:# 9 c27b0 ">汽车 <跨风格=" background:透明;颜色:# 616161 "> * <跨风格=氨尘把丈?透明”> foo <跨风格=" background:透明;颜色:# 616161 ">= <跨风格=" background:透明;颜色:# 9 c27b0新"> <跨风格=" background:透明;颜色:# 3367 d6 Foo "> <跨风格=" background:透明;颜色:# 616161 "> ();       <跨风格=" background:透明;颜色:# 9 c27b0 ">删除 <跨风格=氨尘把丈?透明”> foo <跨风格=" background:透明;颜色:# 616161 ">,      <跨风格=" background:透明;颜色:# 455 a64 "> //foo所指向的内存位置并不代表      <跨风格=" background:透明;颜色:# 455 a64 "> //Foo对象,对象已被删除(释放)。       <跨风格=氨尘把丈?透明”> foo <跨风格=" background:透明;颜色:# 616161 ">→ <跨风格=" background:透明;颜色:# 3367 d6 ">过程 <跨风格=" background:透明;颜色:# 616161 "> ();

如上示例,当应用程序使用的内存被返回到底层系统,但指针指向一个过期的对象时,就会出现一个被称为悬空指针(悬空指针)的情况,通过它进行的任何访问都会导致UAF访问。在最好的情况下,此类错误会导致定义良好的崩溃;在最坏的情况下,它们会造成可以被恶意行为者利用的破坏。

在较大的代码库中,UAF通常很难被发现,因为对象的所有权是在不同组件之间转移的。这个问题非常普遍,以至于到目前为止,工业界和学术界都在频繁地针对其提出缓解策略。而Chrome中c++的使用也没有什么不同,大多数高严重性安全漏洞都是UAF问题。近期发布的铬102中,就修复了一个关键的UAF问题,且八个高危漏洞中有 六个是UAF。

为了解决这一问题,Chrome方面已经使用了各种技术手段,包括 <跨风格="颜色:rgba (0, 0, 0, 0.87)"> c++智能指针(如 MiraclePtr <跨风格="颜色:rgba (0, 0, 0, 0.87)">), 编译器中的静态分析, <跨风格="颜色:rgba (0, 0, 0, 0.87)"> 动态工具(如 c++消毒液 <跨风格="颜色:rgba (0, 0, 0, 0.87)null

谷歌正寻求提高 C++ 内存安全

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码