PowerShell中curl别名意外执行JavaScript的安全问题剖析

本文分析了一份提交至curl项目的安全报告,其中详细描述了在Windows PowerShell环境下,使用其内置的curl别名(实为Invoke-WebRequest)访问特定URL时,返回的HTML脚本内容被意外执行的现象,并探讨了此问题的本质与归属。

报告 #3442024 - 在PowerShell中运行curl时不应执行JavaScript

报告者: lim_e 提交至: curl 提交时间: 13天前

报告详情

原始标题: runs javascript on powershell when it shouldnt

报告描述: 在Windows系统中,当我在PowerShell中运行curl命令访问一个应返回<script>alert(1)</script>内容的脚本时,该脚本却被执行了,而按预期它不应被执行。 我未使用AI来发现或报告此漏洞。

受影响版本: 在CMD中运行 curl --version 的结果是: curl 8.16.0 (Windows) libcurl/8.16.0 Schannel zlib/1.3.1 WinIDN 在PowerShell中,--version 标志不被识别。我并未在此计算机上安装任何特定版本的curl,因此它应该是随Windows 11附带并更新的默认版本。

复现步骤:

  1. 托管一个将返回 <script>alert(1)</script> 的端点(在此案例中为 ctf.eztfsp.lv:8009/test.js)。
  2. 打开PowerShell。
  3. 在PowerShell中运行 curl ctf.eztfsp.lv:8009/test.js
  4. 它会弹出一个显示“message from webpage 1”的窗口。

辅助材料/参考资料: 我附加了一个.gif文件,演示了它在PowerShell和CMD中的不同行为。

影响: 摘要: 在PowerShell的curl中运行了JavaScript。 该问题还会导致进程挂起。当警报窗口打开时,我无法使用 Ctrl+C 来停止curl进程。因此,它可能被用于挂起PowerShell脚本。

附件:

时间线

  • 13天前: 报告者 lim_e 提交了报告。
  • 13天前: 报告者将报告标题从“runs javascript on embedded browser when it shouldnt”修改为“runs javascript on powershell when it shouldnt”。
  • 13天前: curl 团队成员 dgustafsson 发表了评论:

    感谢您的报告。Curl 本身不会执行任何内容,这难道不是PowerShell的问题吗?

  • 13天前: 报告者 lim_e 回复:

    所以您的意思是这个问题应该向微软报告?我理解可能是他们的实现有问题,因为我刚在我的工作电脑上测试,通过PowerShell也有同样的问题。

  • 13天前: curl 团队成员 bagder 关闭了报告并将状态改为“不适用”:

    在PowerShell中,--version 标志不被识别。那么你运行的就不是curl。你可能使用了PowerShell提供的curl别名,该别名调用的是 Invoke-WebRequest。它们与“真正的”curl无关。 相关阅读:https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell-curl-alias/ 这不是一个curl安全问题。

  • 13天前: 报告者 lim_e 回复:

    好的,感谢您提供的信息,对于这个误报的报告我表示歉意。

  • 13天前: curl 团队成员 bagder 请求公开此报告:

    根据项目透明度政策,我们希望所有报告都被公开。

  • 13天前: curl 团队成员 bagder 公开了此报告。
  • 13天前: 报告者 lim_e 发表最后评论:

    出于安全考虑,能否删除此工单。我正在与微软沟通,希望能澄清并缓解此漏洞。

报告元数据

  • 报告日期: November 26, 2025, 7:35am UTC
  • 报告者: lim_e
  • 报告对象: curl
  • 报告ID: #3442024
  • 严重性: 未评级 (—)
  • 公开日期: November 26, 2025, 9:32am UTC
  • 弱点分类: 网页中脚本相关HTML标签的不当中和(基本XSS)
  • CVE ID: 无
  • 赏金: 无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计