About me:
Program analysis enthusiasts 😄
Research on Java code review (semi-auto and manual) and redteam 🤔
Former ctfer at NeSE 🍵
Currently work on MYbank 🐜
You can reach me with wechat: wh1t3p1g
A CAT called tabby ( Code Analysis Tool )
Home Page: https://www.yuque.com/wh1t3p1g/tp0c1t/lf12lg69ngh47akx
License: Apache License 2.0
使用tabby的时候发现调用链上缺少有注解的方法,还未具体写测试用例深入测试。有没有增加注解方法的支持的计划?
改动哪部分代码比较好我可以自己看看
有些代码如果仅是部分代码不能编译情况下能否使用tabby分析
环境 macm1 jdk1.8.0.311 neo4j是用docker运行的
一直报错说找不到这个文件GRAPHDB_PUBLIC_METHODS.csv
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:28) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_381]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_381]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_381]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_381]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure apoc.periodic.iterate
: Caused by: java.io.IOException: Cannot open file /Users/oc4an/Documents/web/tabby/output/dev/GRAPHDB_PUBLIC_METHODS.csv for reading.; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'; nested exception is org.neo4j.driver.exceptions.ClientException: Failed to invoke procedure apoc.periodic.iterate
: Caused by: java.io.IOException: Cannot open file /Users/oc4an/Documents/web/tabby/output/dev/GRAPHDB_PUBLIC_METHODS.csv for reading.
但是我文件夹里面确实是有这个文件的
我本地的配置文件的tabby.cache.isDockerImportPath值就是flase
师傅能帮忙看看这种报错是什么原因吗?
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar:2.7.7]
at tabby.App.main(App.java:28) [main/:na]
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Unsupported api 589824
at tabby.core.Analyser.runSootAnalysis(Analyser.java:146) ~[main/:na]
at tabby.core.Analyser.run(Analyser.java:91) ~[main/:na]
at tabby.App.lambda$run$0(App.java:46) [main/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) [spring-boot-2.7.7.jar:2.7.7]
... 5 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unsupported api 589824
at org.objectweb.asm.ClassVisitor.(ClassVisitor.java:70) ~[asm-7.1.jar:7.1]
at org.objectweb.asm.ClassVisitor.(ClassVisitor.java:57) ~[asm-7.1.jar:7.1]
at soot.asm.SootClassBuilder.(SootClassBuilder.java:83) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.asm.AsmClassSource.resolve(AsmClassSource.java:67) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:274) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToHierarchy(SootResolver.java:243) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToSignatures(SootResolver.java:313) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToBodies(SootResolver.java:353) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.processResolveWorklist(SootResolver.java:190) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.resolveClass(SootResolver.java:155) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.Scene.tryLoadClass(Scene.java:992) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.Scene.loadBasicClasses(Scene.java:1833) ~[soot-4.4.0-SNAPSHOT.jar:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:116) ~[main/:na]
... 8 common frames omitted
审计过程中多次遇到判断方法或者所在类是否存在某个注解来进行鉴权,需要注解支持。
https://github.com/wh1t3p1g/tabby/wiki/Tabby%E9%A3%9F%E7%94%A8%E6%8C%87%E5%8C%97#update
运行方式命令少写了参数 -jar
应该是java -Xmx6g -jar tabby.jar
在Windows下运行程序进入到【Save methods to Neo4j.】阶段时,程序会错误中断,此时没有有效的语义提示信息,卡住了。
解决办法是修改源代码中file://为file:///,并在此基础上运行程序根据提示信息自适应修改目标csv所在路径就行啦。
师傅我在分析用友NC的过程中,tabby统计大约加载了一万个class文件,然后分析过程中便会出现的报错,之后减少一部分jar还是会出现同一个错误,而且都是在分析同一个class时出现。
2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] t.c.s.value.SimpleRightValueSwitcher : Analysis: implRemove done, return to<java.security.Provider: java.lang.Object remove(java.lang.Object)>; <java.security.Provider: java.lang.Object remove(java.lang.Object)>
2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] tabby.core.collector.CallGraphCollector : com.ibm.db2.jcc.am.km b
2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] tabby.core.collector.CallGraphCollector : org.postgresql.ds.jdbc23.AbstractJdbc23ConnectionPoolDataSource getPooledConnection
2023-04-03 16:23:41.982 ERROR 19788 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:3664) ~[na:1.8.0_341]
at java.lang.String.(String.java:207) ~[na:1.8.0_341]
at java.lang.StringBuilder.toString(StringBuilder.java:413) ~[na:1.8.0_341]
at soot.SootMethod.getSubSignatureImpl(SootMethod.java:734) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.SootMethod.getSignature(SootMethod.java:684) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.SootMethodRefImpl.getSignature(SootMethodRefImpl.java:172) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.switcher.value.SimpleRightValueSwitcher.caseInvokeExpr(SimpleRightValueSwitcher.java:104) ~[classes!/:na]
at tabby.core.switcher.value.SimpleRightValueSwitcher.caseVirtualInvokeExpr(SimpleRightValueSwitcher.java:34) ~[classes!/:na]
at soot.jimple.internal.AbstractVirtualInvokeExpr.apply(AbstractVirtualInvokeExpr.java:81) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.switcher.stmt.SimpleStmtSwitcher.caseAssignStmt(SimpleStmtSwitcher.java:50) ~[classes!/:na]
at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:217) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.flowThrough(PollutedVarsPointsToAnalysis.java:120) ~[classes!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.flowThrough(PollutedVarsPointsToAnalysis.java:30) ~[classes!/:na]
at soot.toolkits.scalar.FlowAnalysis.flowThrough(FlowAnalysis.java:583) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.toolkits.scalar.FlowAnalysis.doAnalysis(FlowAnalysis.java:547) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.toolkits.scalar.ForwardFlowAnalysis.doAnalysis(ForwardFlowAnalysis.java:46) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.doAnalysis(PollutedVarsPointsToAnalysis.java:106) ~[classes!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.makeDefault(PollutedVarsPointsToAnalysis.java:191) ~[classes!/:na]
at tabby.core.switcher.Switcher.doMethodAnalysis(Switcher.java:65) ~[classes!/:na]
at tabby.core.collector.CallGraphCollector.collect(CallGraphCollector.java:54) ~[classes!/:na]
at tabby.core.scanner.CallGraphScanner.collect(CallGraphScanner.java:51) ~[classes!/:na]
at tabby.core.scanner.CallGraphScanner.run(CallGraphScanner.java:38) ~[classes!/:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:132) ~[classes!/:na]
at tabby.core.Analyser.run(Analyser.java:91) ~[classes!/:na]
at tabby.App.lambda$run$0(App.java:46) ~[classes!/:na]
at tabby.App$$Lambda$915/638486177.run(Unknown Source) ~[na:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:28) ~[classes!/:na]
mac 16G内存勉强能跑
但远程机器 E5 4线程8G内存
跑了好几天,改动 neo4j 内存配置,改动 java 内存配置,一直没跑完过,各种内存错误
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
作者有没有优化下GC的可能啊,要不然太吃内存了,16G以下机器根本干不动
错误内容
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
Caused by: java.lang.IllegalArgumentException: target not exists!
at tabby.config.GlobalConfiguration.initConfig(GlobalConfiguration.java:144)
at tabby.App.main(App.java:27)
... 8 more
编译好报错,看了几个issue换成类似的环境还是报错,应该打包依赖问题但是确实没找到原因 idea下直接启动tabby没问题能写到neo4j..
win10 jdk1.8.341
neo4j 密码都正确
编译
gradlew.bat bootJar
2022-11-26 17:16:58.771 WARN 6992 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app': Unsatisfied dependency expressed through field 'analyser'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found
2022-11-26 17:16:58.773 INFO 6992 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-11-26 17:16:58.777 INFO 6992 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2022-11-26 17:16:58.791 INFO 6992 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2022-11-26 17:16:58.810 INFO 6992 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-11-26 17:16:58.881 ERROR 6992 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app': Unsatisfied dependency expressed through field 'analyser'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1413) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.6.jar!/:5.3.6]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.6.jar!/:5.3.6]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.6.jar!/:5.3.6]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar!/:2.4.5]
at tabby.App.main(App.java:36) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_341]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_341]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_341]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_341]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby-1.1.1.RELEASE.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby-1.1.1.RELEASE.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby-1.1.1.RELEASE.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) [tabby-1.1.1.RELEASE.jar:na]
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found
师傅好,使用tabby分析几个包,一共6000多个类,但是分析了2个多小时都没完成。请问有加快分析速度的方式吗
2023-12-15 15:43:14.867 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save cache to CSV.
2023-12-15 15:43:16.755 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save cache to CSV. DONE!
2023-12-15 15:43:16.755 INFO 31400 --- [ main] tabby.core.Analyser : Start to save cache.
2023-12-15 15:43:16.757 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save methods to Neo4j.
2023-12-15 15:43:18.502 ERROR 31400 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:32) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_391]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_391]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_391]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_391]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.PermissionDeniedDataAccessException: The client is unauthorized due to authentication failure.; Error code 'Neo.ClientError.Security.Unauthorized'; nested exception is org.neo4j.driver.exceptions.AuthenticationException: The client is unauthorized due to authentication failure.
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateImpl(Neo4jPersistenceExceptionTranslator.java:107) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateExceptionIfPossible(Neo4jPersistenceExceptionTranslator.java:83) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.potentiallyConvertRuntimeException(DefaultNeo4jClient.java:233) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.access$600(DefaultNeo4jClient.java:62) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:461) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at java.util.Optional.flatMap(Optional.java:241) ~[na:1.8.0_391]
at org.springframework.data.neo4j.core.Neo4jTemplate$DefaultExecutableQuery.getSingleResult(Neo4jTemplate.java:1114) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.repository.query.Neo4jQueryExecution$DefaultQueryExecution.execute(Neo4jQueryExecution.java:53) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.repository.query.AbstractNeo4jQuery.execute(AbstractNeo4jQuery.java:94) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.24.jar!/:5.3.24]
at com.sun.proxy.$Proxy104.loadMethodRefFromCSV(Unknown Source) ~[na:na]
at tabby.dal.neo4j.service.MethodService.importMethodRef(MethodService.java:25) ~[classes!/:na]
at tabby.core.container.DataContainer.save2Neo4j(DataContainer.java:380) ~[classes!/:na]
at tabby.core.container.DataContainer$$FastClassBySpringCGLIB$$5e064fdd.invoke() ~[classes!/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) ~[spring-aop-5.3.24.jar!/:5.3.24]
at tabby.core.container.DataContainer$$EnhancerBySpringCGLIB$$5b32fa1d.save2Neo4j() ~[classes!/:na]
at tabby.core.Analyser.save(Analyser.java:173) ~[classes!/:na]
at tabby.core.Analyser.run(Analyser.java:105) ~[classes!/:na]
at tabby.App.lambda$run$0(App.java:48) [classes!/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) [spring-boot-2.7.7.jar!/:2.7.7]
... 13 common frames omitted
Caused by: org.neo4j.driver.exceptions.AuthenticationException: The client is unauthorized due to authentication failure.
at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:111) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.InternalSession.run(InternalSession.java:62) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.InternalSession.run(InternalSession.java:47) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.AbstractQueryRunner.run(AbstractQueryRunner.java:34) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.AbstractQueryRunner.run(AbstractQueryRunner.java:39) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DelegatingQueryRunner.run(DefaultNeo4jClient.java:147) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$RunnableStatement.runWith(DefaultNeo4jClient.java:219) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:454) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
... 46 common frames omitted
Suppressed: org.neo4j.driver.exceptions.ServiceUnavailableException: Connection to the database terminated. Please ensure that your database is listening on the correct host and port and that you have compatible encryption settings both on Neo4j server and driver. Note that the default encryption setting has changed in Neo4j 4.0.
at org.neo4j.driver.internal.util.ErrorUtil.newConnectionTerminatedError(ErrorUtil.java:48) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.util.ErrorUtil.newConnectionTerminatedError(ErrorUtil.java:42) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.ChannelErrorHandler.channelInactive(ChannelErrorHandler.java:67) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:411) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:376) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:411) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:376) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:813) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_391]
Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause: null
at org.neo4j.driver.internal.util.ErrorUtil.newNeo4jError(ErrorUtil.java:64) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher.handleFailureMessage(InboundMessageDispatcher.java:107) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.unpackFailureMessage(CommonMessageReader.java:75) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.read(CommonMessageReader.java:53) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:81) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:37) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.MessageDecoder.channelRead(MessageDecoder.java:42) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_391]
tabby.build.enable = true
tabby.load.enable = true
tabby.build.target = E:\RR\202312\tabby-master\cases\kafka
tabby.build.libraries = E:\RR\202312\tabby-master\cases\kafka
tabby.build.mode = gadget
tabby.output.directory = ./output/dev
tabby.debug.details = false
tabby.build.isJDKProcess = true
tabby.build.withAllJDK = false
tabby.build.excludeJDK = false
tabby.build.isJDKOnly = false
tabby.build.checkFatJar = true
tabby.build.isFullCallGraphCreate = true
tabby.build.thread.timeout = 2
tabby.build.isNeedToCreateIgnoreList = false
tabby.cache.isDockerImportPath = false
tabby.neo4j.username = neo4j
tabby.neo4j.password = admin888
tabby.neo4j.url = bolt://127.0.0.1:7687
tabby.debug.details = true
tabby.debug.inner.details = true
你好,tabby静态分析CFG必须包含JDK吗,但是这样子生成的neo4j是不是太大了。
我写了简单的测试例子,node节点达到了21万^^,而且时间非常长。
Total nodes: 213563, relations: 715798
而且,无论怎么修改setting中的jdk选项,还是这个结果,请问这几个属性含义在哪里有解释吗
tabby.build.isJDKProcess = false
tabby.build.withAllJDK = false
tabby.build.excludeJDK = true
tabby.build.isJDKOnly = false
MacOS 命令行测试参数:
java -Xmx8g -jar tabby-1.1.0.RELEASE.jar /tmp/target.jar --checkFatJar --isJDKProcess
tabby/src/main/java/tabby/App.java 文件 70 行代码存在路径重复拼接错误:
String path = String.join(File.separator, System.getProperty("user.dir"), target)
当前目录 System.getProperty("user.dir")
和传入的绝对路径 target
拼接,导致找不到 target 文件
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-05-18 14:55:22.911 ERROR 26148 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar!/:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar!/:2.4.5]
at tabby.App.main(App.java:43) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_271]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_271]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_271]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_271]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby-1.1.0.RELEASE.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby-1.1.0.RELEASE.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby-1.1.0.RELEASE.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) [tabby-1.1.0.RELEASE.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.net.UnknownHostException: H; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateImpl(Neo4jPersistenceExceptionTranslator.java:105) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateExceptionIfPossible(Neo4jPersistenceExceptionTranslator.java:91) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.potentiallyConvertRuntimeException(DefaultNeo4jClient.java:174) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.access$400(DefaultNeo4jClient.java:55) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:289) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at java.util.Optional.flatMap(Optional.java:241) ~[na:1.8.0_271]
at org.springframework.data.neo4j.core.Neo4jTemplate$DefaultExecutableQuery.getSingleResult(Neo4jTemplate.java:661) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.repository.query.Neo4jQueryExecution$DefaultQueryExecution.execute(Neo4jQueryExecution.java:53) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.neo4j.repository.query.AbstractNeo4jQuery.execute(AbstractNeo4jQuery.java:85) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:152) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:131) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.6.jar!/:5.3.6]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.6.jar!/:5.3.6]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.6.jar!/:5.3.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.6.jar!/:5.3.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.6.jar!/:5.3.6]
at com.sun.proxy.$Proxy82.loadMethodRefFromCSV(Unknown Source) ~[na:na]
at tabby.dal.neo4j.service.MethodService.importMethodRef(MethodService.java:23) ~[classes!/:na]
at tabby.core.container.DataContainer.save2Neo4j(DataContainer.java:279) ~[classes!/:na]
at tabby.core.Analyser.save(Analyser.java:136) ~[classes!/:na]
at tabby.core.Analyser.run(Analyser.java:49) ~[classes!/:na]
at tabby.App.lambda$run$0(App.java:97) [classes!/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) [spring-boot-2.4.5.jar!/:2.4.5]
... 13 common frames omitted
2021-05-18 14:55:22.917 INFO 26148 --- [ main] org.neo4j.driver.Driver : Closing driver instance 1620823990
2021-05-18 14:55:22.920 INFO 26148 --- [ main] org.neo4j.driver.ConnectionPool : Closing connection pool towards 127.0.0.1:7687
2021-05-18 14:55:23.135 INFO 26148 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2021-05-18 14:55:23.141 INFO 26148 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2021-05-18 14:55:23.235 INFO 26148 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Method节点中有个IS_SINK和IS_SOURCE,这两个属性现在还需要在Tabby的配置文件/rules/knowledges.json中配置吗?我下载了最新的Releases并未看到如何配置这个文件
调用栈
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-08-07 18:40:18.371 ERROR 15994 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
at tabby.App.main(App.java:36) [main/:na]
Caused by: java.lang.RuntimeException: None of the basic classes could be loaded! Check your Soot class path!
at soot.Scene.loadBasicClasses(Scene.java:1755) ~[soot-4.2.1.jar:na]
at tabby.core.scanner.ClassInfoScanner.loadAndExtract(ClassInfoScanner.java:55) ~[main/:na]
at tabby.core.scanner.ClassInfoScanner.run(ClassInfoScanner.java:39) ~[main/:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:107) ~[main/:na]
at tabby.core.Analyser.run(Analyser.java:81) ~[main/:na]
at tabby.App.lambda$run$0(App.java:89) [main/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) [spring-boot-2.4.5.jar:2.4.5]
... 5 common frames omitted
配置文件如下,这里设置excludeJDK=true
,只分析单个JAR包
# build code property graph
tabby.build.enable = true
# jdk settings
tabby.build.isJDKProcess = true
tabby.build.withAllJDK = false
tabby.build.excludeJDK = true
tabby.build.isJDKOnly = false
# dealing fatjar
tabby.build.checkFatJar = true
# default pointed-to analysis
tabby.build.isFullCallGraphCreate = false
# targets to analyse
tabby.build.target = path/to/target
tabby.build.libraries = path/to/lib
# load to neo4j
tabby.load.enable = false
# debug
tabby.debug.details = false
tabby.debug.inner.details = false
请问这个库如何生成android项目的调用链呢
师傅您好,感谢您前面看了我的那个0除的问题,后面我也拜读了您的文章《如何高效的挖掘Java反序列化利用链?》和使用说明,但是还是有一些小小的疑惑,就是针对于分析这种小量的代码还有使用上的一些问题,希望您能不吝赐教
`/**
import java.io.IOException;
import java.io.Serializable;
public class user implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException, IOException {
try {
in.defaultReadObject();
} catch (IOException e) {
e.printStackTrace();
}
Runtime.getRuntime().exec("calc.exe");
}
}`
另外一个
`
/**
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class test1 {
public static void main(String[] args) {
try {
FileOutputStream out = new FileOutputStream("d:/1.bin");
ObjectOutputStream obj_out = new ObjectOutputStream(out);
user u = new user();
u.setName("test");
obj_out.writeObject(u);
//利用readobject方法还原user对象
FileInputStream in = new FileInputStream("d:/1.bin");
ObjectInputStream ins = new ObjectInputStream(in);
//反序列化操作
user u1 = (user) ins.readObject();
System.err.println(u1.getName());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
`
就是上面两个简单的类,构建了Demo.jar文件
用tabby分析以后,导入到neo4j中很明显main中就有好多CALL没有显示出来
我用的是 java -Xmx6g -jar tabby-1.1.0.RELEASE.jar Demo.jar 命令,
不知是不是没有分析jre或者是jdk环境造成的
我还有一个使用上的问题,就是在我分析某个组件或者是插件的时候,如果不分析JDK或者jre的话是不是调用的jdk内部的类之间的调用关系就不会生成,
就比如外部的某个组件用到了Map类,调用了putAll方法,进而putAll又调用JDK内部的put再到compareTo()方法,如果只分析组件不分析jdk或者是jre,是不是就只会生成到外部组件调用到putAll就停止了,没有了后面的调用关系
I used this tool for finding a method call, but the database-building process took so long.
This is the folder structure
PS D:\Tools\tabby\cases> tree /F
Folder PATH listing for volume User
Volume serial number is 1284-D760
D:.
└───aliyunCTF2023
│ bypassit.jar
│
└───libs
jackson-annotations-2.13.3.jar
jackson-core-2.13.3.jar
jackson-databind-2.13.3.jar
jackson-datatype-jdk8-2.13.3.jar
jackson-datatype-jsr310-2.13.3.jar
jackson-module-parameter-names-2.13.3.jar
jakarta.annotation-api-1.3.5.jar
jul-to-slf4j-1.7.36.jar
log4j-api-2.17.2.jar
log4j-to-slf4j-2.17.2.jar
logback-classic-1.2.11.jar
logback-core-1.2.11.jar
slf4j-api-1.7.36.jar
snakeyaml-1.29.jar
spring-aop-5.3.22.jar
spring-beans-5.3.22.jar
spring-boot-2.6.11.jar
spring-boot-autoconfigure-2.6.11.jar
spring-boot-jarmode-layertools-2.6.11.jar
spring-context-5.3.22.jar
spring-core-5.3.22.jar
spring-expression-5.3.22.jar
spring-jcl-5.3.22.jar
spring-web-5.3.22.jar
spring-webmvc-5.3.22.jar
tomcat-embed-core-9.0.65.jar
tomcat-embed-el-9.0.65.jar
tomcat-embed-websocket-9.0.65.jar
and the time:
Are there anyway to improve the performance ? (i had increased the dbms.memory.heap.initial_size
, dbms.memory.heap.max_size
, dbms.memory.pagecache.size
)
师傅您好,请问有关于Class、Method这两类节点详细的属性说明文档吗?如果有的话方便发一下地址吗,谢谢!
环境:jdk1.8.0_341,neo4j desktop 5.3
无法打开文件 csv 文件报错:
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:28) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_341]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_341]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_341]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_341]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.io.IOException: Cannot open file D:\var\lib\neo4j\import\GRAPHDB_PUBLIC_METHODS.csv for reading.; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'; nested exception is org.neo4j.driver.exceptions.ClientException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.io.IOException: Cannot open file D:\var\lib\neo4j\import\GRAPHDB_PUBLIC_METHODS.csv for reading.
pom.xml中存在如下配置executable为true时,无法通过JarInputStream解压jar包,在命令行中使用jar xvf也无法解压,但是可以直接通过unzip解压,应该在FileUtils.java#extract()添加另一个解压方式就可以顺利解压executable为true情况下打包的jar包了
无法解压的原因貌似是在完全可执行的jar/war在文件前面嵌入了个额外的脚本导致在第一次jarInputStream.getNextJarEntry()时值为空,具体的我太菜了分析不动了师傅加油!!!
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
Task :compileJava FAILED
FAILURE: Build failed with an exception.
Could not resolve all files for configuration ':compileClasspath'.
Could not find de.upb.cs.swt:heros:1.2.3-SNAPSHOT.
Required by:
project : > org.soot-oss:soot:4.4.0-SNAPSHOT:20221228.232630-32
这个commit关闭了过程间分析
导致如下错误
java.lang.RuntimeException: This operation requires resolving level BODIES but java.lang.AbstractStringBuilder is at resolving level SIGNATURES
If you are extending Soot, try to add the following call before calling soot.Main.main(..):
Scene.v().addBasicClass(java.lang.AbstractStringBuilder,BODIES);
Otherwise, try whole-program mode (-w).
at soot.SootClass.checkLevelIgnoreResolving(SootClass.java:198)
at soot.SootClass.checkLevel(SootClass.java:180)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:391)
直接使用env中的tabby-path-finder.jar支持函数只有两个findAllPaths和findAllJavaGadget,使用师傅另外的仓库编译的jar包能用的函数也只有两个
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "IS_OPTIMIZE"; SQL statement:
insert into call (invoker_type, line_num, polluted_position, real_call_type, source, target, id) values (?, ?, ?, ?, ?, ?, ?) [23502-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:459) ~[h2-1.4.200.jar!/:na]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) ~[h2-1.4.200.jar!/:na]
at org.h2.message.DbException.get(DbException.java:205) ~[h2-1.4.200.jar!/:na]
at org.h2.message.DbException.get(DbException.java:181) ~[h2-1.4.200.jar!/:na]
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:374) ~[h2-1.4.200.jar!/:na]
at org.h2.table.Table.validateConvertUpdateSequence(Table.java:845) ~[h2-1.4.200.jar!/:na]
at org.h2.command.dml.Insert.insertRows(Insert.java:187) ~[h2-1.4.200.jar!/:na]
at org.h2.command.dml.Insert.update(Insert.java:151) ~[h2-1.4.200.jar!/:na]
at org.h2.command.CommandContainer.update(CommandContainer.java:198) ~[h2-1.4.200.jar!/:na]
at org.h2.command.Command.executeUpdate(Command.java:251) ~[h2-1.4.200.jar!/:na]
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:191) ~[h2-1.4.200.jar!/:na]
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:152) ~[h2-1.4.200.jar!/:na]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-3.4.5.jar!/:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.5.jar!/:na]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.4.30.Final.jar!/:5.4.30.Final]
师傅您好,我现在正在想办法去寻找自动化挖掘JAVA反序列化的方法,您能不能就 “参数为CALL边的POLLUTED_POSITION”这个属性给出具体的JAVA代码和参数说明,直接看您的例子没有代码,我很难理解这里面的数组的值在实际调用中都代表着一些什么
不胜感激
师傅,请问哪里能有taddy的查询模版呢,看了一些链接,好像你之前的一些文章撤掉了?
比如oracle的补丁包,或者codeql无法正常做库的项目
如题,请问文中提到的毕业论文,有没有公开的下载链接。
比如寻找fastjson 1.2.80漏洞里面的 继承Throwable类,感谢!
配置文件中有一行设置了default的target
tabby.build.target = cases/commons-collections-3.1.jar
而主程序有一个如下判断
// 支持绝对路径 issue 7
if(target != null && !FileUtils.fileExists(target)){
target = String.join(File.separator, System.getProperty("user.dir"), target);
log.info("target: " + target);
if(!FileUtils.fileExists(target)){
throw new IllegalArgumentException("target not exists!");
}
}
这使得target永远不是null,isJDKOnly时也不会忽略该选项,导致运行报错(以及最新released的源码好像也和这批源码有出入。。。)
初一看感觉与codeql功能比较类似,请问下作者tabby与codeql相比有哪些功能上的区别或优势?
使用JDK8u261运行会CommandLineRunner错误。
使用JDK8u121运行则没问题,师傅可以自己调一下。
在命令行下,java -Xmx6g -jar ./build/libs/tabby-1.1.1.RELEASE.jar没问题。
但在IDEA开发环境下,运行APP或Test都会报一个SpringBoot的错误,报错信息提示在下面函数增加@param选项,但还是没法解决。
java.lang.IllegalStateException: Failed to execute CommandLineRunner
For queries with named parameters you need to use provide names for method parameters. Use @param for query method parameters, or when on Java 8+ use the javac flag -parameters.
public MethodReference getMethodRefBySignature(String signature){
return methodRepository.findMethodReferenceBySignature(signature);
}
报错信息如下,更换过java版本(jdk1.8.0_342/1.8.0_341/1.8.0_352),都是一样的情况;
更换OS(win10/ubuntu22)也是同样的情况。
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
at tabby.App.main(App.java:36) [classes/:na]
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: **For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.;** nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.6.jar:5.3.6]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.6.jar:5.3.6]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.6.jar:5.3.6]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.6.jar:5.3.6]
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.6.jar:5.3.6]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.6.jar:5.3.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.4.8.jar:2.4.8]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.6.jar:5.3.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.6.jar:5.3.6]
at com.sun.proxy.$Proxy90.findMethodReferenceBySignature(Unknown Source) ~[na:na]
at tabby.dal.caching.service.MethodRefService.getMethodRefBySignature(MethodRefService.java:24) ~[classes/:na]
at tabby.core.container.DataContainer.getMethodRefBySubSignature(DataContainer.java:172) ~[classes/:na]
at tabby.core.container.DataContainer.getAliasMethodRefs(DataContainer.java:335) ~[classes/:na]
at tabby.core.scanner.ClassInfoScanner.makeAliasRelation(ClassInfoScanner.java:203) ~[classes/:na]
at tabby.core.scanner.ClassInfoScanner.makeAliasRelations(ClassInfoScanner.java:183) ~[classes/:na]
at tabby.core.scanner.ClassInfoScanner.extractRelationships(ClassInfoScanner.java:137) ~[classes/:na]
at tabby.core.scanner.ClassInfoScanner.buildClassEdges(ClassInfoScanner.java:102) ~[classes/:na]
at tabby.core.scanner.ClassInfoScanner.run(ClassInfoScanner.java:44) ~[classes/:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:107) ~[classes/:na]
at tabby.core.Analyser.run(Analyser.java:81) ~[classes/:na]
at tabby.App.lambda$run$0(App.java:89) [classes/:na]
soot.method.retrieveActiveBody 报错有没有什么好的解决方法
使用Tabby分析jar后,在GRAPHDB_PUBLIC_METHODS.csv中是有类的静态方法的。但实际代码中调用关系未体现在GRAPHDB_PUBLIC_CALL.csv中。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.