SuperAPI AI 工具集

insecure-design

设计与创作

查看项目

更新于 10-16 02:31

技能介绍

用途:该技能针对 OWASP A06:2025 不安全设计(Insecure Design),帮助在 FastAPI 与 Flask 应用中检测、分析并修复架构级安全缺陷。与实现漏洞不同,不安全设计无法仅靠打补丁解决,需要重新设计流程或补充缺失的控制层。OWASP 2025 排名第 6,覆盖 39 个 CWE,平均发生率 1.86%,关键 CWE 包括 CWE-434、CWE-269、CWE-362、CWE-799、CWE-602。

主要能力与检查项:

  1. 限流(CWE-799):检查登录、注册、密码重置、高价值交易端点是否强制限流。FastAPI 可用 SlowAPI,Flask 可用 Flask-Limiter,示例装饰器如 @limiter.limit("5/minute") 与 @limiter.limit("5 per minute")。红旗包括敏感路由无限流装饰器、RATELIMIT_ENABLED = False、限流过于宽松。
  2. 文件上传(CWE-434):须按内容而非扩展名校验,并存储在 Web 根目录之外。示例使用 python-magic 检测 MIME,限制 MAX_SIZE = 5 * 1024 * 1024,存储到 /var/app/uploads/ 而非 static/ 或 public/。红旗包括仅依赖 content_type 或扩展名、上传目录可 Web 访问、无大小上限、直接 URL 未鉴权访问。
  3. 业务逻辑缺陷:测试负数量、价格篡改、并发购买竞态、重复预订、优惠券复用等。服务端须用 Pydantic 约束如 quantity: int = Field(..., ge=1, le=100),不接受客户端传入价格、折扣或角色字段。
  4. 租户隔离(CWE-269):多租户应用每个查询须按认证租户过滤,如 db.query(Report).filter(Report.tenant_id == current_user.tenant_id).all(),租户 ID 应来自 JWT 或会话而非请求体。
  5. 客户端强制服务端安全(CWE-602):授权检查不能只在前端,角色须从认证令牌派生,如 current_user.role != "admin" 时返回 403。
  6. 凭据与账号恢复设计:避免知识型安全问题,重置链接应在 15–60 分钟内过期,令牌须高熵、单次使用并存储哈希,避免账号枚举。

使用方式:按上述检查清单逐项审查代码与架构,结合 STRIDE 威胁建模(仿冒、篡改、抵赖、信息泄露、拒绝服务、权限提升)在设计阶段发现缺陷。修复优先级矩阵给出严重性与修复复杂度参考,如认证/支付端点无限流为高严重低复杂度,客户端传入价格/角色为严重低复杂度,缺失租户范围为严重中复杂度。

适用场景与限制:适用于 FastAPI 与 Flask 的 Python Web 应用安全评审与加固。资料未提供具体安装命令、收费信息或平台支持范围;参考文件 references/cwe-details.md 与 references/threat-modeling.md 的完整内容暂未提供。相关重叠类别包括 A01 访问控制失效、A07 认证失败、A10 异常条件处理不当。