当前位置:首页 > 文章列表 > 文章 > 软件教程 > Rust修复Win10/11std库命令注入漏洞

Rust修复Win10/11std库命令注入漏洞

2025-05-26 14:25:16 0浏览 收藏

Rust的安全专家修复了一个可能导致Windows机器上产生恶意命令注入的关键漏洞,建议程序员升级Rust版本至1.77.2。此漏洞通过CVE-2024-24576编号跟踪,CVSS严重性评分为10分,影响Rust标准库的Command API在Windows上调用批处理文件时的参数转义。东京Flatt Security公司的研究人员发现问题源于Windows的cmd.exe程序复杂的解析规则。Rust安全响应工作组的Pietro Albini表示,攻击者可通过控制参数绕过转义执行任意shell命令。Chris Denton开发了修复程序,改进了转义代码,并确保Command API在无法安全转义参数时返回错误。

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 评级就得出结论,因为问题的严重性将取决于每个应用程序,应该根据具体情况重新考量和评估。

声明:本文为 InfoQ 翻译,未经许可禁止转载。

到这里,我们也就讲完了《Rust修复Win10/11std库命令注入漏洞》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于Rust,Windows,命令注入,CVE-2024-24576,CommandAPI的知识点!

PHP页面跳转技巧及header函数详解PHP页面跳转技巧及header函数详解
上一篇
PHP页面跳转技巧及header函数详解
MySQL缓存配置攻略,详解查询缓存及其作用
下一篇
MySQL缓存配置攻略,详解查询缓存及其作用
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • AI边界平台:智能对话、写作、画图,一站式解决方案
    边界AI平台
    探索AI边界平台,领先的智能AI对话、写作与画图生成工具。高效便捷,满足多样化需求。立即体验!
    423次使用
  • 讯飞AI大学堂免费AI认证证书:大模型工程师认证,提升您的职场竞争力
    免费AI认证证书
    科大讯飞AI大学堂推出免费大模型工程师认证,助力您掌握AI技能,提升职场竞争力。体系化学习,实战项目,权威认证,助您成为企业级大模型应用人才。
    427次使用
  • 茅茅虫AIGC检测:精准识别AI生成内容,保障学术诚信
    茅茅虫AIGC检测
    茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
    563次使用
  • 赛林匹克平台:科技赛事聚合,赋能AI、算力、量子计算创新
    赛林匹克平台(Challympics)
    探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
    667次使用
  • SEO  笔格AIPPT:AI智能PPT制作,免费生成,高效演示
    笔格AIPPT
    SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
    577次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码