中山公众号开发,中山小程序开发,中山企业官网开发,中山软件开发,中山APP开发
公司动态
COMPANY DYNAMIC
行业资讯
COMPANY DYNAMIC
扫一扫出方案
Google 也要放弃 C/C++?Chrome 代码库中 70% 的安全漏洞是内存问题
点击数:
2020-05-28 15:42:57

Google 工程师表示:目前 Chrome 代码库中所有严重的安全漏洞,70% 是内存管理的安全漏洞,其中 50% 的内存漏洞是 use-after-free 漏洞,因为对内存指针的错误管理,给予了攻击者攻击 Chrome 内部组件的机会。

近日,Google 工程师统计了 2015 年以来,Chrome 稳定分支中修复级别为 "high" 或 "critical" 的 912 个安全错误,结果发现约 70% 是内存安全漏洞。

Google也要放弃C/C++?Chrome 代码库中70%的安全漏洞是内存问题

事实上,不只是 Google,内存安全漏洞是很多科技公司都头疼的问题,微软工程师也曾公开表示:在过去 12 年中,微软产品的安全更新中,约有 70% 也是在解决内存安全漏洞。

为什么微软和 Google 的情况如此相似呢?因为它们代码库中使用的主要编程语言是 C 和 C++,由于 C 和 C++ 出现的时间较早,当时网络攻击还不是利用相关的威胁模型,大多数早期软件开发人员也没有考虑到相关的安全问题,所以 C 和 C++ 允许程序员完全控制管理应用程序的内存指针,出现基本的内存管理错误时,也没有相关的提示或者警告。

Chrome 的内存安全问题如何解决?

据了解,自 2019 年 3 月以来,在 130 个级别为 critical 的 Chrome 漏洞中,有 125 个是与内存相关的。这个数据也表明了,内存管理错误仍然是 Google 的一个大问题。

Google也要放弃C/C++?Chrome 代码库中70%的安全漏洞是内存问题

为了解决内存安全问题,Google 内部提出了一个 The Rule Of 2 原则,即为了保证安全性,程序员不能破坏两个以上的条件:

  • 不可靠的输入:主要来自两个方面,一是 non-trivial 的语法,例如常用的 and 和 or,二是不安全的来源;

  • 不安全的实现语言:即在编写程序时选择了缺乏内存安全性的语言,例如 C、C++、汇编语言等。目前内存安全的语言包括 Go、Rust、Python、Java、JavaScript、Kotlin 和 Swift 等。

  • 高特权:特权最高的程序是计算机固件,引导加载程序、内核、系统管理程序或虚拟机监视器等;其次是操作系统级别的账户运行进程;特权较低的进程包括 GPU 进程和网络进程等。

“沙箱”也是 Google 用来解决安全问题的常用方法,Google 工程师会将数十个流程隔离到自己的沙箱中,并利用刚推出的“Site Isolation”功能,将每个站点的资源也放到沙箱中。同时,考虑到性能问题,Google 采用了沙箱化 Chrome 组件的方法,并在积极探索新的方法。

Google 表示将开发自定义 C++ 库,与 Chrome 代码库配合使用,以便更好地处理与内存相关的错误。并且有计划,在可能的情况下探索使用“内存安全”的编程语言,目前的候选对象包括 Rust、Swift、JavaScript、Kotlin 和 Java。

放弃 C 和 C++ 可行吗?

无论是 Google 还是微软,出现内存问题的根源是使用了诸如 C 和 C++ 这类的“不安全”编程语言,那么放弃 C 和 C++ 可行吗?

对企业来说,重新选择一种编程语言不是一件容易的事情,因为这意味着需要重写大量的代码,需要重新培训员工,需要招聘拥有新技能的员工。所以,放弃 C 和 C++ 不是一件容易的事情。

如果是全新的项目,我们完全可以选择一个内存安全的编程语言,无需考虑重写代码的风险。不过,还是需要改进测试或部署基础架构来支持新的编程语言。ChromeOS 的 CrosVM 就是采用的这种方法。

如果是现有项目的新组件,我们也可以选择内存安全的编程,例如 Rust、Swift 等编程语言都可以与 C、C++ 代码库互操作。不过,刚开始的投入可能会比较大,因为需要集成到构建系统中,所以需要使用一种新的语言在两种语言之间传递对象和数据构建抽象。Firefox 的新组件 WebAuthn 就是使用的这种方法。

以上两种情况的特点都是新代码与原有代码有明显的界限,无需重写代码,我们可以在构建新项目或新组件之后,再逐步处理现有代码。那如果是界限不明显、无法放弃 C 和 C++ 的情况,我们又该怎么办呢?

  • 使用一些现代 C++ 习惯用法来生产更安全可靠的代码;

  • 使用 fuzzers 和 sanitizers 提前发现错误;

  • 使用 exploit mitigations 增加利用漏洞的难度;

  • 特权分离,这样即使利用了漏洞,受影响的半径也较小。

