尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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),仅供参考
RELATED

相关推荐

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

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

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

📅 2026/10/10 5:09:25
PCA9422+STM32F091RC的嵌入式电源管理方案实战

PCA9422+STM32F091RC的嵌入式电源管理方案实战

/* 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:04:25
Agent技能系统实战:从零构建让大模型可落地的数字员工工具包

Agent技能系统实战:从零构建让大模型可落地的数字员工工具包

写一个通用型的“技能包”,让原本只会聊天的大模型,变成能干活、能查数、能操作外部系统的数字员工。这个方向业内叫Agent Skills,核心思路是:把复杂任务拆成一个个可命名、可描述、可调用的最小操作单元,模型根据任务…

📅 2026/10/10 5:04:25
MORE NEWS

更多资讯

📰

微网并离网切换技术解析:架构、控制策略与调试实践

1. 先搞清楚微网为什么要"并离网切换"做微网项目这些年,被问得最多的一句话是:"不就是电网停电了,微网自己接着发电吗?一个开关的事,有什么好折腾的?"每次听到这种话,我都想…

📰

CentOS 7.9 源码编译安装 FreeSWITCH 全流程与避坑指南

最近在一台 CentOS 7.9 的旧服务器上重新部署 FreeSWITCH,从拉源码到编译再到服务化,又实打实走了一遍全流程。网上讲 CentOS 7.9 安装 FreeSWITCH 的教程不算少,但很多直接给个 RPM 仓库地址,或者默认你已经有一台配置很好的新机…

📰

测试环境云化实战:浏览器矩阵与按需调度

做测试这行久了,你会发现真正卡脖子的经常不是自动化能力,而是“环境就绪”这件事。开发一句“我这边跑得好好的”,测试就得自己动手把浏览器版本、系统版本、网络条件全部复刻一遍。尤其到了兼容性测试阶段,要在不同浏览器、不同…

📰

技能高考必刷题,(1)【程序设计】输入三角形的三条边,判断其能否构成三角形,如果可以,则判断出三角形的种类:等腰三角形、等边三角形、直角三角形或一般三角形。注意:输出分五种情况:“等边三角形\n“;

#include <stdio.h> void main() {int a,b,c;printf("请输入三角形的三条边&#xff1a;");scanf("%d%d%d",&a,&b,&c);/**********Program**********/if((a>0&&b>0&&c>0)&&(ab>c||ac>b||bc>a…

📰

局域网离线考试系统技术架构与实战落地解析

1. 为什么“局域网离线考试”不是权宜之计&#xff0c;而是教育数字化落地的关键锚点“万维考试系统&#xff1a;局域网离线考试客户端技术解析”——这个标题里藏着一个被很多人忽略的现实矛盾&#xff1a;当教育信息化口号喊了十年&#xff0c;PPT上全是“云平台”“AI监考”…

📰

Cross Entropy Loss深度解析:从公式推导到PyTorch实现

做分类训练这么多年&#xff0c;Cross Entropy Loss 可以说是我打交道最频繁的损失函数。图像分类、文本多分类、目标检测里的类别分支&#xff0c;模型架构换了一茬又一茬&#xff0c;但最终收敛用的基本都是交叉熵这一套。这篇文章是“损失函数大汇总”系列的第四篇&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