写点什么

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:054780

评论

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

大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!

不在线第一只蜗牛

人工智能 AI

B2B企业是否建议布局TikTok?

Ogcloud

TikTok tiktok运营 tiktok营销 tiktok引流

开源7天Github斩获4.5万Stars!阿里2025版高并发设计实录鲨疯了

了不起的程序猿

后端 多线程 高并发 架构师 java面试

ThreadPoolExecutor 详解

秃头小帅oi

自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)

快乐非自愿限量之名

人工智能 DeepSeek

DeepSeek 预言要失业?速来飞算 JavaAI 炫技赛抢 “免死金牌”

飞算JavaAI开发助手

原理剖析:一文搞懂 Kafka Producer(下)

AutoMQ

云计算 大数据 数据流 Kafka Producer

好家伙!阿里新产Java性能优化(2025版),涵盖性能优化所有操作

了不起的程序猿

程序员 后端 java面试 Java性能优化 jvm优化

程序员惊了!低代码+EPG三天上线系统?这波操作我跪着看完...

快乐非自愿限量之名

低代码 数字化

炫技赛火热开启!别卷 DeepSeek 了!飞算 JavaAI 能让你少写 100 万行代码

飞算JavaAI开发助手

解锁开发新姿势!飞算JavaAI,堪称业界最牛 “AI 教练”,带你飞速蜕变

飞算JavaAI开发助手

CleverTap获得最新Gartner®个性化引擎Magic Quadrant™认证

财见

解构低代码驱动的数字化转型路径:云原生平台实现业务系统低成本快速迭代

不在线第一只蜗牛

低代码

YashanDB物理规格

YashanDB

数据库 yashandb

受需求增长推动,美国制造业一月份回升

财见

浙江AI最强阵容出炉,中之杰智能跻身前列

财见

两个案例带你看懂YashanDB执行计划

YashanDB

数据库 yashandb

东南亚恐惧之下的科技错位

脑极体

AI

【榜单解析】2025年数据安全性超强的10款项目管理软件,你选对了吗?

薛同学

数学到底在哪里支撑着编程

易成研发中心

YashanDB数据类型规格

YashanDB

数据库 yashandb

飞算JavaAI:让开发从 “累” 变 “爽” 的神奇转变!

飞算JavaAI开发助手

Swap去中心化交易所DeFi开发技术架构及流程解析

V\TG【ch3nguang】

中心化交易所开发

Vue.js 在低代码开发平台中的应用与优化

高端章鱼哥

Nexpose 7.6.0 for Linux & Windows - 漏洞扫描

sysin

Nexpose

AI+智能财务 | 智能决策分析,实现更具专业性和前瞻性的决策!

用友智能财务

AI 财会

WPS Office for Mac 7.2.0 - 写作、表格处理、PPT 制作和 PDF 编辑

sysin

wps

Fortify Static Code Analyzer 24.4 for macOS, Linux & Windows - 静态应用安全测试

sysin

VMware NSX 4.2.1.3 发布 - 网络安全虚拟化平台

sysin

nsx

SD-WAN:优化SaaS应用访问的高效解决方案

Ogcloud

网络加速 SD-WAN SD-WAN组网 网络加速服务 SD-WAN国际专线

简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标

NineData

oracle NineData Oracle 数据同步工具 KingbaseES 金仓数据库

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