当前位置: 首页 > news >正文

CPG开源项目对比

https://github.com/ShiftLeftSecurity/codepropertygraph 和 https://github.com/Fraunhofer-AISEC/cpg 对比

1 核心目标

项目主要目标
ShiftLeft提供CPG的规范定义和基础工具链,强调跨语言通用性,作为Joern等分析工具的后端。
Fraunhofer提供多语言CPG生成库,支持实际代码解析(C/C++、Java等),并集成分析扩展(如数据流、控制流)。

2 功能对比

特性ShiftLeftFraunhofer
规范定义✅ 提供详细的CPG协议缓冲区(Proto)规范。❌ 无独立规范,但提供内部节点/边结构的文档。
语言支持语言无关(依赖前端如Joern生成CPG)。✅ 直接支持C/C++、Java、Go、Python等。
工具链集成生成CPG供其他工具(如Joern)使用。✅ 内置Neo4j导出、命令行工具和API。
动态扩展性通过扩展Schema支持自定义分析。✅ 通过Passes机制动态扩展分析逻辑。
错误容忍解析❌ 不直接处理源码解析。✅ 使用容错解析器(如Eclipse CDT)。
量子计算支持❌ 无✅ 实验性支持OpenQASM和Qiskit(量子编程)。

3 技术实现

技术栈ShiftLeftFraunhofer
语言Scala(主)Java/Kotlin(主)+ Python/NodeJS(部分前端)
依赖管理sbtGradle
数据库支持Tinkergraph(默认)Neo4j、Apache Tinkergraph
协议缓冲区✅ 核心依赖Proto生成跨语言绑定。❌ 未使用Proto,直接操作Java对象模型。

4 适用场景

ShiftLeft更适合:

  • 需要标准化CPG格式的研究或工具开发。

  • 作为其他静态分析工具(如Joern)的底层依赖。

  • 关注CPG的理论规范而非具体语言实现。

Fraunhofer更适合:

  • 需要直接分析多种语言源码的场景。

  • 快速集成到Java/Kotlin项目(如安全分析工具)。

  • 需要灵活扩展分析逻辑(如自定义数据流规则)。

5 社区与生态

指标ShiftLeftFraunhofer
维护状态活跃(但侧重规范而非前端)。活跃,持续扩展语言和分析功能。
扩展性依赖外部工具链(如Joern)。内置模块化设计(如cpg-language-go)。
文档规范文档详细,但实际使用需结合Joern。提供CLI教程、API文档和论文支持。

6 总结

  • ShiftLeft是CPG的参考实现和规范,适合底层工具开发者。

  • Fraunhofer是多语言CPG生成器,适合需要开箱即用分析的场景。

  • 若需统一规范,优先选ShiftLeft;若需实际代码分析,选Fraunhofer。

  • 两者互补性较强:ShiftLeft定义标准,Fraunhofer提供实现。例如,Fraunhofer的CPG可转换为ShiftLeft的Proto格式以实现工具互操作。

http://www.xdnf.cn/news/702865.html

相关文章:

  • 18度的井水
  • C++补充基础小知识:为什么要继承、什么时候继承、什么时候直接用
  • 高并发计数器LongAdder 实现原理与使用场景详解
  • Jmeter性能测试(应用场景、性能测试流程、搭建测试环境)
  • 实例与选项对象
  • SpringBoot+Vue+Echarts实现可视化图表的渲染
  • 自动生成程序的heap文件
  • #!/usr/bin/env python
  • JS中的属性描述符
  • Day 20
  • 生成式引擎在不同行业的应用案例
  • 第十章 Java基础-Static静态变量
  • 基于物理约束的稀疏IMU运动捕捉系统
  • spring和Mybatis的各种查询
  • Rust 学习笔记:使用迭代器改进 minigrep
  • 力扣刷题Day 61:子集(78)
  • 【案例94】笛卡尔积导致报“临时表空间不足”
  • bat 批处理通过拖拽,来获取拖入文件的信息
  • 【25-cv-00656】Whitewood律所代理Olga Drozdova 蝴蝶版权图维权案
  • 【Web应用】若依框架:基础篇07功能详解-定时任务
  • 不同坐标系下的 面积微元
  • Android-Room + WorkManager学习总结
  • 2G Nand Jlink烧录报错Failed to allocated 0x1B000000 bytes of memory!
  • 5G 核心网中 NRF 网元的功能、接口及参数详解
  • 8.7 使用 EAP-AKA 进行订阅转移
  • 星图云交通综合应用解决方案:破解交通基建抢建拖建、工程量大等难题,赋能智慧交通
  • 2025年5月AI科技领域周报(5.19-5.25):大模型多模态突破 具身智能开启机器人新纪元
  • DockThor: 免费的在线小分子“虚拟筛选”平台
  • 即插即用!全新记忆回溯策略:一种元启发式算法的进化更新机制,含完整免费MATLAB代码
  • 数字化时代,健康管理系统如何改变健康管理?