当前位置:首页 > 报告详情

CodeQL Java Optimisation:Make CodeQL Data Flow Analysis support java features such as java reflection, threading, etc (1).pdf

上传人: 张** 编号:174268 2024-09-01 41页 8.64MB

1、演讲人:m0d9时间:2024.08.24关于我ID:m0d9From:腾讯云云鼎实验室CodeQL 概述与Java 分析难点解决CodeQL Java 代码分析难点CodeQL 数据流分析解析历史漏洞回溯PART ONE01CodeQL 概述CodeQL 历史2019201820?2006Semmle 成立微软收购GithubGithub 收购Semmle默认SAST 工具LGTM2022LGTM下线程序分析PTA(soot/Tai-e)Datalog(Souffl/Doop)CodeQL 概述Demoimport java.lang.Runnable;public class Runnab

2、leDemo implements Runnable private String threadName;RunnableDemo(String name)threadName=name;public void run()System.out.println(threadName);public static void main(String args)throws Exception String tt=args0;RunnableDemo T1=new RunnableDemo(tt);Thread t=new Thread(T1);t.start();class MyTaintTrack

3、ingConfig extends TaintTracking:Configuration MyTaintTrackingConfig()this=MyTaintTrackingConfig override predicate isSource(DataFlow:Node source)exists(Method m|m.hasName(main)and m.getAParameter()=source.asParameter()override predicate isSink(DataFlow:Node sink)exists(MethodAccess ma|ma.getCallee()

4、.getDeclaringType().hasQualifiedName(java.io,PrintStream)and sink.asExpr()=ma.getAnArgument()from MyTaintTrackingConfig cfg,DataFlow:PathNode source,DataFlow:PathNode sinkwhere cfg.hasFlowPath(source,sink)select sink.getNode(),source,sink,Partial flow from unsanitized user data+Source CodeQL=ResultC

5、odeQL 概述架构-DB 类似DataLog 的facts,有自己的格式-QL 编译形成dil,dil 类似DataLog的DLCodeQL 概述Databasesource code.trap.reldbschemaCodeQL 概述QL.dilDatalog intermediate representation.ql.raRelational algebra intermediate representationJava 程序分析难点Java 程序分析难点Runnableimport java.lang.Runnable;public class RunnableDemo implem

6、ents Runnable private String threadName;RunnableDemo(String name)threadName=name;public void run()System.out.println(threadName);public static void main(String args)throws Exception String tt=args0;RunnableDemo T1=new RunnableDemo(tt);Thread t=new Thread(T1);t.start();-java.lang.Runnable-java.lang.T

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了如何使用CodeQL对Java程序进行数据流分析和优化。首先,作者提出了运行时优化Runnable接口的方法,包括修改源代码、数据库陷阱文件以及数据流分析(DFA)等。其次,作者详细阐述了如何通过数据流分析来优化多线程程序,例如ActiveMQ和RocketMQ中的一些历史漏洞回溯。最后,作者提出了一种新的优化方法,即在DataFlowImpl中加入一个DataFlow::Configuration实现类,以支持更多的数据流步骤。此外,作者还讨论了如何应对Java反射调用和一些内部类调用外部类方法的问题。
"Java多线程如何安全使用?" "如何防范RocketMQ类漏洞?" "如何通过CodeQL优化Java程序?"
客服
商务合作
小程序
服务号
折叠