安全审计与渗透测试¶
本文档记录 AutoShip-CLI 的安全审计流程、工具配置与历史结果,供安全团队、审计人员和高级用户参考。
持续安全扫描¶
每次提交和 Nightly Build 都会运行以下安全扫描:
| 工具 | 作用 | 触发时机 |
|---|---|---|
| bandit | Python SAST | CI、nightly |
| pip-audit | 依赖漏洞扫描 | CI、nightly |
| gitleaks | 密钥泄露检测 | CI、nightly |
| ruff | lint + 部分安全规则 | CI、pre-commit |
| Dependabot | 依赖自动更新 | 每周 |
发布前安全审计流程¶
在每次大版本发布前,安全团队应执行以下审计:
1. 代码审计¶
- 审查所有涉及外部输入的代码路径(CLI 参数、配置文件、插件、模型响应)。
- 确认路径操作使用
Path.resolve()并限制在允许范围内。 - 确认子进程调用不使用
shell=True,除非经用户显式授权。 - 检查敏感数据是否通过
autoship.core.redaction或等价逻辑脱敏。
2. 配置与凭证审计¶
- 确认默认配置关闭遥测与外部模型后端。
- 确认 API key、token 等字段支持
${ENV_VAR}注入。 - 验证配置文件默认权限为
0o600。
3. 插件安全审计¶
- 使用
autoship plugin verify <package>检查第三方插件的声明权限与实际行为。 - 对申请
verified等级的插件进行源码审查。 - 确认
sandbox对插件的文件系统访问进行限制。
4. 依赖与供应链审计¶
- 运行
uv run pip-audit --desc并修复所有HIGH级别漏洞。 - 检查
pyproject.toml中依赖是否有未固定版本或已知问题。 - 确认 release.yml 使用 Trusted Publishing 或最小权限 PyPI token。
5. 渗透测试检查清单¶
| 测试项 | 方法 | 预期结果 |
|---|---|---|
| 路径穿越 | 构造 ../../../etc/passwd 类参数 |
被拒绝或解析后仍在允许目录 |
| 命令注入 | 在 commit message / diff 中嵌入反引号与分号 | 不会被 shell 解析执行 |
| SSRF | 配置指向内网地址的模型后端 | 遵循用户配置,但默认不信任 |
| 敏感信息泄露 | 触发异常并检查日志 | 无 API key、密码、token 明文 |
| 插件越权 | 安装声明低权限但尝试高权限操作的插件 | 被权限检查拦截 |
| 拒绝服务 | 1000+ 文件项目 + 超长 diff | 在超时内完成,不崩溃 |
历史审计结果¶
2026-06-19 v1.0.0 内部安全审查¶
- 执行方:AutoShip 安全团队
- 范围:CLI、核心库、内置插件、registry、CI/CD
- 结果:
- bandit:0 个 High/Medium
- pip-audit:0 个未修复漏洞
- 路径穿越与命令注入测试:通过
- 敏感信息泄露测试:通过
- 插件权限测试:通过
- 遗留风险:
- 本地模型后端默认使用 HTTP,需依赖用户环境安全。
- 第三方 community 插件未经过完整源码审计,用户需自行判断。
计划中的外部审计¶
- 目标版本:v1.1.0
- 执行方:第三方安全公司 / 社区红队
- 范围:完整 CLI 攻击面、插件系统、供应链
- 交付物:渗透测试报告、修复建议、公开摘要
如何报告安全问题¶
请遵循 SECURITY.md 中的流程,通过邮件私下报告。