Skill Scanner数据流污点分析揭秘:AST+CFG如何捕获跨文件数据外泄攻击链
Skill Scanner数据流污点分析揭秘ASTCFG如何捕获跨文件数据外泄攻击链【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scannerSkill Scanner 是一款面向 Agent Skills 的开源安全扫描器其核心能力之一正是数据流污点分析借助 AST 语法树与 CFG 控制流图它能追踪敏感数据从读取环境变量到发往网络的完整流转路径捕获那些把恶意行为拆散在多个文件里的跨文件数据外泄攻击链。为什么单靠正则匹配不够很多恶意 Skill 不会把坏事写在同一行里。攻击者的典型套路是文件 A读取os.environ或~/.ssh凭据收集文件 B用 base64/json 把数据打包编码文件 C通过requests、urllib把数据 POST 出去外发每一处单独看都人畜无害只有把三条线索串成一条数据流才能认定这是外泄行为。Skill Scanner 的数据流污点分析就是干这件事的。第一步AST 解析——把代码变成语法树一切从 parser/python_parser.py 中的PythonParser开始。它把 Python 源码解析成标准的 AST抽象语法树让扫描器能精确识别这是函数定义、那是参数赋值、这个是模块调用而不是像正则那样只做文本匹配。这也是变量改名、语句换序等简单变形无法骗过它的原因——污点分析看的是结构不是字面文本。第二步CFG 构建——还原代码的真实执行路径仅靠 AST 还看不出数据会沿哪条分支流动。cfg/builder.py 中的ControlFlowGraph负责从 AST 构建控制流图CFG每个代码块成为一个CFGNode节点if/else、循环、函数调用成为节点间的有向边提供前驱predecessors/后继successors关系支撑后续定点计算有了 CFG分析器才能回答关键问题被污染的数据一定会到达网络调用吗——答案来自对分支路径的逐条推演而非猜测。第三步污点标记——给敏感数据贴追踪标签污点分析的核心机制实现在 taint/tracker.pyTaintStatus定义三种状态TAINTED已污染、UNTAINTED干净、UNKNOWN不确定当变量被赋值为环境变量、文件内容、用户输入等污点源时就被打上标签labelmerge方法处理分支汇合两条路径只要有一条带污点合并结果即为污染ShapeEnvironment用**写时复制copy-on-write**保存每个变量的污点状态保证定点迭代收敛且互不串扰简单说数据每被复制、拼接、传参一次污染都会跟着传染过去。第四步前向数据流分析——污点走到哪一路追踪真正的工作马是 dataflow/forward_analysis.py。它在 CFG 上做前向定点分析对每个参数维护一条FlowPath记录字段含义reaches_calls污点数据流到了哪些函数调用reaches_assignments污点数据被赋给了哪些变量reaches_external⚠️ 污点数据是否抵达网络、文件、子进程等外部 sink当reaches_external为真且污点源是环境变量/凭据文件时一条敏感数据 → 外部通道的完整证据链就成立了。除了 PythonSkill Scanner 还为 Bash 和 JavaScript 准备了专门的追踪器bash_taint_tracker.py 与 javascript_dataflow.py配合 url_classifier.py 判别 URL 性质。第五步跨文件关联——拼出完整的攻击链单个文件内读数据或发网络都可能无害杀伤力来自组合。interprocedural/cross_file_analyzer.py 中的CrossFileAnalyzer会把整个 Skill 包内所有文件的上下文放在一起检测三类多步攻击模式️外泄链Collection → Encoding → Exfiltration文件 A 收集凭据文件 B 编码文件 C 外发凭据网络分离一个文件访问凭据另一个文件持有网络能力环境变量外发链环境信息收割 网络传输每条关联结果会记录threat_type如exfiltration_chain、severity、files_involved与evidence让报告能直接指出哪几个文件构成了这条链。配套的 interprocedural/call_graph_analyzer.py 则负责跨函数的调用图分析让污点可以穿越函数边界继续传播。五步流水线如何串联源码 → ASTPythonParser→ CFGControlFlowGraph → 污点传播ShapeEnvironment → 前向定点分析FlowPath.reaches_external → 跨文件关联CrossFileAnalyzer→ 外泄攻击链告警整个静态分析由常驻核心分析器驱动无需任何外部服务即可运行完整阶段说明见官方文档 docs/architecture/analyzers/static-analyzer.md。质量如何保证数据流分析最怕误报泛滥或迭代不收敛。Skill Scanner 为这条流水线配了专门的回归测试tests/static_analysis/test_dataflow_convergence.py——验证定点迭代正确收敛tests/static_analysis/test_static_analyzer.py——静态分析器整体行为tests/test_data_exfiltration_substitutions.py——验证数据外泄检测在变量替换、语句变形下依然有效tests/behavioral/——行为分析器含数据流性能测试核心文件导航 模块路径AST 解析器skill_scanner/core/static_analysis/parser/python_parser.pyCFG 构建器skill_scanner/core/static_analysis/cfg/builder.py污点追踪器skill_scanner/core/static_analysis/taint/tracker.py前向数据流分析skill_scanner/core/static_analysis/dataflow/forward_analysis.py跨文件攻击链分析skill_scanner/core/static_analysis/interprocedural/cross_file_analyzer.pyBash 污点追踪skill_scanner/core/static_analysis/bash_taint_tracker.pyURL 分类器skill_scanner/core/static_analysis/url_classifier.py静态分析器文档docs/architecture/analyzers/static-analyzer.md小结Skill Scanner 用AST → CFG → 污点传播 → 前向数据流 → 跨文件关联五步流水线把碎片化的可疑行为还原成可举证的数据流证据链。对于正在为 Agent 生态做安全把关的团队这套确定性、可解释的分析引擎值得重点关注——它让跨文件数据外泄攻击链无处遁形。【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

