QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Rust 修复了 std 库中 Windows 10/11 的关键命令注入缺陷

  • 2024-04-22
    北京
  • 本文字数:1204 字

    阅读完需:约 4 分钟

大小:613.34K时长:03:29
Rust修复了std库中Windows 10/11的关键命令注入缺陷

本文最初发表于The Register网站,由 InfoQ 中文站翻译分享。

 

Rust 安全专家解决了一个可能导致 Windows 机器上产生恶意命令注入的关键漏洞,建议程序员升级其 Rust 版本。

 

该漏洞的 CVSS 严重性评分为 10 分(满分即为 10 分),通过 CVE-2024-24576 编号进行跟踪。它会影响 Rust 标准库,当使用库的 Command API 在 Windows 上调用批处理文件时,它会出现不正确地转义参数,具体来讲就是 std::process::Command。

 

Rust 安全响应工作组(Rust Security Response Working Group)的 Pietro Albini 说到:“如果攻击者能够控制传递给生成进程的参数,那么他们就可以绕过转义执行任意的 shell 命令”,他负责撰写了该安全通知

 

报告这一问题的东京 Flatt Security 公司的研究人员说,主要问题似乎源于 Windows 的 cmd.exe 程序,该程序有更复杂的解析规则,没有它的话,Windows 就无法执行批处理文件。

 

Albini 说,Windows 的命令提示符有自己的参数分割逻辑,与标准库提供的常规 Command::arg 和 Command::args API 不同,这些 API 通常允许将不可信的输入安全地传递给生成的进程。

 

Albini 说,“在 Windows 上,该实现比其他平台更复杂,因为 Windows API 只提供了一个包含所有参数的字符串给生成的进程,并且由生成的进程负责来拆分这些参数。”大多数的程序员使用标准 C 运行时的 argv,在实践中,这基本上会以一种一致的方式来拆分参数。

 

“但不幸的是,据报道,我们的转义逻辑不完备,有可能传递恶意的参数,导致任意的 shell 均可执行。”

 

Chris Denton 是 Rust std 库的贡献者,他开发了解决这个问题的修复程序,包括改进转义代码,并确保 Command API 在无法安全转义参数时返回 InvalidInput 错误。

 

Albini 说,由于微软命令提示符的复杂性,团队无法确定在每种情况下都能安全转义参数的修复方法。

 

“如果你自己实现转义或只处理可信的输入,在 Windows 上也可以使用 CommandExt::raw_arg 方法来绕过标准库的转义逻辑。”

 

Rust 在 4 月 9 日发布了 1.77.2 版本,并表示之前的每个版本都会受到该安全漏洞的影响。

 

这门语言得到了粉丝们的热爱,经常在 Stack Overflow 的排名中名列前茅,因为开发人员发现在工作中使用 Rust 非常令人愉悦,谷歌员工也称赞了它在生产力方面的优势。该语言是国家安全机构敦促开发人员采用的较新的内存安全语言之一,以取代 C 和 C++等旧技术。

 

BatBadBut

RyotaK 是报告该漏洞的研究人员,他们将其称为 BatBadBut,该名称来源于该漏洞与批处理相关及其严重程度,即“很严重,但并不是最糟糕的”,该问题比 Rust 本身影响的技术更多。

 

Erlang、Go、Python 和 Ruby 也受到了影响,它们已经更新了各自的文档页面,以提高对这个问题的重视程度。

 

Node.js 和 PHP 现在都在编写补丁,而 Rust 和 Haskell 已经推出了修复程序。根据这名研究人员的报告,Java 同样受到了影响,但它的团队没有计划解决这个问题。

 

RyotaK 还指出,用户不应该仅仅依靠 CVSS 评级就得出结论,因为问题的严重性将取决于每个应用程序,应该根据具体情况重新考量和评估。

2024-04-22 17:055033

评论

发布
暂无评论
发现更多内容

JavaScript的事件循环机制浅析

程序猿布欧

JavaScript 前端 前端面试 防抖节流

一文详解Java日志框架JUL

华为云开发者联盟

Java 日志 框架 日志框架 JUL

《数字经济全景白皮书》Z世代用户洞察篇(3)重磅发布!

易观分析

用户分析 Z世代

眼见不一定为实:调用链HBase倾斜修复

捉虫大师

HBase 数据倾斜 4月月更

源码解析Synchronous Queue 这种特立独行的队列

华为云开发者联盟

MQ 堆栈 队列 Synchronous Queue 公平队列

【易安联】安全都是有边界的,零信任也不例外

极客天地

活动预告 | 洞见科技纪凯受邀出席「隐私计算应用与发展论坛」

洞见科技

【阿里云大咖说】填问卷送好礼正式上线,快来参与吧!

大咖说

大咖说 问卷 礼品

为安全而生!浪潮云参编的《数据安全法》实施参考(第一版)重磅发布

云安全

培训学习选择java好还是前端好

@零度

JAVA开发 web前端

这是一个有关自律的复杂故事

Coffee Cat

数据分析 监控 自律 跑步 可观测

EasyCV开源|开箱即用的视觉自监督+Transformer算法库

阿里云大数据AI技术

算法 计算机视觉 开源技术

宣布 Databricks 支持 Amazon Graviton2,性价比提高 3 倍

亚马逊云科技 (Amazon Web Services)

Tech 专栏

新零售SaaS架构:组织管理的底层逻辑与架构设计

AI架构师汤师爷

系统架构 SaaS 架构设计 组织架构

「Substrate Evangelist Program」顺利开幕,期待各位布道者共建 Substrate 生态!

One Block Community

Substrate 区块链资讯 波卡生态 Parity

想参加培训学习web前端不知道靠不靠谱

@零度

web前端开发

BIGO 的数据管理与应用实践

NebulaGraph

数据库 图数据库 数据管理

在MAUI中使用Masa Blazor

MASA技术团队

C# .net 微软 组件 组件库

OpenHarmony 技术日直播回顾丨共建新技术,开拓新领域

OpenHarmony开发者

OpenHarmony 技术日

Hoo虎符研究院|Cradle调研报告

区块链前沿News

虎符 Hoo 虎符研究院

大数据培训学习程序员有必要吗

@零度

大数据开发

什么是敏捷开发,敏捷开发落地指南之迭代排期

阿里云云效

云计算 阿里云 敏捷开发 研发 研发敏捷

手把手推导Ring All-reduce的数学性质

OneFlow

深度学习 reduce-scatter all-gather 环状算法

javaScript深拷贝和浅拷贝简单梳理

程序猿布欧

JavaScript 前端 深拷贝 浅拷贝 深拷贝与浅拷贝

企评家,助力创业板企业成长性评价

企评家

企业评价 企业大数据 创业板 评价维度 成长性

全面解读OpenHarmony 3.1 Release版本,夯实技术底座 打造繁荣生态

科技汇

“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量

TDengine

数据库 tdengine

双许可、先决条件、附加条款……开源许可证的疑难杂问

一君

跨域处理

源字节1号

软件开发 后端开发 租房小程序

linux监控软件有哪些?用什么软件好?

行云管家

Linux 运维 监控软件

Rust修复了std库中Windows 10/11的关键命令注入缺陷_安全_Connor Jones_InfoQ精选文章