ChaosBot avatar

【Rust日报】 2019-08-07

blackanger

Published: 07 Aug 2019 › Updated: 07 Aug 2019【Rust日报】 2019-08-07

【Rust日报】 2019-08-07

「讨论」Rust的安全性

#security

今天的讨论有两个主题,第一个是关于在Safe Rust中绕过借用检查的一个问题,第二个是关于Libra区块链依赖Rust单一语言而引起的安全性讨论。

一、Safe Rust中绕过借用检查:

几天前(2019 年 7 月 27 日)一位用户将 Rust issue #25860 Implied bounds on nested references + variance = soundness hole 中的用例上传到了 crates.io(fake-static)。意在使大家注意到这个在此之前已经超过两年没有动静的 issue。这使我了解到原来目前的 Rust 实现还在一些边角存在着可怕的缺陷。以致于在安全 Rust 中通过精心构造的数行代码便能绕过借用检查,正如 issue 中的用例:

static UNIT: &'static &'static () = &&();

fn foo<'a, 'b, T>(_: &'a &'b (), v: &'b T) -> &'a T { v }

fn bad<'a, T>(x: &'a T) -> &'static T {
    let f: fn(_, &'a T) -> &'static T = foo;
    f(UNIT, x)
}

二、在今天某微信社区的一次区块链安全的分享中,提到Libra

墨子安全实验室创始人 苗知秋 谈到Libra选择Rust:

在实现语言上,Libra项目选择了一个非常小众但宣称安全性突出的语言RUST。然而,宣称的安全不表示实际上的安全。过于小众的语言往往缺乏长时间的锤炼,导致隐藏的问题较多。再安全的语言也无法确保实现的安全,漏洞常常来自代码实现过程,来自于人。RUST社区也在讨论随机数生成函数的安全升级。所以RUST语言虽然具有安全的特色,但是并不完美,不排除有可能成为Libra项目的阿喀琉斯之踵。
最后,过于依赖RUST语言有可能带来单一性依赖问题,如果RUST语言出现安全问题,则会波及整个Libra系统,这一点可能需要时间来解决,毕竟Libra出现时间尚短,需要时间来实现必要的多样化部署。

日报君(Chaos)发出质疑:

不过话说回来,有一点我不太同意。安全漏洞比例最大的是内存安全问题,(见微软安全响应中心的文章,70%的安全漏洞是内存问题引起的)。而Rust语言的安全性恰恰就是解决内存安全(常见的内存安全问题,当然不完美,也不可能完美)。内存漏洞是跨语言漏洞,多用一种语言就多一份风险,其实并不能改善安全性。

苗知秋回复:

这是一种经典的安全防护思路,安全问题必须从整体上考虑,不能只看局部。区块链作为去中心化的P2P架构,不怕部分节点出问题,担心的是全部节点出问题。因此如果单一使用rust语言实现,谁敢打包票说rust万寿无疆、刀枪不入?万一某天rust爆出系统性漏洞,Libra就全军覆没了。因此为了实现系统级的安全,必须要把风险分散。如果所有的rust部署节点出问题,在解决rust问题期间Go语言节点还可以支撑系统运行,Go语言出问题,在解决Go语言问题期间Java节点也可以让系统正常运行。那么如果rust,go,java同时出问题呢?概率比rust一个出问题的概率小多了啊,这就叫千斤重担万人挑,人人头上有指标[呲牙]

小结: 从安全角度来看,苗知秋的观点是有一定道理的。这可能也是以太坊多语言实现的一个原因。

关于以上两个讨论,大家怎么看呢?

boggle-solver:Boggle游戏的Rust实现

#crossbeam

Boggle是一款受欢迎的益智拼字游戏,作者用Rust来实现了它,作者主要是想练手crossbeam,因为他最近找工作的时候碰到的白板手写代码就是这个Boggle Slover。

boggle-solver

「讨论」为什么Rust突然被广泛使用?

#Reddit

为什么Rust突然被Facebook、微软等广泛推崇? 下面一个评论总结的很到位:当「工程质量」高于一切的时候,选择Rust是自然而然的事。

Reddit讨论

Rustsim 报告 #7

#rustsim

Rustsim组织是一个GitHub组织,聚焦于提供各种数值模拟的库。包括

  • alga, 抽象代数库
  • nalgebra, 线性代数库
  • ncollide, 2D和3D的碰撞检测库
  • nphysics, 2D和3D的物理模拟库

最新报告称:

  • nphysics 0.12 已经支持了连续碰撞检测
  • ncollision 0.20 对非线性冲击时间计算和Pipeline进行了重构

Read More

当你没时间维护自己的crate时,最好的善后方法是什么呢?

#crate

这个帖子给出了一个办法,就是把它交给Rust Bus组织(社区义务者),该组织会帮你管理crate。倒也是个不错的办法。

slingshot : 一个新的区块链框架

#blockchain

stellar公司出品。wow,挖掘出一点点关于Rust之父的秘史,不知道大家是否知道:Rust之父Graydon Hoare在2014年加入过这家公司作为核心团队成员(当然现在不在了),可以看下面的Stellar Report 2014。

emosaic: 马赛克生成器

#mosaic

万恶的马赛克。

img

emosaic

「新手向」「视频」和借用检查器战斗实录

#BorrowChecker

主要是简单地使用scope(花括号块)来解决生命周期问题

Read More

Polaris:一个用Rust编写的web音乐播放器

#music #web

img

Polaris

Codenano: 一种在浏览器中设计DNA(脱氧核糖核酸)纳米结构的工具

#DNA #wasm

Codenano还能够计算出一些简单的DNA碱基之间的相互作用,以帮助用户根据一些简单的标准设计出可行的DNA纳米结构。

创建纳米结构设计可能是一个乏味的过程,而codenano的设计目的是减少这一过程。它给出了一个简单的应用编程接口,在这个接口中,我们使用一个小的、简单的Rust编程语言子集来指定一个DNA纳米结构。使用这个应用编程接口不需要任何Rust的知识。然而,高级用户可以从Rust的表达中受益。

img


From 日报小组 Chaos

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

Leave 【Rust日报】 2019-08-07 to:

Written by

Read more #rust posts


Best Posts From ChaosBot

We have not curated any of blackanger's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ChaosBot