挖洞经验 | 用跨站搜索(XS-Search)在谷歌问题跟踪平台实现敏感信息获取
字数 1664 2025-08-18 11:37:49

跨站搜索攻击(XS-Search)在谷歌问题跟踪平台的应用与分析

1. 背景介绍

1.1 Monorail服务概述

Monorail是谷歌旗下用于Chromium浏览器项目的开源问题跟踪平台(Issue Tracker),具有以下特点:

  • 云托管服务
  • 自定义ACL问题和用户权限管理
  • 组件和代码结构的相互映射
  • 组件所有者具备特定权限
  • 问题的自定义描述功能
  • 多项目托管和问题在项目间的无缝对接

Monorail不仅用于Chromium项目,还被用于以下谷歌开源项目:

  • Angle
  • PDFium
  • Gerrit
  • V8
  • 开放媒体联盟(Alliance for Open Media)
  • 谷歌安全团队Project Zero的漏洞跟踪

2. 漏洞发现过程

2.1 CSV报告下载功能分析

Monorail提供查询结果的CSV格式报告下载功能,例如查询ID为911374和911375的问题:

https://bugs.chromium.org/p/chromium/issues/csv?can=1&q=id%3A911374%2C911375&colspec=ID

2.2 CSRF漏洞

研究发现高级搜索功能中存在CSRF漏洞:

  • 可构造特定查询请求链接
  • 无CSRF防护机制
  • 示例构造的查询:
https://bugs.chromium.org/p/chromium/issues/csv?can=1&q=Restrict=View-SecurityTeam&colspec=ID

此查询可获取本应只有安全团队才能查看的内容(如ID为895735、877347和870573的条目)

2.3 结果列重复生成漏洞

在CSV报告中可任意增加结果生成列,例如:

https://bugs.chromium.org/p/chromium/issues/csv?can=1&q=id:51337&colspec=ID+Summary+Summary+Summary

此查询会生成包含3个Summary列的报告(原本只有1个)

3. 跨站搜索攻击(XS-Search Attack)原理

3.1 基本概念

跨站搜索攻击(XS-Search Attack)是一种类似边信道攻击的技术:

  • 通过向目标站点发送搜索请求
  • 结合特定搜索功能
  • 根据响应时间差异(XS-Timing)判断服务端隐私信息
  • 可绕过"同源策略"限制

3.2 攻击条件

在Monorail平台上实施XS-Search攻击需要两个条件:

  1. 执行复杂搜索查询的能力
  2. 扩展显示查询响应的能力(通过结果列重复生成漏洞实现)

3.3 攻击原理

通过构造不同的查询,观察响应时间差异:

  1. 构造"Summary: This bug exists"查询 - 生成大内容CSV报告
  2. 构造"Summary: This bug doesn't exist"查询 - 生成小内容CSV报告
  3. 构造"Summary: This bug exists OR Summary: This bug doesn't exist"查询 - 根据匹配情况生成不同大小的报告

3.4 具体实施步骤

  1. 选择查询目标:Chromium项目文件结构中的特定文件路径
    https://cs.chromium.org/chromium/src/
    
  2. 使用OR连接符对不同路径进行查询,如:
    src/blink OR src/build
    
  3. 根据响应时间判断:
    • 如果得到响应(大内容CSV),则限定在前半部分查询
    • 如果无响应(小内容CSV),则限定在后半部分查询
  4. 重复上述过程,逐步缩小范围,最终定位到具体文件和漏洞报告

3.5 响应时间测量技术

使用Cache API来提高测量精度:

  • 对同一响应进行多次缓存和测量
  • 与空搜索响应结果比较
  • 过滤硬件和网络差异
  • 提高攻击速度和可靠性

4. 漏洞影响与修复

4.1 发现的漏洞

在Monorail服务中发现了三个可利用点,被分配了以下CVE编号:

  • CVE-2018-10099
  • CVE-2018-19334
  • CVE-2018-19335

4.2 修复措施

谷歌已发布以下修复:

  1. 修复Monorail CSV文件下载中的CSRF漏洞
  2. 修复重复列生成漏洞
  3. 禁止使用double grid axes和Cc axis
  4. 防止通过groupby参数进行请求膨胀

5. 防御建议

  1. 实施严格的CSRF防护机制
  2. 对查询参数进行严格验证和过滤
  3. 限制查询结果的扩展能力
  4. 对敏感查询实施速率限制
  5. 考虑对响应时间差异进行模糊处理

