用途:基于 OpenAPI/Swagger 规范对 REST API 做自动化安全测试,尤其擅长发现只有通过特定调用序列才能触发的缺陷(有状态测试),如 500 内部错误、输入校验问题,并可用于 CI/CD 中的安全回归测试。
主要能力:RESTler 将 API 规范编译为模糊测试语法,推断生产者-消费者依赖(如创建资源返回的 ID 供后续调用使用),支持自定义字典注入畸形、边界与注入载荷;内置检查器包括 UseAfterFree、NamespaceRule、ResourceHierarchy、LeakageRule、InvalidDynamicObject、PayloadBody;按 bug bucket 归类结果,并周期性垃圾回收清理测试中创建的资源。
使用方式:需 Python 3.12+ 与 .NET 8.0 运行时,从 https://github.com/microsoft/restler-fuzzer 获取。构建命令:python3 ./build-restler.py --dest_dir /opt/restler。编译规范:/opt/restler/restler/Restler compile --api_spec /path/to/openapi.yaml。随后依次运行 test(冒烟验证端点可达)、fuzz-lean(单轮快速扫描)、fuzz(长时间完整模糊测试),通过 --grammar_file、--dictionary_file、--settings、--target_ip、--target_port、--time_budget 等参数控制;认证可在 engine_settings.json 中配置 token_refresh_cmd 调用自定义脚本刷新令牌。
适用场景:微服务 API 发布前的安全测试、多租户隔离与权限校验验证、错误响应信息泄露排查、API 变更后的持续回归。
限制:RESTler 会大量创建和删除资源,每小时可达数千个,禁止在未获明确授权和监控的生产环境使用,应部署在隔离的测试/ staging 环境;需提前准备书面授权、目标 API 规范与认证凭据;未正确配置认证会导致仅测试未认证访问;编译警告可能表示部分端点因依赖问题无法覆盖。其他工具如 Schemathesis、Dredd、Fuzz-lightyear、OWASP API Fuzzer 可作补充,具体对比资料暂未提供。