尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Skill Scanner数据流污点分析揭秘:AST+CFG如何捕获跨文件数据外泄攻击链

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),仅供参考
返回列表