CodeQL C 查询包 1.0.9 变更解析:System.Web.UI.AttributeCollection 不再作为 HTML 污点汇聚点
静态分析SAST应用安全漏洞扫描代码质量【免费下载链接】codeqlCodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security项目地址https://gitcode.com/gh_mirrors/co/codeql点击查看免费下载导读本文围绕 CodeQL C# 查询包 1.0.9 版本变更说明中的一项关键安全分析改进展开System.Web.UI.AttributeCollection的索引器indexer与Add方法被正式移出 HTML 污点汇聚点HTML sink集合。文章将从版本变更原文出发结合 Html.qll 源码与 XSS.ql 查询实现解释该改动的技术动机、对跨站脚本XSS检测精度的实际影响以及开发者在理解查询结果时需要注意的行为变化。1.0.9 变更说明原文在 CodeQL C# 查询包 1.0.9 版本的变更说明csharp/ql/src/change-notes/released/1.0.9.md中该版本被归类为Minor Analysis Improvements次要分析改进改动内容原文如下C#: The indexer andAddmethod onSystem.Web.UI.AttributeCollectionis no longer considered an HTML sink.即System.Web.UI.AttributeCollection上的索引器this[...]和Add方法不再被视为 HTML sink。这条记录同时被收录在 csharp/ql/src/CHANGELOG.md 中第 340 行是查询库语义调整的正式归档。背景CodeQL 中的 HTML sink 与 XSS 检测在 CodeQL 的污点流taint tracking分析框架中sink汇聚点是指不安全数据可能流出的位置——对于 XSS 漏洞即用户可控数据被写入页面且未经过 HTML 编码的地方。CodeQL C# 的 XSS 检测由 csharp/ql/src/Security Features/CWE-079/XSS.ql 定义其元数据声明了id cs/web/xss、kind path-problem并关联 CWE-079跨站脚本与 CWE-116编码问题。该查询的核心调用链为XSS.ql导入semmle.code.csharp.security.dataflow.XSSQueryXSSQuery.qll位于 csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll汇总各类 XSS sink 定义具体 sink 定义位于 XSSSinks.qll其中HtmlSinkSink类将所有实现HtmlSink的节点纳入 XSS 污点汇聚点。而 HTML sink 的抽象基类HtmlSink定义在 flowsinks/Html.qll第 23 行其语义注释为A sink where the value of the expression may be rendered as HTML, without implicit HTML encoding.即表达式取值可能被渲染为 HTML、且未经过隐式 HTML 编码的位置。同时HtmlSink还继承自RemoteFlowSink意味着所有 HTML sink 同时也参与远程数据流remote flow分析影响面不限于 XSS 单一查询。变更的源码实现证据与 1.0.9 变更说明直接对应的源码证据位于 flowsinks/Html.qll 第 5870 行/** * DEPRECATED: Attribute collections are no longer considered HTML sinks. */ deprecated class AttributeCollectionSink extends DataFlow::ExprNode { AttributeCollectionSink() { exists(SystemWebUIAttributeCollectionClass ac, Parameter p | p ac.getAddMethod().getParameter(1) or p ac.getItemProperty().getSetter().getParameter(0) | this.getExpr() p.getAnAssignedArgument() ) } }从源码可以明确读出三个关键事实旧实现中AttributeCollectionSink覆盖两个入口Add方法的第 2 个参数getAddMethod().getParameter(1)与索引器 settergetItemProperty().getSetter().getParameter(0)这与变更说明中indexer andAddmethod的表述一一对应类声明上方直接标注了DEPRECATED注释说明该 sink 已被正式废弃该废弃类已不再继承HtmlSink基类仅为DataFlow::ExprNode因此不再被XSSSinks.qll中的HtmlSinkSink收集也就不会进入 XSS 污点流分析。为什么移除误报false positive治理的典型实践从 CodeQL 查询库的演进逻辑可以推断本次移除属于减少误报的精度治理System.Web.UI.AttributeCollection是 ASP.NET WebForms 服务器控件如WebControl、HtmlControl用于管理 HTML 特性attribute的集合类型。向该集合写入数据并不等同于数据直接输出到 HTTP 响应体且未编码——其值最终是否以危险形式渲染取决于控件属性与页面生命周期的后续行为中间存在大量编码、过滤与序列化环节。将AttributeCollection.Add与索引器粗粒度地建模为 HTML sink容易导致用户可控数据仅写入控件特性集合、但最终被安全处理如 ASP.NET 内置特性编码的代码被误报为 XSS 漏洞sink 语义与HtmlSink抽象定义may be rendered as HTMLwithout implicit HTML encoding不一致——集合写入点本身并不承诺未经编码地渲染。移除后XSS 查询将聚焦于真正直接输出未编码内容的汇聚点例如 Html.qll 中仍保留的HtmlTextWriterSinkHtmlTextWriter.Write/WriteLine/WriteAttribute等方法的写入参数、SetAttributeSinkHtmlElement.SetAttribute第二参数以及 XSSSinks.qll 中建模的System.Web.UI.Page标题/元数据属性、ClientScriptManager脚本注册方法、HttpResponseBase写入方法等。对查询结果的实际影响误报减少凡是数据流经AttributeCollection索引器或Add方法的代码路径不再单独触发 XSS 告警除非该数据还经由其他仍被建模的 HTML sink 输出分析兼容性AttributeCollectionSink以deprecated形式保留在 flowsinks/Html.qll 中意味着依赖旧 sink 语义的自定义查询仍可编译仅产生废弃警告但官方 XSS 查询已不再使用它——这是 CodeQL 库演进中向后兼容的常规做法版本影响范围该变更随 1.0.9 及之后的查询包版本生效。若项目锁定旧版查询包行为不变升级后扫描结果中与AttributeCollection相关的 XSS 告警将消失属于预期内的结果变化可在发布安全公告时结合该变更说明核对告警差异。小结CodeQL C# 1.0.9 对System.Web.UI.AttributeCollection索引器与Add方法的 sink 语义调整是查询库通过收紧 sink 边界来降低 XSS 误报的一次典型变更。它体现了 CodeQL 安全查询的设计原则sink 必须精确对应数据以未编码形式输出到 HTML的实际危险点而非一切触及 HTML 相关集合的操作。理解此类变更有助于安全团队在升级查询包时准确解读告警数量的增减并据此优化自定义查询与安全基线。参考文件变更说明原文csharp/ql/src/change-notes/released/1.0.9.md变更汇总归档csharp/ql/src/CHANGELOG.mdHTML sink 基类与废弃的AttributeCollectionSinkflowsinks/Html.qllXSS sink 汇总XSSSinks.qllXSS 查询定义XSS.ql赞分享静态分析SAST应用安全漏洞扫描代码质量【免费下载链接】codeqlCodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security项目地址https://gitcode.com/gh_mirrors/co/codeql点击查看免费下载相关推荐CodeQL C 库 0.12.0 版本更新全解析破坏性变更、新污点模型与安全查询增强CodeQL C 库 0.12.0 版本更新全解析破坏性变更、新污点模型与安全查询增强 0.12.0 是 CodeQL C 查询库 cpp/ql/l静态分析SAST应用安全漏洞扫描代码质量CodeQL C/C 查询包 0.0.11 版本解析新查询、破坏性变更与精度提升CodeQL C/C 查询包 0.0.11 版本解析新查询、破坏性变更与精度提升 本指南以 CodeQL 仓库中 cpp/ql/src/change no静态分析SAST应用安全漏洞扫描代码质量CodeQL 1.26 C/C 分析改进解析查询精度调整与库级污点流模型扩展CodeQL 1.26 C/C 分析改进解析查询精度调整与库级污点流模型扩展 本文基于 CodeQL 仓库中 1.26 版本的 C/C 分析变更说明静态分析SAST应用安全漏洞扫描代码质量上一篇Music-dl源码解析从零理解命令行音乐下载器的架构设计下一篇如何在NomadNet中创建和管理分布式对话完整用户手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

FusionStorage分布式存储运维实践:存储池、iSCSI与故障排查

FusionStorage分布式存储运维实践:存储池、iSCSI与故障排查

简介:华为FusionStorage系统管理指南是一份面向数据中心存储管理员与运维工程师的官方操作手册,聚焦分布式存储解决方案中存储资源的管理与维护,重点解决存储池和块客户端日常操作中的常见问题。文档版本为V100R003C30,内容按模块…

2026/10/10 5:09:27 阅读更多 →
cmux多路复用机制详解:从核心原理到参数调优与踩坑实践

cmux多路复用机制详解:从核心原理到参数调优与踩坑实践

1. 从“cmux”这个名字说起:它到底想解决什么问题第一次看到“cmux”这个词,很多人会愣一下。它不像“某某管理系统”那样一眼能看出用途,也不像“某某加速器”那样自带场景暗示。拆开看,“c”和“mux”的组合其实藏着一条很清晰的…

2026/10/10 5:08:26 阅读更多 →
大模型数学竞赛评测的确定性沙箱闭环:SymPy 符号化简与 Lean 4 战术审计规范

大模型数学竞赛评测的确定性沙箱闭环:SymPy 符号化简与 Lean 4 战术审计规范

在评估大语言模型(LLM)的高阶数理推理能力时,学术界与评测机构长期受制于一种荒诞的**“裁判危机”**。在 GSM8K、MATH、AIME 等极具含金量的竞赛基准上,不同团队测出的准确率往往存在数个百分点甚至高达 10% 的悬殊差异。深入其评…

