有两套机制会对代码本身进行防护:代码扫描会对每次变更及默认分支运行预设规则,拉取请求安全审核会在任何安全问题导致pull request失败前,先校验Coroid审核识别出的这些问题。
代码扫描
Coroid的规则
这些规则由安全团队制定。它们原本属于Quality Control中的反垃圾代码检查范畴,现迁移至此处,因此每条规则都有明确的归属:
| 规则 | 检测对象 |
|---|---|
security.hardcoded-secret | 代码中写入的凭证。详见泄露的机密信息。 |
security.tls-disabled | TLS证书验证功能被关闭。 |
security.auth-removed | 身份验证或权限校验逻辑、装饰器或中间件被移除或注释掉。 |
security.cors-wildcard-credentials | 允许任意来源与凭证一同传输。 |
security.sql-concat | 通过插值字符串构建SQL语句并传入查询函数。 |
security.eval | 根据输入执行的代码:eval、new Function,未经处理的dangerouslySetInnerHTML。 |
security.remote-script-exec | 下载的脚本直接通过管道传入Shell或解释器执行。 |
security.policy-changed | 扫描器配置变更。详见防护与强制执行规则。 |
deps.nonexistent | 注册表中不存在的新依赖项。 |
deps.known-malicious | 带有恶意包预警提示的新依赖项。 |
deps.suspicious-new | 发布时间不足30天、下载量极少、名称与热门包仅相差一两个字母,或最近更换维护者的新依赖项。 |
deps.install-script | 安装时会执行脚本的新npm依赖项。 |
依赖项卫生规则、未固定版本问题以及清单文件与锁定文件的偏差问题,仍由Quality Control中的反垃圾代码检查模块负责。详见反垃圾代码检查。
这些规则会在每次变更时运行,与Quality Control的反垃圾代码检查同步进行;每次向默认分支推送代码时也会运行,每天一次,无论是否开启反垃圾代码检查功能。每条规则的执行逻辑由安全团队而非反垃圾代码检查模块决定。安全 → 设置 → 代码扫描页面会列出这些规则。在代码扫描启用强制执行前,每条规则仍沿用其在Quality Control中的原有动作,因此此前设置为阻塞的规则仍会继续阻塞流程。
您自定义的扫描命令
如果您的项目已配备安全扫描工具,可在
下方输入其命令您自定义的扫描命令,该命令会在代码扫描模块中作为项目的security_scan检查项在每次变更时运行。留空即可关闭该功能。
SonarQube、Snyk或Semgrep等外部工具的检测结果也可作为审核依据同步至Coroid。详见审核依据提供方。
拉取请求安全审核
Coroid审核会在Quality Control中对拉取请求进行审核。若识别出安全问题,它不会以文字形式写入审核结果,而是会以结构化声明的形式记录:漏洞类型、所属文件及行号、严重程度。安全团队会将每条声明标记为尚未确认。
独立校验环节
对于严重和高危级别的声明,Coroid会启动独立校验:运行一个独立的受限模型,读取声明所指的文件及pull request的最新提交内容,自行推导是否存在对应问题。若推导结果一致,该声明即被确认为有效的静态发现项;若判定问题的代码位于其他文件中,校验无法确认其真实性,该声明便仍保持未确认状态。
该校验与其他模型任务一样会消耗贵组织的配额,且每个pull request实例的配额上限固定。一旦配额或使用时长耗尽,校验便无法运行,此时审核结果会显示:“无法验证是否存在安全问题:贵组织的配额或使用时长已耗尽。”
导致审核失败的情况
| 观察 | 强制执行 | |
|---|---|---|
| 达到阈值(默认高危级别)及以上的已确认声明 | 中性,“发现项已确认” | Coroid审核校验失败,“发现项已确认” |
| 未确认的声明 | 永不失败 | 永不失败 |
即使Quality Control中将审核设置为建议模式,已强制执行的严重或高危级别已确认声明仍会导致Coroid审核失败。这是建议模式审核永不失败规则的唯一例外。若审核仅因未确认的安全声明要求修改代码,则属于建议模式审核。
该项目需启用Coroid审核功能才能开展安全审核。若Coroid审核处于关闭状态,安全 → 设置页面中会相应显示该状态。
哪些内容会同步至GitHub
在任何评审文本、评论或检查内容提交至GitHub之前,都会先通过发布审核流程。若代码库为公开状态,或其可见性无法被Coroid确认,对于尚未公开的安全问题,系统会将其替换为“Coroid发现潜在的安全问题;详情请查看Coroid”,并附带相应链接。详见信息披露。