SuperAPI AI 工具集

detecting-eval-exec-usage

编程与开发

查看项目

更新于 10-15 23:25

技能介绍

用途:扫描本地源码树,发现动态代码执行 API(CWE-95 Eval Injection),即把字符串当代码在运行时解释的调用;若字符串含用户可控内容,等同于任意代码执行。

主要能力:覆盖 Python 的 eval/exec/compile/import,JavaScript 的 eval、new Function、setTimeout/setInterval 传字符串,Ruby 的 eval/instance_eval/class_eval,PHP 的 eval/assert/create_function,Java 的 ScriptEngineManager + eval,C# 的 Activator.CreateInstance(Type.GetType(str))。按阈值分级:非字面量参数的 Python eval/exec、任意 JS eval、非字面量 new Function、Ruby 动态求值、PHP eval、PHP assert 字符串形式与 create_function 为 CRITICAL;compile、import、setTimeout 字符串、Java 脚本求值、C# 字符串类型加载为 HIGH。均关联 CWE-95。

使用方式:需 Python 3.9+ 与本地源码树。运行 python3 ${CLAUDE_PLUGIN_ROOT}/skills/detecting-eval-exec-usage/scripts/scan_eval.py /path/to/repo,可用 --output FILE、--format json|jsonl|markdown、--min-severity、--include-tests、--languages LIST。退出码为 0/1/2。可接入 pre-commit 与 CI(示例命令见资料)。修复建议见 references/PLAYBOOK.md,首选用显式逻辑(查表、switch)或沙箱表达式库(Python simpleeval、JavaScript expr-eval、Ruby Dentaku)。

适用场景:安全审计、代码评审、CI 门禁。限制:可能出现误报,如 eval("'literal'") 常量字符串,需读源码行核验;动态求值仅适合规则引擎、公式求值器(电子表格公式)、显式沙箱插件系统等少数例外。其余细节暂未提供。