Rust 1.56.1 发布,解决源码安全问题

栏目: 软件资讯 · 发布时间: 4年前

内容简介:Rust 1.56.1 现已发布。此版本引入了两个新的 lints,以减轻最近披露的一个安全问题 CVE-2021-42574 的影响: 在 Unicode Specification through 14.0 的双向算法中发现了一个问题。它允许通过控制序列对字符进行...

Rust 1.56.1 现已发布。此版本引入了两个新的 lints,以减轻最近披露的一个安全问题 CVE-2021-42574 的影响:

在 Unicode Specification through 14.0 的双向算法中发现了一个问题。它允许通过控制序列对字符进行视觉重新排序,可用于制作源代码,呈现与编译器和解释器摄取的标记的逻辑顺序不同的逻辑。攻击者可以利用这一点对接受 Unicode 的编译器的源代码进行编码,从而将目标漏洞引入人类审查者不可见的地方。

Rust 官方表示,他们于今年 7 月 25 号收到了报告并开始着手修复。虽然这问题本身不是 rustc 的缺陷,但他们正在采取积极措施来减轻其对 Rust 开发人员的影响。其建议所有用户立即升级,以确保他们的代码库不受该安全问题的影响。

Rust 1.56.1 引入了两个新的 lints,以检测和拒绝包含受影响的 codepoints;而 Rust 1.0.0 到 Rust 1.56.0 中则不包括这样的 lints。公告指出,如果你不对这些 codepoints 的存在进行 out-of-band checks,你的源代码就容易受到这种攻击。

为了评估生态系统的安全性,Rust 团队分析了曾经在 crates.io 上发布的所有 crate 版本(截至 2021-10-17),只有 5 个 crate 的源代码中存在受影响的代码点,而且没有出现任何恶意的情况。

Rust 1.56.1 中有两个新的 deny-by-default lints,可以检测受影响的 codepoints,分别在 string literals 和 comments 中。这些 lints 将阻止包含这些 codepoints 的源代码文件被编译,从而保护用户免受攻击。

如果你的代码对这些 codepoints 有正确的用途,官方建议用相关的转义序列来替换它们。错误信息会建议使用正确的转义。

如果你不能升级你的编译器版本,或者你的代码库还包括非 Rust 源代码文件。官方不择建议定期检查以下 codepoints 是否存在于你的版本库和你的依赖中:U+202A、U+202B、U+ 202C、U+202D、U+202E、U+2066、U+2067、U+2068、U+2069。

此外,其还发现了一个类似的安全问题;即 CVE-2021-42694,涉及标识符内的 homoglyphs。不过从 Rust 1.53.0 开始,Rust 已经包含了对该攻击的缓解措施。由于 Rust 1.0.0 到 Rust 1.52.1 版本中缺乏对 non-ASCII 标识符的支持,因此不受影响。

更多详情可查看官方公告


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis开发与运维

Redis开发与运维

付磊、张益军 / 机械工业出版社 / 2017-3-1 / 89.00

本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化......一起来看看 《Redis开发与运维》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具