目录
一、核心定位
二、核心技术原理(Winnowing 指纹片段匹配)
三、配套组件与架构
四、核心能力
五、和传统 SCA 工具的关键区别
六、适用场景
七、简单使用流程
scanoss-engine是SCANOSS开源 SCA(软件成分分析)平台核心扫描引擎,GitHub 开源(https://github.com/scanoss/engine),是全球第一款完全开源、无闭源算法的代码指纹扫描内核SCANOSS。
一、核心定位
作用:扫描项目源代码,识别代码中复用的开源组件、版权、许可证、漏洞,输出 SBOM(软件物料清单);区别于仅读取依赖配置文件(package.json/pom.xml)的传统 SCA 工具。
二、核心技术原理(Winnowing 指纹片段匹配)
- 生成代码指纹 WFP使用Winnowing 窗口哈希算法,对每行代码片段生成 CRC32 指纹(WFP 文件),只上传指纹、不上传完整源码,数据隐私安全啊靓啊笔记。
- 片段级匹配(Snippet Matching)不只是整文件比对,支持局部代码片段匹配:
- 改文件名、修改变量名、删减注释、复制粘贴部分函数,依然能识别出原始开源代码;
- 能检出未声明依赖(代码里抄了开源代码,但没写进依赖配置),传统 SCA 工具检测不到这类风险SCANOSS。
- 三层匹配结果
- Full:整个文件完全匹配开源库文件;
- Snippet:仅部分代码片段匹配;
- None:无开源代码匹配docs.scano...。
三、配套组件与架构
- scanoss-engine(内核):指纹比对、知识库检索、组件识别核心逻辑;
- LDB 数据库:引擎配套轻量链表数据库,存储亿级开源代码指纹库 OSSKB(100 亿 + 开源文件、3 万亿行代码指纹),查询微秒级速度8bea75cf-e...;
- scanoss-py:Python CLI 命令行工具,封装引擎,提供扫描、导出 SBOM、CI 集成能力;
- SBOM Workbench:可视化 GUI,用于审计扫描结果、许可证合规检查。
四、核心能力
- 识别声明 + 未声明开源组件同时解析依赖清单 + 源码片段,解决人工复制开源代码带来的合规盲区,还支持识别 AI 生成代码里混入的开源片段SCANOSS。
- 自动生成标准 SBOM输出SPDX / CycloneDX标准物料清单,记录组件版本、许可证、版权声明、漏洞信息,满足等保、供应链合规审计。
- 许可证合规风险检测自动识别 GPL、MIT、Apache 等开源协议,检测协议冲突、强传染协议风险。
- 全流程 DevSecOps 集成支持 Git pre-commit 钩子、GitHub Actions、Jenkins 流水线,代码提交阶段实时扫描,实现 “左移安全”。
五、和传统 SCA 工具的关键区别
| 维度 | scanoss-engine | 传统仅依赖清单扫描工具 |
|---|---|---|
| 识别方式 | 源码片段指纹匹配 | 只读取 pom/package.json 等配置 |
| 未声明代码 | 可检出复制粘贴的开源片段 | 完全无法识别 |
| 代码修改容忍度 | 改名、删注释、片段复用都能识别 | 文件轻微修改即匹配失败 |
| 算法透明度 | 引擎 100% 开源可审计 | 闭源私有算法,无法验证准确性 |
六、适用场景
- 研发供应链安全审计,排查开源许可证侵权风险;
- CI/CD 流水线内置代码扫描,上线前自动合规校验;
- 审计 AI 生成代码,防止 Copilot 等工具自动插入未授权开源代码;
- 企业内部代码资产盘点,生成合规 SBOM 交付客户 / 审计机构。
七、简单使用流程
- 引擎读取项目源码,生成 WFP 指纹文件;
- 指纹与 OSSKB 开源指纹库比对;
- 输出匹配组件、许可证、漏洞;
- 导出 SPDX/CycloneDX SBOM 用于合规审计。