2026/10/10 5:08:26 阅读更多 →

最新新闻

缩短招聘周期:从人才画像到Offer的11个高效策略

缩短招聘周期:从人才画像到Offer的11个高效策略

招聘周期拉长,用人部门催、候选人等不起、HR夹在中间两头受气——这是过去几年我在各类企业里反复看到的真实场面。尤其遇到急招岗位,从职位发布到人选入职动辄拖上三四十天,错过业务窗口不说,还经常出现“谈好的Offer被对手截胡”…

2026/10/10 5:45:40 阅读更多 →
MyBatis动态SQL核心用法:多条件查询、批量操作与安全实践

MyBatis动态SQL核心用法:多条件查询、批量操作与安全实践

做后端几年,动态 SQL 基本是每天都要打交道的东西。业务方今天要按名称筛,明天要加时间范围,后天又要排除某几个状态,如果每换一种组合就写一条 SQL,代码量会无限膨胀。更麻烦的是,条件一变,拼接…

2026/10/10 5:45:40 阅读更多 →
C++函数传参与内存模型:对象生命周期与RAII解析

C++函数传参与内存模型:对象生命周期与RAII解析

我记得带过不少刚学编程的新同学,很多人是在“指针”“内存”“类”这三座大山面前开始动摇的。前两讲我们把语法基础过了一遍,第三讲正好站在一个分水岭上:如果只看代码表面,你写的还是C;但如果理解了函数回调机制、内…

2026/10/10 5:45:40 阅读更多 →
基于Python的多元统计分析课设源码:从K-means到PCA实战解析

基于Python的多元统计分析课设源码:从K-means到PCA实战解析

简介:这是一份面向高校生与数据学习者的多元统计分析课程设计源码包,覆盖描述性统计、回归分析、因子分析、主成分分析、k均值与层次聚类、Apriori关联规则等经典方法,每个Python脚本对应一个独立实验,从数据读取、清洗到结果输出…

2026/10/10 5:45:40 阅读更多 →
Python54-55:核心语法-数据容器-字典dict-案例

Python54-55:核心语法-数据容器-字典dict-案例

开发一个购物车管理系统,实现商品信息的添加、修改、删除、查询功能。系统使用字典结构存储商品数据,通过控制台菜单与用户交互。具体功能如下:添加购物车:用户根据提示录入商品名称、以及该商品的价格、数量,保存该商…

2026/10/10 5:45:40 阅读更多 →
开源实时协作Markdown编辑器HedgeDoc:自托管与权限管理指南

开源实时协作Markdown编辑器HedgeDoc:自托管与权限管理指南

如果你所在的环境里,协作记录一直散落在聊天记录、本地文本和邮箱附件之间,我建议你认真了解一下 HedgeDoc。它是一款开源的、基于 Web 的实时协作 Markdown 编辑器,浏览器打开就能用,也能在自己的服务器上搭建。我把团队内部的技…

2026/10/10 5:44:39 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →