G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

admin 2024年5月24日23:45:50评论1 views字数 950阅读3分10秒阅读模式

上了年纪的读者对Stagefright这个臭名昭著(可能也帮多少白帽子刷爆了bounty?)的Android平台上的安全问题(嗯,不知道最后一共登记了几个CVE)应该有所耳闻。实际上从多少年前开始,用内存不安全的语言来处理binary data就容易引入安全漏洞,对于文件格式的解析,在2014年的OSDI上就有一篇论文 Nail: A practical tool for parsing and generating data formats(来自大名鼎鼎的 Nickolai Zeldovich@MIT CSAIL 却是一篇清新的小文

https://people.csail.mit.edu/nickolai/papers/bangert-nail.pdf

Nail实现了专门为解析不同的文件格式而设计的一种domain specific language,而它的思路在最近被Google效仿拿出来做了一套类似的东西,这就是我们今天要介绍的Wuffs

G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

Wuffs提供了一个有点强迫症的设计,强制程序员写代码的时候要考虑到各种情况,比如说有这么一个例子:

G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

如果上面这种基本的写法就肯定药丸,所以用Wuffs的话就会被强制写成下面这种风格:

G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

但是有点反直觉的是,Wuffs的特点是“贼xxx快”("ridiculously fast"),至少在各种跑分测试上,Wuffs实现的代码达到了如下的性能:

  • It can decode bzip2 1.3x faster than /usr/bin/bzcat(C).

  • It can decode deflate up to 1.4x faster than zlib-the-library (C).

  • It can decode GIF 2x-6x faster than "giflib" (C), "image/gif" (Go) and "gif" (Rust).

  • It can decode PNG 1.2x-2.7x faster than "libpng" (C), "image/png" (Go) and "png" (Rust).

不知道这是不是一个迷你版的Rust,大家可以去研究一下

https://github.com/google/wuffs

G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffs

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月24日23:45:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 资源推荐 2024-05-23 安全的文件解析器 Wuffshttp://cn-sec.com/archives/2772128.html

发表评论

匿名网友 填写信息