Windows平台curl库权限提升漏洞分析(CURLOPT_COOKIEJAR/CURLOPT_HSTS/CURLOPT_ALTSVC)

Windows平台curl权限提升漏洞分析

漏洞概要

Windows特权进程使用CURLOPT_COOKIEJARCURLOPT_HSTSCURLOPT_ALTSVC选项时存在权限提升漏洞(EoP)。该漏洞源于Windows与Linux在unlink函数实现上的差异,以及MoveFileEx会遵循特殊构造的符号链接行为。

受影响版本

libcurl最新版本(8.11.1)

技术细节

libcurl提供的CURLOPT_COOKIEJAR等选项允许用户指定文件路径存储数据。当特权程序(如软件更新程序)使用这些选项时可能触发漏洞。

CURLOPT_COOKIEJAR为例:

  1. cookie_output函数通过Curl_fopen创建临时文件
  2. 写入数据后使用Curl_rename移动临时文件
  3. Curl_rename内部调用MoveFileExA,失败时调用unlink
  4. 在Windows下这两个操作都会遵循符号链接

攻击者可利用此特性实现:

  • 任意文件删除
  • 通过已知技术提升至SYSTEM权限

复现步骤

  1. 创建测试文件:echo "tempfile" > C:/Windows/test_file.txt
  2. 编译PoC程序(curl_EoP.slncurl_EoP_Exp.sln)
  3. 普通用户运行curl_EoP_Exp.exe
  4. 管理员权限运行curl_EoP.exe
  5. 观察C:/Windows/test_file.txt被删除

修复建议

  1. 使用GetFinalPathNameByHandleAPI验证文件最终路径
  2. MoveFileExAunlink实现安全封装
  3. 考虑将临时文件存储在%Temp%目录

影响评估

中等权限攻击者可利用此漏洞提升至SYSTEM权限,影响所有使用受影响选项且路径可写的特权程序。

[完整PoC代码及演示视频详见原始报告附件]
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-07-18 15:06  qife  阅读(8)  评论(0)    收藏  举报