Windows平台curl库权限提升漏洞分析(CURLOPT_COOKIEJAR/CURLOPT_HSTS/CURLOPT_ALTSVC)
Windows平台curl权限提升漏洞分析
漏洞概要
Windows特权进程使用CURLOPT_COOKIEJAR
、CURLOPT_HSTS
或CURLOPT_ALTSVC
选项时存在权限提升漏洞(EoP)。该漏洞源于Windows与Linux在unlink
函数实现上的差异,以及MoveFileEx
会遵循特殊构造的符号链接行为。
受影响版本
libcurl最新版本(8.11.1)
技术细节
libcurl提供的CURLOPT_COOKIEJAR
等选项允许用户指定文件路径存储数据。当特权程序(如软件更新程序)使用这些选项时可能触发漏洞。
以CURLOPT_COOKIEJAR
为例:
cookie_output
函数通过Curl_fopen
创建临时文件- 写入数据后使用
Curl_rename
移动临时文件 Curl_rename
内部调用MoveFileExA
,失败时调用unlink
- 在Windows下这两个操作都会遵循符号链接
攻击者可利用此特性实现:
- 任意文件删除
- 通过已知技术提升至SYSTEM权限
复现步骤
- 创建测试文件:
echo "tempfile" > C:/Windows/test_file.txt
- 编译PoC程序(
curl_EoP.sln
和curl_EoP_Exp.sln
) - 普通用户运行
curl_EoP_Exp.exe
- 管理员权限运行
curl_EoP.exe
- 观察
C:/Windows/test_file.txt
被删除
修复建议
- 使用
GetFinalPathNameByHandle
API验证文件最终路径 - 对
MoveFileExA
和unlink
实现安全封装 - 考虑将临时文件存储在
%Temp%
目录
影响评估
中等权限攻击者可利用此漏洞提升至SYSTEM权限,影响所有使用受影响选项且路径可写的特权程序。
[完整PoC代码及演示视频详见原始报告附件]
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码