Rust已经是Android开发的最爱

谷歌揭幕 最近 溶出 程式语言 在允许的语言中生锈 用于Android开发。

由于Rust编译器已于2019年包含在Android源代码树中,但语言支持仍处于试验阶段。 最早交付给Android的Rust组件中的一些是Binder进程间通信机制和Bluetooth堆栈的新实现。

Rust的实现 是加强安全项目的一部分,推广安全的编码技术,并提高在Android中使用内存时发现问题的效率。 据观察,Android中识别出的所有危险漏洞中,约有70%是由使用内存时的错误引起的。

使用Rust语言, 专注于安全的内存管理 并提供自动内存管理功能,它将减少内存处理过程中由于错误而导致的漏洞风险,例如在释放内存后访问内存区域以及溢出缓冲区限制。

在Rust编译时,通过检查引用,跟踪对象所有权和对象寿命(作用域)以及在运行时评估访问内存的正确性,可以确保安全的内存处理。

还提供了防止溢出的方法 整数,使用前需要对变量值进行强制初始化,更好地处理标准库中的错误,默认情况下采用引用和不可变变量的概念,并提供强大的静态编写功能以最大程度地减少逻辑错误。

在Android上,以Kotlin和Java语言提供安全的内存管理 已受支持,但由于开销太大,不适合开发系统组件。

Rust允许实现接近C和C ++语言的性能,使其可以用于开发平台的低级部分以及与硬件进行交互的组件。

为了确保C和C ++代码的安全性,Android使用沙箱隔离,静态分析和模糊测试。 沙盒隔离功能是有限的,并且已经达到其功能的极限(从资源消耗的角度来看,进一步细分过程是不切实际的)。

在使用沙箱的局限性中,他们提到由于需要生成新进程而导致的高开销和更高的内存消耗,以及与使用IPC相关的额外延迟。

同时,沙箱无法消除代码中的漏洞,而只能降低风险并使攻击复杂化,因为利用漏洞不仅需要识别一个漏洞,还需要识别多个漏洞。

代码测试方法受到限制,因为要检测错误,您需要为问题的表现创建条件。 无法涵盖所有​​可能的选项,因此很多错误都不会引起注意。

对于Android上的系统进程, Google坚持“两个规则”据说 任何添加的代码不得满足三个以上条件中的两个以上-处理未经验证的输入数据,使用不安全的编程语言(C / C ++),并且在没有硬沙箱隔离的情况下运行(具有更高的特权)。

根据该规则,必须将处理外部数据的代码减至最小特权(隔离)或以安全的编程语言编写。

Google并不打算重写代码 Rust中存在的C / C ++, 但他计划使用这种语言来开发新代码。

将Rust用于新代码是有意义的,因为从统计上讲,大多数错误都出现在新代码或最近修改的代码中。 特别是,不到一年前编写的代码中检测到了Android中检测到的大约50%的内存错误。

数据来源: https://security.googleblog.com


发表评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   米格尔·罗德里格斯(Miguel Rodriguez)

    具有讽刺意味的是,当您的最大竞争对手最终采用了自己为自己的目的而开发的东西时……Rust越来越多。