文章版权归极客邦科技 InfoQ 所有

节点互动(广东)科技有限公司一家专注于 APP开发 + 小程序开发 + 微信开发 + 系统开发 + 网站开发 的专业互联网应用服务提供商。5年实战开发经验,高校合作基地,多年行业深耕经验,助力传统行业快速转型,为众多企业提供创新性互联网应用产品。


推荐文章
小程序互联网时代,来了
用户总数首次出现净减少,用户时长增速也出现下降。这样的“双降”背后,清晰地说明了一个真相:人口红利已经消失。 中国,这个世界人口总数最大的国家,在过去10年内,有超过11亿国民被智能手机和3G、4G网为代表的移动互联网大潮裹挟着加入了这次惊心动魄的奇幻之旅,在线聊天、看视频、购物成为每一个国民的日常标配。 ...
豆瓣养号翻车:逃出控评围城的是一个个真实的人
前段时间,一位编辑在豆瓣控诉王一博粉丝在自己的新书底下产出垃圾评论以养号的事件引发了网友的广泛讨论。人们苦“养号”久矣,这次事件无疑是激起群愤的导火索。那么,归根结底,此次事件背后反映的根本冲突是什么呢?本文作者对此发表了自己的看法,与你分享。
如何正确解读MVP测试指标?
解读MVP测试指标是产品经理常做的事情,那MVP测试指标究竟是什么?又该如何正确解读呢?本文介绍了解读MVP测试指标需要注意的问题和制定测试指标的大致逻辑,与大家分享!一、MVP需要完美吗?MVP的概念是随着Eric Ries 《精益创业》的受追捧而
如何搭建线上商城和线下门店的联合运营?
受疫情影响,市场大部分实体商业受到冲击,然而线上商城却逆势上扬,直播带货、社区团购、快递到家等消费场景逐渐被人们所接受和喜爱,实体店转战线上必不可少。 因此品牌需要将线上商城尽快开店运营并进行线下流量和线上流量的互通以及流量变现,而根源即在于线上商城的有效运营,已达到线上和线下联动完成流量闭环和销售目的。
网站建设,静态页面和动态页面如何选择
网站建设,静态页面和动态页面如何选择  电商网站建设为什么要使用静态页面制作。我们都知道,网站制作有分为静态页面制作和动态网页制作,那么建设电商网站采用哪种网站设计技术更好呢?  我们建设网站最终目的
2021年中国电商市场的9大趋势预测
2020年受新冠疫情影响,线上电子商务行业飞速发展。社区团购,C2M趋势越来越明显,因此预计2021年将是中国电子商务市场充满创新和扩展的一年。各商家将采用新的举措和技术,并希望将业务扩展到低端城市。以下是2021年中国电子商务市场的10大趋势预测。
“双次爆发”过后,今年双11到底留下了什么?
“我怎么感觉双11已经过去很久了”,11月11日当天一位朋友看到群里的分享的养猫战队PK邀请链接时如是说道。 对此,很多人也有同感,“今年的双11仿佛在11.1日那天付完尾款就结束了”。 确实,与往年的一波收割不同,今年双11的促销战线延长,首次分成两波促销,从10.21日起各大品牌商家开启预售,至11.1...
SaaS颠覆传统软件了吗?
SaaS是一种很好的商业模式,具备颠覆传统软件的潜力,但是客户体验不佳、企业不盈利等问题导致SaaS还没有赢得中国主流市场的胜利。01 SaaS颠覆传统软件了吗5年前,我决定从Oracle公司离职,到SaaS创业公司担任高级产品经理。促使我做出这一决
提设计意见时“好好说话”
在给设计师提意见的时候,我们应该需要注意哪些细节和说话方式呢?自己手头的设计做久了,容易陷入细节而难以发现一些问题。所以设计师通常会找别人来帮忙看看设计稿,换个角度也换个思维。一般有三种途径来主动获取意见反馈:找设计同事过稿——他们可以从专业角度帮忙
APP裂变指南:如何设计产品化拉新机制实现用户增长?
说到产品化拉新,它的逻辑是利用自身产品机制来激活现有用户实现增长,也就是刺激老用户带动新用户。 个人认为,微信生态里能完美践行产品化老带新的载体一定是小程序,典型案例是微信读书,它开发了很多基于小程序和APP的产品化玩法,比如每日一答、读书小队、组队抽卡、免费图书馆、翻一翻、集赞得卡、免费听书馆、飙升榜等。 ...
在线客服系统