文档

代码扫描与安全审核

Coroid的代码安全规则、您自定义的扫描命令,以及Coroid审核在拉取请求中识别出的安全问题,都会在阻塞流程前完成校验。

有两套机制会对代码本身进行防护:代码扫描会对每次变更及默认分支运行预设规则,拉取请求安全审核会在任何安全问题导致pull request失败前,先校验Coroid审核识别出的这些问题。

代码扫描

Coroid的规则

这些规则由安全团队制定。它们原本属于Quality Control中的反垃圾代码检查范畴,现迁移至此处,因此每条规则都有明确的归属:

规则检测对象
security.hardcoded-secret代码中写入的凭证。详见泄露的机密信息。
security.tls-disabledTLS证书验证功能被关闭。
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”,并附带相应链接。详见信息披露。