C 和 C 不安全?Android 支持 Rust 开发操作系统 2024-08-06 21:16:07 Rust这两年实火了。 近年来,Rust凭借着出色的内存效率、速度与安全性,深受亚马逊、微软、华为、Facebook等科技巨头的青睐。Rust从根本上考虑安全性,提出了“没有数据竞争的并发性”、“没有垃圾收集的内存安全”及最终的“无恐惧的黑客“等概念,反映了Rust独特的学术研究和工业实用性结合价值。除了企业使用Rust语言的场景逐步扩大,操作系统也不例外。而作为一个完善的移动操作系统,Android系统涉及到很多组件,可以广义地概括为两部分:生态系统及操作系统本身。作为开发者来说,你开发Android的哪个部分决定了你所选择的编程语言;对于应用开发者来说,Java和Kotlin是比较流行的选择;而对于操作系统及其内部底层的开发者来说,C语言和C 语言是目前更受欢迎的选项。如今,谷歌为操作系统开发者增加了第3个选择:Rust。因为Android Open Source Project现在支持Rust语言来开发操作系统了。C和C 有哪些限制?Android系统的底层需要C和C 这样的系统编程语言,因为这类语言可以为开发者提供控制和可预测性,这在访问底层系统资源和硬件时非常重要。但问题是,C和C 并不能提供内存安全保证。这样一来使它们很容易出现错误和安全漏洞,开发者需要在复杂和多线程的代码库中管理这些语言的内存寿命,并非一件易事。C和C 构成了Android平台上数千万行代码,这使得一旦发生内存安全漏洞,就形成最难以解决的代码错误来源,占Android高严重度安全漏洞的70%左右。所以与其事后再解决这些Bug,不如从一开始就预防。因为缺乏内存安全保障,迫使开发者在严格约束和无权限沙盒内运行Android进程。但使用沙盒是成本很高的,不仅会消耗额外的开销还会引起延迟,并且不能完全消除代码的漏洞,而且由于Bug密度高,沙盒的有效性降低了,这样的情况让攻击者可以将多个漏洞连接起来。缺乏内存安全保障迫使开发者在严格受限和无特权的沙箱中运行Android进程。但是沙箱在资源上是昂贵的,消耗额外的开销并引入延迟。沙箱也没有完全消除代码的漏洞,而且由于漏洞密度高,沙箱的有效性降低了,进一步允许攻击者将多个漏洞链接起来。另一方面的限制是,为了检测到错误状态,必须在工具化的代码中实际触发才能被检测到。因此即使你的代码经过了严密的测试,也可能发现不了隐藏的Bug。而等到发现Bug的时候,修复他们又是一个漫长而高成本的过程了,而且还不一定能得到最准确的修复。这导致Bug的检测变得很不可靠,鉴于这些限制,事前预防Bug是最好的方法。针对这些问题,Rust这样的语言就到了发挥的时候了。从C和C 转向Rust,对Android意味着什么?为Android系统增加一种新语言,实际上是一项很艰巨的任务,包括工具链和依赖项需要维护、测试基础设施和工具必须更新、开发人员需要接受培训等。不过在谷歌方面,最近一年多时间里已经一直在大力推广Rust了。在谷歌看来,想要预防非安全语言编写软件的Bug,现在是内存安全编程语言切入的好时机。因为谷歌已经在其免费OSS-Fuzz服务的375个开源项目里发现了由内存安全错误引起的5500多个漏洞;还发布了Syzkaller来监测操作系统内核中的Bug,并通过gVisor等沙盒来减少Bug检测期间造成的实际影响。在使用Rust方面,谷歌用Rust将Android中的操作系统模块进行了优化,包括蓝牙和Keystore2.0,Keystore 2.0模块就是用Rust编写的;在底层的项目中使用Rust,如ChromeOS中的crosvm虚拟机监视器和驱动程序;包括curl的HTTP和TLS后端、以及Apache httpd新的TLS库,这些代码库位于Internet的网关,需要保护全球数百万用户的数据,它们的安全性极其重要。所以这些作为相关工作重要起点的代码库,均已开始接受Rust语言改造。虽然目标已经定下了,但谷歌方面也很明确,真正将Rust扩展到更多的操作系统,需要很多年的时间。而对于应用开发者来说,这样的切换不会改变其编写应用的方式,也不会改变框架API的工作方式,只是会影响操作系统的编写方式。根据Android开发者团队透露,谷歌目前也没有发布Rust NDK的计划,支持应用程序开发的语言还继续是Kotlin、Java、C和C 。 赞 (0) 相关推荐 Rust vs. Go:为什么强强联合会更好 本文翻译自乔纳森·特纳(Jonathan Turner)和史蒂夫·弗朗西亚(Steve Francia)的文章<Rust vs. Go: Why They're Better Together& ... android开源框架!Android黑科技保活实现原理揭秘,含泪整理面经 前言 大家应该看过不少人分享的面试成功的面经,是不是觉得自己"说不定也可以"呢? 这里重提一个理论:幸存者偏差.当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会 ... 任正非:华为操作系统鸿蒙将比安卓速度快60%,毋庸置疑 华为的鸿蒙系统 (英文:HUAWEI HarmonyOS),在2019年8月9日,华为在东莞举行华为开发者大会,华为宣称是一款全新的面向全场景的分布式操作系统,正式发布操作系统鸿蒙OS.这是首款我国自 ... HarmonyOS 生态最重的拼图,手机开发者 Beta 版终于到来 [CSDN 编者按]手机开发者 Beta 版本将于 12 月 16 日在北京与众多开发者见面,鸿蒙系统能否满足众多开发者的期待?独具一格的分布式操作系统是否真能加速智慧时代的到来? 责编 | 张文 头 ... Rust 语言风靡学术界 AWS 将 Rust 编译器团队负责人收入麾下的新闻让开发者们再次聚焦于这门兼具安全性与高性能的编程语言.近日,著名科学期刊 Nature 刊登了一篇文章,表明 Rust 语言也正在成为学术界最受欢迎 ... 沉寂多年的十大物联网操作系统之一Fuchsia频曝新消息 本文来源:物联传媒 本文作者:市大妈 近日,Chrome OS 欢迎页面似乎隐含了谷歌将要取代 Android 移动操作系统的 Fuchsia 项目的一些新线索.在Chrome Unboxed 的新爆 ... 新风向标:学术界开始从Python转向Rust 导读:Rust现在已经越来越受到科学家们的欢迎了,比起Python,Rust有着更高效的性能,同时在社区建设方面也让用户体验更舒服.虽然学习难度大了些,但综合下来,越来越多的科学家认为时间花的值. 2 ... Deno 1.0 发布了,它用 Rust 写就 官网:https://deno.land/ 作为开发发 Node.js 的大神程序员 Ryan,最近又推出了一个新的框架叫做 Deno,它的名字简写自 Destroy Node.从名字上就可以看出来, ... 安卓手机能用Xbox手柄了,但大家都搞错了这件事 作为全球也许是最知名的开源操作系统,安卓(Android)的成功可以说是有目共睹--毕竟,在持续发展了九个大版本之后,如今的它已经占据了绝大多数智能手机的市场份额,在兼容性.稳定性上的表现基本上已经无 ... 全新观影神器,资源丰富,免费无广告。iOS/Android支持下载 [影迷大院]界面非常简洁,无启动广告,无界面广告.底部首页.发现和我的按钮.首页可以查看影片分类,内容丰富,包含包含电影.电视剧.美剧等等.发现页面是一些集合影片. 首次使用,会出现影片界面不同的情况 ... 原生Android支持多窗口功能,谷歌Pixel C平板将先行升级 谷歌将为Pixel C平板更新Android N,包括多窗口应用功能,多数安卓平板也将受益. 12月8日,Pixel C平板登陆Google商店,售价499美元起.这款新品平板Pixel C,隶属与C ... 【医伴旅】FDA支持继续开发口服紫杉醇加encequidar用于乳腺癌患者 来源:网络 Athenex公司与FDA举行了A类会议,讨论了2021年3月发布的完整回复函(CRL)中提出的关于口服紫杉醇加encequidar治疗转移性乳腺癌患者新药申请的缺陷. 在CRL中,FDA ... 增减挂钩支持扶贫开发和易地扶贫搬迁 如何以高含金量的政策措施助力精准扶贫?日前,国土资源部印发<关于用好用活增减挂钩政策积极支持扶贫开发及易地扶贫搬迁工作的通知>,要求各地认真落实这项超常规政策,切实发挥增减挂钩支持扶贫开发 ... Android插件化开发基础之Java反射机制研究 一.获得Class对象 Class<?> c = Class.forName("classname"); 抛出ClassNotFoundException 二.获得实现 ... Android插件化开发基础之静态代理模式 一 Proxy模式 意图: 为其他对象提供一种代理以控制这个对象的访问. 适用性: l 远程代理( Remote Proxy ): 为一个对象在不同的地址空间提供局部代表. l 虚代理(Virtu ... Android插件化开发基础之Java动态代理(proxy)机制的简单例子 一.代码 package com.sangfor.tree; import java.lang.reflect.InvocationHandler; import java.lang.reflect. ... Android插件化开发之运行未安装apk的activity Android插件化开发之运行未安装apk的activity macOS High Sierra发布:更快的Safari、支持Metal 2,支持VR开发 今天凌晨的WWDC 2017大会上,苹果带来新版macOS系统,这次macOS命名也简单粗暴,直接命名为macOS High Sierra,但功能改进相当多,包括更快更安全的Safari浏览器,支持到 ...