- 有任一“生效”的拒绝项:版本退回“需修改”,修好后重新提交(每个版本最多 10 次扫描);校验阶段出现拒绝时不再进入扫描阶段。
- 有任一“生效”的隔离项:进入人工审核。
- “试运行”规则只记录在报告里(标出本会采取的结果),不影响结论;“仅记录”规则只是提示或展示。
- 运营可以把文件哈希加入放行或封禁名单:放行名单上的文件,其发现项降级为只记录(封禁规则与扫描器故障除外);封禁名单上的文件直接拒绝(package.blocked_file)。
开发者平台
审核规则清单
市场审核 worker 的全部规则,由审核引擎代码自动导出。
m3.1 · 100 条规则
结论规则
必须人工审核的情况
预检没有拒绝项时,满足以下任一条即进入人工审核,否则直接通过:
first_version:插件首个版本(还没有任何已审核版本)permission_change:权限与上一个已审核版本不同privileged:高风险类型:engine_module、module、providerprobation:卖家入驻未满考察期(市场默认 90 天,运营可调)quarantine:出现任何生效的隔离项(含扫描器故障)scan_failed:扫描连续 3 次出错
manifest 与版本(metadata)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
metadata.description_missing | 低 | 仅记录 | 生效 | manifest 缺少 zh-CN 描述(只提示) |
metadata.identity_mismatch | 高 | 拒绝 | 生效 | manifest 的 id 或 version 与上传的版本不一致 |
metadata.license_missing | 低 | 仅记录 | 生效 | 插件没有声明 SPDX 许可证(只提示) |
metadata.manifest_invalid | 高 | 拒绝 | 生效 | manifest 不是合法的 marketplace.cdnca.io/v1 Plugin 文档 |
metadata.manifest_packages | 高 | 拒绝 | 试运行(只记录) | manifest 的 spec.packages 没有恰好列出上传的包及摘要 |
metadata.name_missing | 中 | 拒绝 | 生效 | manifest 缺少 zh-CN 名称 |
metadata.no_packages | 高 | 拒绝 | 生效 | external_https 版本没有平台包 |
metadata.platform_invalid | 中 | 拒绝 | 生效 | 平台名格式错误或重复 |
metadata.publisher_missing | 中 | 拒绝 | 生效 | manifest 缺少发布者 id 或名称 |
metadata.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
metadata.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
metadata.version_invalid | 高 | 拒绝 | 生效 | 版本号不是规范 SemVer |
metadata.version_not_monotonic | 高 | 拒绝 | 生效 | 已有同号或更高的已审核版本 |
入口与数据包(entrypoint)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
entrypoint.content_mismatch | 严重 | 拒绝 | 生效 | 上传的数据包文件与签名的 spec.entrypoint.sha256 不一致 |
entrypoint.data_pack_permissions | 高 | 拒绝 | 生效 | rule_pack 必须只声明 security.rule_packs.provide,theme 必须只声明 platform.themes.provide |
entrypoint.data_pack_version | 高 | 拒绝 | 生效 | 数据包版本必须是纯 major.minor.patch(无预发布后缀) |
entrypoint.packages_present | 高 | 拒绝 | 生效 | rule_pack / theme 版本带了可执行包 |
entrypoint.provides_invalid | 高 | 拒绝 | 生效 | spec.provides 格式错误、重复,或由数据包 / ui_page 声明 |
entrypoint.provides_official_only | 严重 | 拒绝 | 生效 | 该服务商类型只限官方发布(第三方 CDN 适配器不开放) |
entrypoint.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
entrypoint.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
entrypoint.type_invalid | 高 | 拒绝 | 生效 | spec.entrypoint.type 不是 external_https、rule_pack、theme、ui_page 之一,或与插件类型不符 |
权限(permissions)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
permissions.expanded | 中 | 仅记录 | 生效 | 权限比上一个已审核版本多:需人工审核 |
permissions.first_version | 信息 | 仅记录 | 生效 | 插件首个版本:需人工审核 |
permissions.invalid_name | 高 | 拒绝 | 生效 | 权限名格式错误、重复,或超过 64 个 |
permissions.manifest_mismatch | 高 | 拒绝 | 生效 | 保存的权限与 manifest 不一致 |
permissions.privileged | 信息 | 仅记录 | 生效 | 高风险类型(module、engine_module、provider):需人工审核 |
permissions.reduced | 信息 | 仅记录 | 生效 | 权限比上一个已审核版本少:需人工审核 |
permissions.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
permissions.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
规则包(rulepack)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
rulepack.budget_exceeded | 高 | 拒绝 | 生效 | 规则包超出规则数、正则数或每请求代价预算 |
rulepack.compile_failed | 高 | 拒绝 | 生效 | 规则包编译失败(cdnca.rule-pack/v1) |
rulepack.gate_failed | 高 | 拒绝 | 生效 | 未通过发布质量门:单独解析失败,或 modsecurity 包算不出 CRS 规则号 |
rulepack.layer_invalid | 高 | 拒绝 | 生效 | 市场规则包必须是发布者命名空间下的开发者层包(dev/<发布者>/<名称>) |
rulepack.not_canonical | 中 | 拒绝 | 生效 | 规则包文件不是编译器输出的规范字节 |
rulepack.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
rulepack.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
rulepack.summary | 信息 | 仅记录 | 生效 | 规则包内容摘要(只展示) |
rulepack.version_mismatch | 高 | 拒绝 | 生效 | 规则包版本与插件版本不同 |
主题(theme)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
theme.admin_scope | 严重 | 拒绝 | 生效 | 第三方主题声明了管理员控制台(applies_to 含 admin、admin 令牌或 admin 选择器),只有官方发布者 io.cdnca 可以 |
theme.console_invalid | 高 | 拒绝 | 生效 | 官网主题包里的 console_theme 不是合法的 cdnca.theme/v1 主题包 |
theme.id_mismatch | 高 | 拒绝 | 生效 | 市场主题的 id 必须是 market.<插件 ID> |
theme.invalid | 高 | 拒绝 | 生效 | 不是合法的 cdnca.theme/v1 主题包(令牌、槽位、模板、外部引用) |
theme.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
theme.site_invalid | 高 | 拒绝 | 生效 | 不是合法的 cdnca.site-theme/v1 或 v2 官网主题包(页面包路径与禁用内容、登录样式、内容 schema、applies_to) |
theme.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
theme.summary | 信息 | 仅记录 | 生效 | 主题渲染结果摘要(只展示) |
theme.version_mismatch | 高 | 拒绝 | 生效 | 主题版本与插件版本不同 |
带页面的插件(ui_page)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
ui_page.artifacts_present | 高 | 拒绝 | 生效 | ui_page 版本不能带包或数据文件(页面在你的 origin 上) |
ui_page.declaration_invalid | 高 | 拒绝 | 生效 | ui_page 声明不合法(origin、页面、挂载点、菜单父级、标题、显示门槛) |
ui_page.origin_unverified | 严重 | 拒绝 | 生效 | 页面 origin 或 api_base_url 不是你在市场验证过的来源 |
ui_page.permission_missing | 高 | 拒绝 | 生效 | ui_page 插件必须声明 platform.ui_pages.provide |
ui_page.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
ui_page.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
ui_page.summary | 信息 | 仅记录 | 生效 | 页面挂载位置摘要(只展示) |
平台包(package)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
package.blocked_file | 严重 | 拒绝 | 生效 | 文件哈希在平台封禁名单上 |
package.corrupt | 高 | 拒绝 | 生效 | 压缩包损坏 |
package.digest_mismatch | 严重 | 拒绝 | 生效 | 存储的包与声明的 SHA-256 或大小不符 |
package.duplicate_entry | 高 | 拒绝 | 生效 | 包含重名条目 |
package.limits_exceeded | 高 | 拒绝 | 生效 | 超出条目数或解压大小上限 |
package.path_traversal | 严重 | 拒绝 | 生效 | 条目路径逃出包根目录 |
package.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
package.setuid | 高 | 隔离(转人工) | 生效 | 条目带 setuid 或 setgid 位 |
package.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
package.special_file | 高 | 拒绝 | 生效 | 包含设备、管道或套接字文件 |
package.symlink | 高 | 拒绝 | 生效 | 包含符号链接或硬链接 |
package.unknown_format | 高 | 拒绝 | 生效 | 包不是 zip、tar.gz 或 tar |
package.unsupported_entry | 中 | 拒绝 | 生效 | 不支持的归档条目类型 |
package.zip_bomb | 严重 | 拒绝 | 生效 | 解压后远超压缩大小(zip 炸弹) |
密钥泄露(secrets)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
secrets.alibaba_access_key | 高 | 拒绝 | 生效 | 阿里云 AccessKey ID |
secrets.aws_access_key | 严重 | 拒绝 | 生效 | AWS Access Key ID |
secrets.gcp_api_key | 高 | 拒绝 | 生效 | Google API Key |
secrets.generic_api_key | 中 | 隔离(转人工) | 试运行(只记录) | 通用凭据赋值(api_key、secret、token、password 等) |
secrets.github_fine_grained_pat | 严重 | 拒绝 | 生效 | GitHub 细粒度令牌 |
secrets.github_token | 严重 | 拒绝 | 生效 | GitHub 令牌 |
secrets.gitlab_pat | 严重 | 拒绝 | 生效 | GitLab 个人访问令牌 |
secrets.jwt | 中 | 隔离(转人工) | 试运行(只记录) | JSON Web Token |
secrets.private_key | 严重 | 拒绝 | 生效 | 包里嵌有私钥 |
secrets.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
secrets.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
secrets.slack_token | 高 | 拒绝 | 生效 | Slack 令牌 |
secrets.slack_webhook | 高 | 拒绝 | 生效 | Slack Webhook 地址 |
secrets.stripe_secret_key | 高 | 拒绝 | 生效 | Stripe 密钥 |
secrets.tencent_secret_id | 高 | 拒绝 | 生效 | 腾讯云 SecretId |
依赖(dependencies)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
dependencies.inventory | 信息 | 仅记录 | 生效 | 识别到的第三方组件清单(只展示) |
dependencies.malicious | 严重 | 拒绝 | 生效 | 依赖是已知恶意包 |
dependencies.not_configured | 信息 | 仅记录 | 生效 | 平台未配置 OSV 离线库,依赖扫描跳过(只提示) |
dependencies.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
dependencies.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
dependencies.vulnerable | 低 | 仅记录 | 生效 | 依赖有已知漏洞(只提示) |
dependencies.vulnerable_high | 高 | 隔离(转人工) | 试运行(只记录) | 依赖有高危或严重漏洞 |
病毒扫描(malware)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
malware.detected | 严重 | 拒绝 | 生效 | clamd 检出恶意代码 |
malware.not_configured | 信息 | 仅记录 | 生效 | 平台未配置 clamd,病毒扫描跳过(只提示) |
malware.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
malware.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
版本差异(diff)
| 规则 ID | 级别 | 结果 | 状态 | 说明 |
|---|---|---|---|---|
diff.binary_changed | 低 | 仅记录 | 生效 | 新增或修改了可执行文件(只提示) |
diff.first_version | 信息 | 仅记录 | 生效 | 没有可比较的已审核版本(只展示) |
diff.scanner_error | 中 | 隔离(转人工) | 生效 | 该项检查本身出错(扫描器故障),版本转人工审核 |
diff.skipped | 信息 | 仅记录 | 生效 | 前置检查未完成,本项没有运行 |
diff.summary | 信息 | 仅记录 | 生效 | 与上一个已审核版本的变化(只展示) |