SuperAPI AI 工具集

security-audit

安全与审计

查看项目

更新于 10-16 05:38

技能介绍

用途

该技能是一个面向 Rust 与 WebAssembly 应用的安全审计助手,用于识别漏洞、审查 unsafe 代码、验证输入处理,并确保应用遵循安全最佳实践。其核心原则包括:纵深防御(多层安全控制)、最小权限(每个组件使用最小权限)、安全默认值(开箱即用的安全配置)、故障安全(错误不应产生漏洞)。

主要能力

技能覆盖以下职责范围:

  • 漏洞评估:识别常见漏洞模式,审查认证与授权,检查注入类漏洞,验证密码学用法。
  • unsafe 代码审查:审计所有 unsafe 块,验证安全不变量,检查 FFI 边界,审查内存管理。
  • 输入验证:检查所有输入边界,验证文件路径,清理用户数据,校验大小限制。
  • 安全配置:审查默认设置,检查密钥管理,审计日志实践,验证 TLS 配置。

安全检查清单

技能提供分门别类的检查清单:

  • 认证与授权:密码使用 Argon2id 或 bcrypt 哈希;会话令牌具备密码学随机性;实现令牌过期;所有端点进行授权检查;不存在通过直接对象引用绕过授权。
  • 输入验证:所有用户输入均被验证;文件路径被规范化并验证;所有输入有大小限制;校验内容类型;不存在命令注入途径。
  • 密码学:使用经过审计的密码学库(ring、rustcrypto);不使用自定义密码学实现;使用安全随机数生成(getrandom);密钥得到妥善管理;TLS 1.2+ 与强密码套件。
  • 数据保护:敏感数据静态加密;保护 PII;密钥不被记录到日志;必要时安全删除;执行数据分类。
  • 错误处理:错误消息中不含敏感数据;错误不暴露系统内部信息;失败操作不留下部分状态;认证失败有速率限制。

Rust 特定安全要点

  • unsafe 代码审计:每个 unsafe 块都需要说明理由(SAFETY 注释),需检查释放后使用、双重释放、缓冲区溢出、数据竞争、无效指针运算、未初始化内存访问等问题。
  • FFI 安全:验证所有 FFI 输入,包括空指针检查、长度校验,再安全地创建切片。
  • 整数溢出:对不可信输入使用 checked 算术(如 checked_mul),在有意为之的情况下显式使用 wrapping。

常见漏洞示例

技能给出易受攻击与安全写法的对比:

  • 路径遍历:易受攻击版本直接拼接用户路径;安全版本使用 canonicalize 并确认路径仍位于基准目录之下。
  • SQL 注入:易受攻击版本用字符串格式化拼接查询;安全版本使用参数化查询。
  • 拒绝服务:易受攻击版本进行无界分配;安全版本设置 MAX_ITEMS 上限并在超限时返回错误。

使用方式

技能列出可配合使用的安全工具命令:

# Audit dependencies for known vulnerabilities
cargo audit

# Check for unsafe code
cargo geiger

# Static analysis
cargo clippy -- -W clippy::pedantic

# Fuzzing
cargo fuzz run target_name

报告格式

技能规定统一的安全发现报告格式,包含:严重级别(Critical | High | Medium | Low | Informational)、类别(如适用则标注 CWE 类别)、位置(file.rs:line),以及描述、影响、概念验证、修复建议、参考链接等部分。

约束与成功指标

约束包括:修复中绝不引入新漏洞;无正当理由不得禁用安全控制;报告所有发现,即使不确定;从攻击者视角考虑问题;用测试验证修复。成功指标包括:在生产前识别漏洞、提供清晰的修复指导、不制造虚假安全感、安全改进得到验证。

适用场景与限制

该技能适用于 Rust 与 WebAssembly 应用的安全审计工作,包括代码审查、依赖审计、unsafe 代码检查、输入验证与配置审查等。关于其具体安装方式、收费模式、支持的平台或运行环境等事实,资料中暂未提供。