北京航空航天大学;北京航空航天大学杭州创新研究院高祥获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网获悉北京航空航天大学;北京航空航天大学杭州创新研究院申请的专利一种基于代码并发属性图的并发漏洞检测方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN119848868B 。
龙图腾网通过国家知识产权局官网在2025-11-18发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202411910943.8,技术领域涉及:G06F21/57;该发明授权一种基于代码并发属性图的并发漏洞检测方法是由高祥;孙海龙;马云龙;郭彧设计研发完成,并于2024-12-24向国家知识产权局提交的专利申请。
本一种基于代码并发属性图的并发漏洞检测方法在说明书摘要公布了:本发明提供一种基于代码并发属性图的并发漏洞检测方法,采用漏洞检测工具CONCODEQL;S1、根据源代码初始化代码属性图和识别关键节点;S2、遍历初始图构建并发关系;S3、根据设计的领域特定语言检测并发违规。本发明通过引入CCPG,能够全面表达并发程序源代码中的各种关系和特征,克服了现有基于结构化表示的静态代码检测方法难以识别复杂并发漏洞的不足。基于CCPG的领域特定语言,支持针对不同类型并发漏洞的检测,提升了工具的扩展性。通过结合CCPG的能力,有效降低传统数据竞争检测方法的误报和漏报率,增强了对复杂并发问题的检测能力。
本发明授权一种基于代码并发属性图的并发漏洞检测方法在权利要求书中公布了:1.一种基于代码并发属性图的并发漏洞检测方法,其特征在于,采用漏洞检测工具CONCODEQL;包括以下过程: S1、根据源代码初始化代码属性图和识别关键节点;基于待测的源代码,在传统的代码属性图CPG和价值流图VFG的基础上,初始化代码并发属性图CCPG,并识别出图中并发程序中的关键节点; S2、遍历初始图构建并发关系;遍历初始化后的图,构建上下文信息,基于上下文依次进行流敏感的hapeens-before分析、过程间锁集分析、增强的并发指针分析,构建出图中节点的并发关系; 执行线程感知和流敏感分析; 执行线程感知: 首先将线程感知上下文Thread-awarecontext定义为:对于一个给定节点,每条从主入口到该节点的包括所有祖先线程和当前线程的路径;因此沿着特定路径的线程感知上下文表示为c=[n1,n2,...,nm],其中每个元素表示一个并发行为节点,一个节点ni所有的线程感知上下文表示为一个二维矩阵k表示从主入口到当前节点可能执行的路径数量; 接着进行流敏感的happens-before分析,即基于线程感知上下文构建happens-before边,分析的主要目的是推断两个节点ni和nj之间的执行顺序;对于给定的节点ni,首先为它的每个线程感知上下文构造一个fork集fork集定义为即仅由当前上下文中对应线程尚未JOIN的FORK节点构成;为了分析ni和nj的happens-before关系,CONCODEQL检查它们的fork集是否存在相互重叠,可重叠的fork集意味着这两个节点ni和nj能够并行发生;用下面的公式来判断ni和nj的hp关系: 然后进行过程间锁集分析,仅分析happens-before关系不足以确定两个节点是否能够并发执行,因为节点能够被锁保护;给定两个节点ni和nj,锁集分析的主要目的是推断ni和nj是否受到同一锁的保护;给定一个节点ni,CONCODEQL首先为它的每个线程感知上下文构建锁集定义锁集为表示仅由当前上下文中对应锁尚未释放的锁获取节点组成;然后,CONCODEQL通过检查锁集是否相互重叠来确定ni和nj是否受到同一锁的保护;用下面的公式来判断ni和nj的psl关系: 之后进行并发增强的按需指针分析: 1全局变量:通过分析CCPG和价值流图,设计了对全局变量的精确分析;首先,通过遍历CCPG来识别所有的全局变量声明,从而得到全局变量集合;然后在VFG中重建全局变量与局部变量之间的连接,并通过流敏感指针分析确定全局变量别名; 2结构体:对于结构体s的访问节点,使用正则表达式的判断通过CPG简单获得该节点访问的具体属性,CONCODEQL同时分析CCPG和VFG,并在指针分析中将结构体表示调整到具体的属性; 线程感知的流敏感分析: 首先需要遍历初始CCPG,并为每个节点构建线程感知的上下文; CONCODEQL首先从CCPG获取所有主入口节点,并将它们的上下文初始化为空;在主循环中,如果访问了具有当前上下文的当前节点,CONCODEQL将直接终止循环;否则,CONCODEQL将沿着线程生命周期边和控制流边遍历CCPG,如果当前节点n是创建新线程的FORK节点,则新线程的入口节点n'的上下文将被初始化为之前添加到节点n的每一个上下文,并创建一个新线程tnew;如果当前节点n不是FORK节点,则它只是沿着控制流边遍历,并将当前节点的上下文传播给后续节点;之后将为每个节点构造出的上下文用于后续的happens-before关系和锁集分析; 然后基于每个节点的上下文,CONCODEQL遍历任何一对线程并检查它们的内存访问节点是否可以并行发生;具体来说,如果两个节点n和n同时满足:1访问相同的内存位置;2可能是并行发生的;3不受相同锁的保护,CONCODEQL将在节点对ni,nj之间添加一个HP边;最后,该算法生成了一个更新后的图CCPG; S3、根据设计的领域特定语言检测并发违规;针对不同类型的并发漏洞设计了领域特定语言查询API,在图中进行查询来进行并发违规检测,最终将检测到的并发漏洞打印成报告。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人北京航空航天大学;北京航空航天大学杭州创新研究院,其通讯地址为:100191 北京市海淀区学院路37号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
以上内容由龙图腾AI智能生成。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

皖公网安备 34010402703815号
请提出您的宝贵建议,有机会获取IP积分或其他奖励