用途
Odoo Security 是一个 Odoo 安全审计技能,用于系统化分析 Odoo 模块代码库,发现访问控制、路由认证、权限提升和 SQL 注入等安全问题,并生成按严重程度分级的报告,指导开发者采用默认安全的实现方式。
主要能力
该技能覆盖四个审计层面:
- 访问规则:检查模型是否缺少 ir.model.access.csv 条目、向导模型是否缺少访问规则、CSV 中 group_id 是否为空、是否缺少多公司规则、权限是否过于宽松、是否引用了未定义的用户组。
- 路由审计:检查 @http.route() 中 auth='none' 是否缺少认证代码、是否缺少 auth 参数、公开路由中是否使用 sudo() 访问敏感模型、用户路由是否禁用 CSRF、auth='public' 是否访问敏感模型、GET/POST 方法是否混用。
- sudo() 查找:检查公开路由中的 sudo()、敏感模型上的 sudo()、循环中的 sudo()、未限定范围的 sudo()。
- SQL 注入扫描:检查 cr.execute() 中的 f-string、.format()、字符串拼接、% 运算符、变量查询,以及 _where_calc 是否缺少 _apply_ir_rules。
技能内置敏感模型列表(如 res.partner、res.users、hr.employee、account.move 等),当这些模型通过 sudo() 或公开路由访问时风险等级会提升。
使用方式
技能触发后按以下流程执行:验证模块(确认 manifest.py 存在)、运行访问检查器、运行路由审计器、运行 sudo 查找器、运行 SQL 扫描器、聚合结果并计算风险分数、按严重程度排序、输出统一报告并附修复代码。
可使用 odoo-security/scripts/ 下的 Python 脚本进行自动扫描:
python odoo-security/scripts/security_auditor.py /path/to/module
python odoo-security/scripts/security_auditor.py /path/to/module --min-severity HIGH --json
也可单独运行各审计器:
python odoo-security/scripts/access_checker.py /path/to/module --json
python odoo-security/scripts/route_auditor.py /path/to/module --json
python odoo-security/scripts/sudo_finder.py /path/to/module --json
python odoo-security/scripts/sql_scanner.py /path/to/module --json
用户可在模块根目录创建 .odoo-security.json 自定义配置,例如添加或移除敏感模型、排除路径、设置默认严重程度、指定自定义安全组。
严重程度与风险评分
严重程度分为 CRITICAL(权重 4)、HIGH(权重 3)、MEDIUM(权重 2)、LOW(权重 1)。风险分数(0-100)为问题数量乘以权重之和:80 以上为 CRITICAL,50-79 为 HIGH,25-49 为 MEDIUM,1-24 为 LOW,0 为 Clean。
适用场景
适用于 Odoo 模块开发者在部署前进行安全自查,或在代码审查阶段系统化排查访问控制、路由认证、权限提升和 SQL 注入问题。
限制
该技能的具体安装方式、收费模式、平台支持范围等事实暂未提供。