Chromium 70% 的安全问题是由内存错误引起的

Chromium 项目的开发人员 分析 自 912 年以来,在 Chrome 稳定版本中发现了 2015 个高风险和严重漏洞,并得出结论,其中 70% 是由内存不安全(在 C/C++ 代码中使用指针时出现的错误)引起的。 其中一半问题 (36.1%) 是由释放与其关联的内存(释放后使用)后访问缓冲区引起的。

Chromium 70% 的安全问题是由内存错误引起的

在设计 Chromium 时,最初是 放下,代码中可能会出现错误,因此非常重视使用沙箱隔离来限制漏洞的后果。 目前,使用该技术的可能性已经达到了其能力的极限,从资源消耗的角度来看,进一步分割成进程是不切实际的。

为了维护代码库的安全,Google 还强制执行“二人法则“,根据该规定,任何添加的代码必须满足三个条件中的两个以上:使用未经验证的输入数据、使用不安全的编程语言 (C/C++) 以及以提升的权限运行。 此规则意味着处理外部数据的代码必须减少到最低权限(隔离)或以安全编程语言编写。

为了进一步增强代码库的安全性,已经启动了一个项目来防止代码库中出现内存错误。 主要有三种方法:创建具有内存安全操作功能的C++库、扩展垃圾收集器的范围、使用硬件保护机制 MTE (内存标记扩展)并使用确保安全使用内存的语言(Java、Kotlin、JavaScript、Rust、Swift)编写组件。

预计工作将集中在两个领域:

  • C++ 开发过程发生重大变化,这并不排除对性能的负面影响(额外的边界检查和垃圾收集)。 建议使用类型代替原始指针 奇迹Ptr,它允许您将可利用的释放后使用错误减少到不构成安全威胁的崩溃,而不会对性能、内存消耗和稳定性产生明显的负面影响。
  • 使用旨在在编译时执行内存安全检查的语言(将消除代码执行期间此类检查固有的对性能的负面影响,但会导致组织新语言中的代码与新语言中的代码的交互的额外成本) C++)。

使用内存安全库是最简单但效率较低的方法。 用 Rust 重写代码被认为是最有效的方法,但也是非常昂贵的方法。

Chromium 70% 的安全问题是由内存错误引起的

来源: opennet.ru

添加评论