pprof -http 中存储的 XSS: 将恶意配置文件的样本标签/文件名放入 DOT 图中,而没有使用 escapeForDot() 进行转义,从而注入了 URL="JavaScript:"…"",Graphviz 将其渲染为可点击的 SVG 链接。
作者: PlayerIUnknown创建于 2026年8月27日更新于 2026年8月28日
摘要
pprof -http 提供了一个 Web UI,用于渲染一个不可信的配置文件 (开发人员通常会打开从 CI、生产环境的 /debug/pprof、错误报告或同事下载的配置文件)。图形视图会从配置文件中提取的字符串构建一个 Graphviz DOT 文档,运行 dot -Tsvg,并嵌入 SVG 原始 ( template.HTML)。两个字符串字段 - 一个示例 标签 和一个函数 文件名 - 会被插入到 DOT 中,而不使用 escapeForDot() 进行输出编码 (兄弟标签/工具提示/边路径会使用此编码)。攻击者的值中包含的 " 会在 DOT label="…" 字符串中提前关闭,从而允许攻击者在 pprof UI 原生中注入一个真正的 DOT 属性 URL="JavaScript:…"。Graphviz 会将其转换为一个 SVG <a xlink:href="JavaScript:…">,并在 pprof Web 原生中进行渲染。结果: 存储的 XSS - 打开恶意配置文件并单击图形节点的开发人员会在 pprof UI 原生中运行攻击者 JavaScript。
内容来源: google/pprof