大材小用烧冤枉钱?用Token Optimizer route命令为任务匹配最合适的模型

大材小用烧冤枉钱?用Token Optimizer route命令为任务匹配最合适的模型

大材小用烧冤枉钱?用Token Optimizer route命令为任务匹配最合适的模型 【免费下载链接】token-optimizer Find the ghost tokens. Fix them. Survive compaction. Avoid context quality decay. 项目地址: https://gitcode.com/gh_mirrors/toke/token-optimizer…

2026/10/4 8:44:54 阅读更多 →
OpenShell:整合PowerShell与WSL的Windows终端增效实战

OpenShell:整合PowerShell与WSL的Windows终端增效实战

说实话,我一开始看到“OpenShell”这个名字,以为又是一个 Windows 终端的换肤工具。毕竟这年头,给终端加个背景图、调个透明度,就能自称“生产力神器”的项目太多了。但真正装完、配置好、用了两周之后,我想说&#xf…

2026/10/4 8:44:54 阅读更多 →
Magenta实操指南:用神经网络生成MIDI旋律的原理与训练全流程

Magenta实操指南:用神经网络生成MIDI旋律的原理与训练全流程

我在整理自己的 MIDI 素材库时,经常会冒出同一个念头:如果神经网络能接住我写到一半的旋律,顺着音乐情绪往下生成几小节,那该多省事。真正让我确认这件事靠谱的,是谷歌 Magenta 项目。Magenta 是谷歌研究团队主导的开放…

2026/10/4 8:43:53 阅读更多 →

最新新闻

AI 安全本质是工程问题:智能体技术栈五层防护实战

AI 安全本质是工程问题:智能体技术栈五层防护实战

1. 为什么说 AI 安全本质上是工程问题,而不是模型问题很多人第一次接触 AI 安全,脑子里浮现的是对齐研究、红队测试、内容过滤这些偏研究向的东西。但真正把智能体推到生产环境的人会告诉你,绝大多数安全事故根本不是模型"变坏了"&…

2026/10/4 9:26:23 阅读更多 →
MaterialKit核心秘密:MKLayer涟漪效果实现原理深度剖析(CAShapeLayer+Core Animation全链路拆解)

MaterialKit核心秘密:MKLayer涟漪效果实现原理深度剖析(CAShapeLayer+Core Animation全链路拆解)

MaterialKit核心秘密:MKLayer涟漪效果实现原理深度剖析(CAShapeLayerCore Animation全链路拆解) 【免费下载链接】MaterialKit Material design components for iOS written in Swift 项目地址: https://gitcode.com/gh_mirrors/ma/Materia…

2026/10/4 9:26:23 阅读更多 →
如何配置UniMate的Blender环境?bpy 4.0.0版本选择的完整解读

如何配置UniMate的Blender环境?bpy 4.0.0版本选择的完整解读

如何配置UniMate的Blender环境?bpy 4.0.0版本选择的完整解读 【免费下载链接】UniMate [SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons 项目地址: https://gitcode.com/GitHub_Trending/un/UniMate UniMate(One …

2026/10/4 9:26:23 阅读更多 →
QwenPaw 安装配置与实战:从 API Key 到日常编码工作流

QwenPaw 安装配置与实战:从 API Key 到日常编码工作流

QwenPaw 这个工具,最近问的人确实不少。大家拿到手的第一反应往往是“装一下试试”,结果装完之后才发现,真正卡住人的不是安装命令本身,而是 API Key 怎么配、模型怎么选、以及装上之后到底能让它帮自己干哪些活。我前阵子刚在 Ub…

2026/10/4 9:26:22 阅读更多 →
做简历的五个途径,你用的是第几种?——从Word手敲到AI生成,五种主流方式的真实体验对比

做简历的五个途径,你用的是第几种?——从Word手敲到AI生成,五种主流方式的真实体验对比

做简历的五个途径,你用的是第几种?——从Word手敲到AI生成,五种主流方式的真实体验对比 写简历这件事,工具选择的差异比大多数人以为的大得多。同样是"做一份简历",有人打开空白Word从零开始排版&#xff0c…

2026/10/4 9:26:22 阅读更多 →
影刀RPA新手教程:三种等待指令的区别与超时设置实战

影刀RPA新手教程:三种等待指令的区别与超时设置实战

影刀RPA新手教程:三种等待指令的区别与超时设置实战 做网页自动化最崩溃的瞬间,不是报错,而是流程时好时坏:昨天跑一遍全通过,今天同样的流程跑到第三步就找不到控件。我非技术出身,用影刀RPA实操两年多&am…

2026/10/4 9:25:22 阅读更多 →

日新闻

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/4 1:00:58 阅读更多 →
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/4 1:00:58 阅读更多 →
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/4 1:00:58 阅读更多 →

周新闻

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/4 1:00:58 阅读更多 →
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/4 1:00:58 阅读更多 →
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/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →