当前位置: 首页 > news >正文

当使用自定义Host头时,cURL中的跨源Cookie泄漏与注入风险

报告详情

报告ID: #3516878
标题: 当使用自定义 Host 头时,存在跨源 Cookie 泄漏和注入风险
提交者: b4c90000040c1287364ccde6de680
提交时间: 14天前
报告对象: curl

摘要

当指定自定义主机名时,如果该传输也启用了Cookie引擎,则该主机名将被用于Cookie匹配。尽管最初提供的主机名在重定向后被移除,但这种匹配行为在跨源重定向中仍然持续。

技术细节

1. 自定义 Host 头如何设置 cookiehost
cookiehost从自定义的 Host 头中设置:
文件:lib/http.c中的http_set_aptr_host函数

ptr=Curl_checkheaders(data,STRCONST("Host"));if(ptr&&(!data->state.this_is_a_follow||curl_strequal(data->state.first_host,conn->host.name))){/* 如果我们有一个给定的自定义 Host: 头部,我们提取主机名, 以便稍后可能将其用于Cookie相关操作。只有当这不是重定向请求时, 我们才允许自定义 Host: 头,因为在重定向请求中设置 Host: 头是很冒险的。 除非主机名与第一个主机名相同! */char*cookiehost;CURLcode result=copy_custom_value(ptr,&cookiehost);...aptr->cookiehost=cookiehost;}

2. cookiehost 如何被使用
cookiehost既用于发送 Cookie,也用于处理Set-Cookie
文件:lib/http.c中的http_header函数

v=(data->cookies&&data->state.cookie_engine)?HD_VAL(hd,hdlen,"Set-Cookie:"):NULL;.../* 如果有一个自定义设置的 Host: 名,则在此处使用它,否则使用真实的对等主机名。 */constchar*host=data->state.aptr.cookiehost?data->state.aptr.cookiehost:conn->host.name;...result=Curl_cookie_add(data,data->cookies,TRUE,FALSE,v,host,data->state.up.path,secure_context);

文件:lib/http.c中的http_cookies函数

constchar*host=data->state.aptr.cookiehost?data->state.aptr.cookiehost:data->conn->host.name;Curl_share_lock(data,CURL_LOCK_DATA_COOKIE,CURL_LOCK_ACCESS_SINGLE);result=Curl_cookie_getlist(data,data->conn,&okay,host,&list);

由于cookiehost在重定向时未被清除,此行为会持续存在于跨源重定向中。

libcurl 文档说明
libcurl 关于CURLOPT_HTTPHEADER的文档提到:

如果也为该传输启用了Cookie引擎,则指定的主机名将用于Cookie匹配。

但文档中没有明确警告这在跨源重定向中也适用。

受影响版本

  • 测试于 curl 8.18.0

复现步骤

使用以下命令复现该问题:

user@pc:~$curl-v -L -c cookies.txt -H"Host: example.com"--resolve b.com:8001:127.0.0.1 --resolve a.com:8000:127.0.0.1 a.com:8000

详细的请求和响应日志展示了跨域重定向过程中,针对example.com域设置的 Cookie(ccc="secret"bbb="test")被错误地发送到实际主机a.comb.com

复现过程生成的cookies.txt文件内容如下:

# Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. example.com FALSE / FALSE 0 bbb test example.com FALSE / FALSE 0 ccc secret

影响

  • 跨源 Cookie 泄漏和注入风险:攻击者可能利用此行为,通过诱使用户访问一个可控的、能够设置自定义 Host 头并触发跨域重定向的页面,来窃取或注入与任意域名关联的 Cookie。

处理过程

bagder (curl staff)在14天前发表了评论:

这是预期行为。

bagder (curl staff)在13天前关闭了报告并将状态改为Not Applicable

欢迎建议改进文档的措辞以使其更清晰,但我们确实尝试记录了这一点,并且任何实际尝试和测试此功能的应用程序都会看到它。这不是一个安全问题。

bagder (curl staff)在13天前请求公开此报告:

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

bagder (curl staff)在13天前公开了此报告。

报告元数据

  • 报告日期: January 19, 2026, 6:46pm UTC
  • 报告者: b4c90000040c1287364ccde6de680
  • 报告对象: curl
  • 参与者: bagder (curl staff)
  • 严重等级: 无评级 (—)
  • 公开日期: January 20, 2026, 6:48am UTC
  • 弱点分类: 凭证保护不足
  • CVE ID: 无
  • 赏金: 无FINISHED
    biOK/hzhVF2yKaGc5mK8oeejIYuUYW8I3RsXQCFCiXX2FBas+esuFymsr4+a87Du
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
http://www.jsqmd.com/news/357138/

相关文章:

  • springboot开题报告英语学习助手
  • 强连通分量+缩点
  • Linux命令-lprm(删除打印队列中任务)
  • 企业级音频内容管理:从混沌到有序的语音检索系统构建指南
  • 基于浏览器开发者工具的VK视频下载方案实践
  • 突破实时音频分析瓶颈:边缘AI技术让语音理解提速8倍
  • Linux命令-lpstat(查看打印机状态和打印队列信息)
  • 深入解析:STM32初学---总线:AHB、AHP / EEPROM、SPI FLASH、EMMC
  • Mac软件汉化完全指南:Axure RP 11界面本地化实操
  • 基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升 - 实践
  • 【WC 2026】 游记
  • 3步突破软件本地化障碍:从效率损耗到用户体验升级
  • Midscene.js调试工具终极指南:Playground与Chrome扩展完全手册
  • Java序列化从入门到精通:核心原理、实战应用与进阶优化
  • 智能驱动下的隐写术探查新范式:自动化工具体系与技术演进
  • 5大突破!抖音视频批量采集工具让内容获取效率提升300%的实战指南
  • YimMenu革新性全景指南:重新定义GTA5游戏增强工具体验
  • n8n自动化平台爆6个高危漏洞,4个RCE可致服务器完全接管,全网紧急升级预警
  • 5个技巧让游戏自动化效率工具为你解放双手
  • 视频资源获取工具高效解决方案:从入门到精通的全方位指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的会议室管理系统的设计与实现
  • 【含文档+PPT+源码】基于微信小程序的房屋租赁系统
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的公司工作任务管理系统的设计与实现
  • 智能释放系统加速工具:让电脑焕发新生的性能优化指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的企业人事管理系统的设计与实现
  • 如何利用开源无人机地面站Mission Planner实现专业级飞行控制?
  • 抖音内容批量获取工具:技术实现与效能优化指南
  • 电脑越用越慢?这款轻量工具让内存释放提升40%
  • 3步构建教育资源诊疗系统:从混乱管理到智能架构的转型方案
  • 当代码面临道德选择:VR如何为AI伦理决策注入“人性压力”