图数据库和图计算介绍痛点和机会基于图数据库的代码分析详细介绍show me the code分析命令执行漏洞优点直观展示漏洞的利用路径通用开源的搭建能力兼容现有的技术方案展望未来参考资料
图数据库和图计算介绍
图作为一种表示和分析大数据的有效方法,已成为社交网络、推荐系统、网络安全、文本检索和生物医疗等领域至关重要的数据分析和挖掘工具。
图数据库(Graph Database)是一种支持属性图模型,用于处理高度连接数据查询与存储的实时可靠的数据库。传统关系型数据库对于超过3度的查询十分低效难以胜任,但图数据库可轻松应对社交网络的各种复杂存储和查询场景。
图计算系统面向的场景主要是全图分析类的任务。图数据库是类似于关系型数据的用意重点以事务为核心,一个查询往往只是涉及到图中的少量数据;而图计算是解决大规模图数据处理的方法。往往如字节跳动、百度、阿里这样的大公司在数据量逐步庞大的的情况下会将图算法跑在分布式的计算系统上。
痛点和机会
所谓”一图胜千言“,通过图模型可以清晰表达代码的调用逻辑。软件开发中和周围的许多可视化都是图可视化,从类图和其他(UML)图到项目之间和项目内部的依赖关系跟踪到体系结构分析。目前鲜有从代码还原为架构视图的工具,本文提供的技术为此提供了可能性。
计算驱动效率,目前的软件静态分析工具性能瓶颈严重。sonar工具动辄数亿行的数据库内容极大影响查询效率,各项SAST工具都不支持分布式扫描,又受限于机器引擎性能和license难以扩展。静态分析工具如fortify、cobra、findbugs仅支持全量仓库扫描,不能快速实施增量文件扫描。图数据库平台支持可以仅在代码仓库保存图模型基于”关系”的变化,不保留实际的代码文件,读多写少海量存储,拥有无限的扩展性和安全性。
没有比“图”更适合安全运营的工具。目前的安全报告、漏洞报告是基于专业安全人员编制,不客气地说对于非安全人士可读性较差。图分析结果可以直观表示函数调用流程,极大地提升软件修复和沟通效率,降低漏洞对外暴露周期。
图数据贴合分析第三方软件引入的流程。图模型具有强大的表现力对于快速更新的事物有很强的适应性,目前已经在工业领域用来管理快速变化的库存、供应链关系,使用优化的模型完全可以实现对每次研发迭代中的组件漏洞管理.
使用新技术是软件安全行业大势所趋。各种污点分析工作都在重复做request调用service再调用dao类的检测,说白了就是干了本来图数据最擅长的查询几度关系,相比数据流分析图计算后者不需要考虑IO和内存问题导致的性能爆炸。使用各种高科技包括深度学习,机器学习、大数据、人工智能为行业带来新血液。
现在很多科技巨头都在大力发展软件安全,但是依然很难简洁快速方便发现漏洞,出现问题就要解决问题,本文提出来一个新的思路。
基于图数据库的代码分析
根据代码调用过程生成调用关系将代码保存为抽象语法树
对语法树进行数据流打标
使用图数据库进行进一步的解析,从中提炼出带有标记的有向图结构作为软件代码结构模型。
使用图分析进行查找软件漏洞
软件数据对应图模型
详细介绍
图结构是节点和边的集合,每个节点代表一个实体,每条边代表实体之间存在的关联关系,一般是三元组<起始节点,关系类型,终止节点>,节点和边都可以有属性,每个属性是kev-value对,可以对实体或者关系进行描述。