【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

评论

发布
暂无评论

不同云平台之间的纳管用什么工具好?有推荐的吗?

行云管家

云计算 云平台

号外!多个企业数智化领先实践将亮相2023用友BIP技术大会

用友BIP

技术大会 用友iuap 升级企业数智化底座 央国企数智化转型

关于数智融合,看看这20位专家都聊了什么

华为云开发者联盟

云计算 华为云 数智融合 华为云开发者联盟 企业号 4 月 PK 榜

plist文件格式转换器

雪奈椰子

ios打包 上架 IPA上传

嘉为蓝鲸DevOps平台V5.0,以平台工程提升企业软件研发质效

嘉为蓝鲸

DevOps 研发

一次系统延迟性优化案例

蓝胖子的编程梦

golang 性能 延迟 线上事故 线上故障

Codepipeline 跨账号访问 Codecommit

亚马逊云科技 (Amazon Web Services)

一次排查某某云上的redis读超时经历

蓝胖子的编程梦

redis 性能 线上事故 线上故障 超时

复旦邱锡鹏教授:语言模型即服务的五类应用手段,你了解多少

小红书技术REDtech

深度学习 nlp

AI时代,看用友iuap如何推动数智商业创新

用友BIP

AI 技术大会 数智底座 升级企业数智底座

通过4种经典应用,带你熟悉回溯算法

华为云开发者联盟

人工智能 华为云 回溯算法 华为云开发者联盟 企业号 4 月 PK 榜

mac虚拟机Parallels Desktop 常见问题解答

互联网搬砖工作者

江苏启东|2023中国·启东第八届“启创杯”创业大赛

科兴未来News

电子信息 新能源 医疗器械 双创比赛 江苏启东

软件测试/测试开发丨接口自动化测试分层设计与实践总结

测试人

软件测试 自动化测试 接口测试 测试开发 接口自动化

LED显示屏品质如何控制

Dylan

品牌 LED显示屏 全彩LED显示屏

Web前端组件库OpenTiny项目如何使用?

英勇无比的消炎药

开源 前端 OpenTiny UI组件库

软件测试/测试开发丨Dubbo 接口测试原理及多种方法实践总结

测试人

dubbo 软件测试 接口测试

【基础知识】PCB布局设计入门步骤

华秋PCB

工具 电路 PCB 布局 PCB设计

曝光老李的聊天记录——关于VMware的秘密

嘉为蓝鲸

运维 虚拟机

持续集成的前提条件

测吧(北京)科技有限公司

测试

厦门等级保护测评机构地址在哪里?咨询电话多少?

行云管家

等级测评 厦门

openGemini 1.0版本,带来哪些新特性和性能提升?

华为云开源

数据库 时序数据库 sql

金三银四(P5-P7 级)1000 多道 Java 面试题,从基础到架构

采菊东篱下

Java

交大翟广涛教授:眼见不实,怎样评价媒体体验质量

小红书技术REDtech

深度学习

NFT游戏开发交易系统搭建方案

薇電13242772558

NFT

首次解密小红书“种草”机制:大规模深度学习系统技术是如何应用的

小红书技术REDtech

深度学习 机制策略 活动回顾

【云图说】云数据库GaussDB如何做到卓越性能

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

Nautilus Chain 上首个 DEX PoseiSwap 模型解析

鳄鱼视界

全国首届大模型创新创意应用大赛开启,等你来赛!

NLP资深玩家

轻松几秒提升视频清晰度:Perfectly Clear Video Mac版

真大的脸盆

Mac 视频处理 视频增强 Mac 软件 视频画质

重庆理工大学教授程平:智能会计时代,应充分发挥数据资产的价值

用友BIP

人工智能 数据资产 智能会计 价值财务 事项会计

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