G.O.S.S.I.P学术论文推荐2021-12-13TranslatingCtosaferRust

admin 2026-05-11 08:08:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该论文研究C代码自动翻译为Rust代码的安全性提升方法,重点分析c2rust工具翻译后存在的unsafe代码问题。研究发现原始指针解引用是最主要的不安全因素,提出通过编译器钩取和代码重写技术消除四类关键不安全特征(原始指针解引用、内存分配、外部调用和全局变量访问),实验表明该方案可显著减少不安全函数比例。 综合评分: 82 文章分类: 安全开发,代码审计,应用安全,二进制安全


cover_image

G.O.S.S.I.P 学术论文推荐 2021-12-13 Translating C to safer Rust

原创

G.O.S.S.I.P G.O.S.S.I.P

安全研究GoSSIP

2021年12月13日 21:47

在小说阅读器读本章

去阅读

最近学编程语言不提Rust都不好意思和别人打招呼了,可是我们这些只会C语言的老程序员怎么办呢?别怕,今天的论文推荐给你介绍一篇将C代码自动化翻译成Rust代码的论文,来自SPLASH 2021 (OOPSLA)

本文一开始并没有关注怎么去开发一个新的C语言-Rust语言翻译系统,而是调查了当前工业界和学术界在实现C语言-Rust语言翻译这一目标取得的已有成果,并对存在的问题进行分析。其中作者特别关注了c2rust这个工具( https://c2rust.com ),并调查了该自动化翻译工具在翻译过程中可能会引入unsafety的问题

之后,作者才相应地提出了相关技术,通过hook Rust编译器,提取更多的信息,将一些翻译后的存在unsafety状态的代码进行重写,消除其中的不安全内容。

作者首先建立了一个C代码的语料库(corpus),其中部分是c2rust工具手册中已经提到的。

然后,作者也简单介绍了一下Rust语言里面的一个特性——允许unsafe code的存在,具体是由具备下列特征的代码引入的:

作者对自己的语料库中导致unsafe code的因素进行了统计分析,发现其中最容易引起unsafety的是raw pointer dereference这一特征

接下去,作者定量分析了如果要减少翻译后的代码中的unsafe function,主要应该考虑哪几个方面。分析结果表明,要去除一半以上的unsafe function,只需要想办法处理最容易引入unsafety状态的四类特征(raw pointer dereference, memory allocation, extern calls, access to globals)

作者在第三章介绍了他们的代码重写技术,针对一个c2rust翻译得到的结果(如下图所示),经过一系列处理后得到了更为安全的代码(具体的细节,小编才疏学浅,请熟悉rust的读者不吝留言评论啊)

作者评估了他们提出的技术的优势,可以从下表中看到,他们的重写技术能够消除很大比例的unsafe functions

论文页面: https://dl.acm.org/doi/10.1145/3485498


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全研究GoSSIP G.O.S.S.I.P G.O.S.S.I.P《G.O.S.S.I.P 学术论文推荐 2021-12-13 Translating C to safer Rust》

评论:0   参与:  0