## 有限状态转换器在 Zizmor 中的改进 本文详细介绍了 Zizmor 静态分析工具在 GitHub Actions 中进行的性能优化,具体涉及模板注入漏洞检测。Zizmor 识别 GitHub Actions 表达式脱离预期 shell 引用的潜在漏洞利用。最初,这涉及对表达式分隔符 (`${{ ... }}`) 的噪声检查。为了减少误报,Zizmor 需要理解每个 GitHub Actions 上下文(例如 `github.ref`)的“能力”——安全级别。 解决方案是利用使用 Rust 中的 `fst` crate 构建的有限状态转换器 (FST)。与其使用映射或 trie,FST 从 GitHub 的 OpenAPI 规范派生的 CSV 文件构建,将上下文模式映射到其能力(任意、结构化或固定)。 这种方法带来了显著的好处:表示大小大幅减少(~14.5KB 对 ~240KB),速度和内存效率提高,并且能够在编译时预计算 FST,从而消除了运行时初始化成本。FST 有效处理上下文模式和语法变化,为模板注入分析期间确定上下文安全性提供了一种紧凑且高性能的解决方案。虽然对于当前数据集大小来说可能有些过度,但 FST 释放了未来的优化可能性,例如基于正则表达式的搜索和进一步的压缩技术。