6. 总结

本案例展示了如何利用Monorail平台的两个漏洞(CSRF和结果列重复生成)组合实施跨站搜索攻击,从而获取本应受限的漏洞报告信息。这种攻击方式强调了:

  1. 看似无害的功能可能被组合利用造成严重安全问题
  2. 响应时间分析可以成为信息泄露的渠道
  3. 对搜索功能的权限控制需要全面考虑各种潜在攻击向量
跨站搜索攻击(XS-Search)在谷歌问题跟踪平台的应用与分析 1. 背景介绍 1.1 Monorail服务概述 Monorail是谷歌旗下用于Chromium浏览器项目的开源问题跟踪平台(Issue Tracker),具有以下特点: 云托管服务 自定义ACL问题和用户权限管理 组件和代码结构的相互映射 组件所有者具备特定权限 问题的自定义描述功能 多项目托管和问题在项目间的无缝对接 Monorail不仅用于Chromium项目,还被用于以下谷歌开源项目: Angle PDFium Gerrit V8 开放媒体联盟(Alliance for Open Media) 谷歌安全团队Project Zero的漏洞跟踪 2. 漏洞发现过程 2.1 CSV报告下载功能分析 Monorail提供查询结果的CSV格式报告下载功能,例如查询ID为911374和911375的问题: 2.2 CSRF漏洞 研究发现高级搜索功能中存在CSRF漏洞: 可构造特定查询请求链接 无CSRF防护机制 示例构造的查询: 此查询可获取本应只有安全团队才能查看的内容(如ID为895735、877347和870573的条目) 2.3 结果列重复生成漏洞 在CSV报告中可任意增加结果生成列,例如: 此查询会生成包含3个Summary列的报告(原本只有1个) 3. 跨站搜索攻击(XS-Search Attack)原理 3.1 基本概念 跨站搜索攻击(XS-Search Attack)是一种类似边信道攻击的技术: 通过向目标站点发送搜索请求 结合特定搜索功能 根据响应时间差异(XS-Timing)判断服务端隐私信息 可绕过"同源策略"限制 3.2 攻击条件 在Monorail平台上实施XS-Search攻击需要两个条件: 执行复杂搜索查询的能力 扩展显示查询响应的能力(通过结果列重复生成漏洞实现) 3.3 攻击原理 通过构造不同的查询,观察响应时间差异: 构造"Summary: This bug exists"查询 - 生成大内容CSV报告 构造"Summary: This bug doesn't exist"查询 - 生成小内容CSV报告 构造"Summary: This bug exists OR Summary: This bug doesn't exist"查询 - 根据匹配情况生成不同大小的报告 3.4 具体实施步骤 选择查询目标:Chromium项目文件结构中的特定文件路径 使用OR连接符对不同路径进行查询,如: 根据响应时间判断: 如果得到响应(大内容CSV),则限定在前半部分查询 如果无响应(小内容CSV),则限定在后半部分查询 重复上述过程,逐步缩小范围,最终定位到具体文件和漏洞报告 3.5 响应时间测量技术 使用Cache API来提高测量精度: 对同一响应进行多次缓存和测量 与空搜索响应结果比较 过滤硬件和网络差异 提高攻击速度和可靠性 4. 漏洞影响与修复 4.1 发现的漏洞 在Monorail服务中发现了三个可利用点,被分配了以下CVE编号: CVE-2018-10099 CVE-2018-19334 CVE-2018-19335 4.2 修复措施 谷歌已发布以下修复: 修复Monorail CSV文件下载中的CSRF漏洞 修复重复列生成漏洞 禁止使用double grid axes和Cc axis 防止通过groupby参数进行请求膨胀 5. 防御建议 实施严格的CSRF防护机制 对查询参数进行严格验证和过滤 限制查询结果的扩展能力 对敏感查询实施速率限制 考虑对响应时间差异进行模糊处理 6. 总结 本案例展示了如何利用Monorail平台的两个漏洞(CSRF和结果列重复生成)组合实施跨站搜索攻击,从而获取本应受限的漏洞报告信息。这种攻击方式强调了: 看似无害的功能可能被组合利用造成严重安全问题 响应时间分析可以成为信息泄露的渠道 对搜索功能的权限控制需要全面考虑各种潜在攻击向量