Skip to content

Commit 16c27c6

Browse files
committed
1. 源hook点获取同一污点进行过滤
2. 将部分过滤hook点作为传播点
1 parent 63d6504 commit 16c27c6

35 files changed

+113
-108
lines changed

agent/src/main/java/com/keven1z/Agent.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2023/5/16
11+
* @since 2023/5/16
1212
*/
1313
public class Agent {
1414
public static String projectVersion;

agent/src/main/java/com/keven1z/JarFileHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
/**
1313
* @author keven1z
14-
* @date 2022/04/21
14+
* @since 2022/04/21
1515
*/
1616
public class JarFileHelper {
1717

agent/src/main/java/com/keven1z/ModuleContainer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2023/02/21
11+
* @since 2023/02/21
1212
*/
1313

1414
public class ModuleContainer implements Module {

agent/src/main/java/com/keven1z/ModuleLoader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
/**
1616
* @author keven1z
17-
* @date 2023/02/21
17+
* @since 2023/02/21
1818
*/
1919
public class ModuleLoader {
2020
public static final String ENGINE_JAR = "iast-engine.jar";

agent/src/main/java/com/keven1z/SimpleIASTClassLoader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* @author keven1z
12-
* @date 2023/02/23
12+
* @since 2023/02/23
1313
* 参考 @link <a href="https://github.com/alibaba/jvm-sandbox/blob/master/sandbox-agent/src/main/java/com/alibaba/jvm/sandbox/agent/SandboxClassLoader.java">jvm-sandbox</a>
1414
*/
1515
public class SimpleIASTClassLoader extends URLClassLoader {

engine/src/main/java/com/keven1z/core/EngineBoot.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
/**
2323
* @author keven1z
24-
* @date 2023/02/21
24+
* @since 2023/02/21
2525
*/
2626
public class EngineBoot {
2727
EngineController engineController = null;

engine/src/main/java/com/keven1z/core/EngineController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
* 引擎加载类
3737
*
3838
* @author keven1z
39-
* @date 2023/02/21
39+
* @since 2023/02/21
4040
*/
4141
public class EngineController {
4242
public static final IASTContext context = IASTContext.getContext();

engine/src/main/java/com/keven1z/core/consts/HTTPConst.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
/**
44
* @author keven1z
5-
* @date 2023/10/22
5+
* @since 2023/10/22
66
*/
77
public class HTTPConst {
88
/*

engine/src/main/java/com/keven1z/core/hook/asm/HardcodedClassVisitor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
/**
1919
* @author keven1z
20-
* @date 2024/07/28
20+
* @since 2024/07/28
2121
*/
2222
public class HardcodedClassVisitor extends ClassVisitor {
2323

engine/src/main/java/com/keven1z/core/hook/asm/adapter/HookAdviceAdapter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
/**
1414
* @author keven1z
15-
* @date 2023/10/23
15+
* @since 2023/10/23
1616
*/
1717
public class HookAdviceAdapter extends IASTAdviceAdapter {
1818
protected final String methodName;

engine/src/main/java/com/keven1z/core/hook/asm/adapter/IASTAdviceAdapter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
/**
88
* @author keven1z
9-
* @date 2023/10/19
9+
* @since 2023/10/19
1010
*/
1111
public class IASTAdviceAdapter extends AdviceAdapter {
1212
protected IASTAdviceAdapter(int api, MethodVisitor methodVisitor, int access, String name, String descriptor) {

engine/src/main/java/com/keven1z/core/hook/server/detectors/GlassfishDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* @author keven1z
12-
* @date 2024/09/22
12+
* @since 2024/09/22
1313
*/
1414
public class GlassfishDetector extends ServerDetector {
1515
private static final String SERVER_FLAG_CLASS = " com/sun/enterprise/glassfish/bootstrap/ASMain".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/JettyDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
/**
1212
* @author keven1z
13-
* @date 2024/09/22
13+
* @since 2024/09/22
1414
*/
1515
public class JettyDetector extends ServerDetector {
1616
private static final String SERVER_FLAG_CLASS = " org/eclipse/jetty/server/Server".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/ResinDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
/**
99
* @author keven1z
10-
* @date 2024/09/22
10+
* @since 2024/09/22
1111
*/
1212
public class ResinDetector extends ServerDetector {
1313
private static final String SERVER_FLAG_CLASS = " com/caucho/server/resin/Resin".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/TongWebDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2024/09/22
11+
* @since 2024/09/22
1212
*/
1313
public class TongWebDetector extends ServerDetector {
1414
private static final String SERVER_FLAG_CLASS = " com/tongweb/web/thor/Server".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/UndertowDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2024/09/22
11+
* @since 2024/09/22
1212
*/
1313
public class UndertowDetector extends ServerDetector {
1414
private static final String SERVER_FLAG_CLASS = " io/undertow/server/HttpHandler".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/WebLogicDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2024/09/22
11+
* @since 2024/09/22
1212
*/
1313
public class WebLogicDetector extends ServerDetector {
1414
private static final String SERVER_FLAG_CLASS = " weblogic/Server".substring(1);

engine/src/main/java/com/keven1z/core/hook/server/detectors/WildFlyDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* @author keven1z
12-
* @date 2024/09/22
12+
* @since 2024/09/22
1313
*/
1414
public class WildFlyDetector extends ServerDetector {
1515
private static final String SERVER_FLAG_CLASS = " org/jboss/as/server/Main".substring(1);

engine/src/main/java/com/keven1z/core/model/graph/TaintData.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
/**
1414
* @author keven1z
15-
* @Date 2021/6/11
15+
* @since 2021/6/11
1616
* @Description hook类的信息
1717
*/
1818
public class TaintData {

engine/src/main/java/com/keven1z/core/model/graph/TaintGraph.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* hook信息图结构
99
*
1010
* @author keven1z
11-
* @date 2021/11/18
11+
* @since 2021/11/18
1212
*/
1313
public class TaintGraph {
1414

engine/src/main/java/com/keven1z/core/monitor/HeartBeatMonitor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/**
88
* 心跳线程
99
* @author keven1z
10-
* @date 2023/11/3
10+
* @since 2023/11/3
1111
*/
1212

1313
public class HeartBeatMonitor extends Monitor {

engine/src/main/java/com/keven1z/core/pojo/HttpMessage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
/**
99
* @author keven1z
10-
* @date 2023/10/22
10+
* @since 2023/10/22
1111
*/
1212
public class HttpMessage {
1313
private String url;

engine/src/main/java/com/keven1z/core/pojo/finding/HardcodedFindingData.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
/**
66
* @author keven1z
7-
* @date 2024/07/28
7+
* @since 2024/07/28
88
*/
99
public class HardcodedFindingData extends FindingData {
1010
// 类名

engine/src/main/java/com/keven1z/core/policy/Policy.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
/**
99
* @author keven1z
10-
* @date 2023/02/22
10+
* @since 2023/02/22
1111
*/
1212
public class Policy implements Serializable,Comparable<Policy> {
1313
public Policy(String className, String method, String desc) {

engine/src/main/java/com/keven1z/core/taint/resolvers/HandlerHookClassResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* 通过解析器集合解析hook class
55
* @author keven1z
6-
* @date 2023/01/15
6+
* @since 2023/01/15
77
*/
88
public interface HandlerHookClassResolver {
99

engine/src/main/java/com/keven1z/core/taint/resolvers/HandlerHookClassResolverInitializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
/**
1414
* @author keven1z
15-
* @date 2023/01/15
15+
* @since 2023/01/15
1616
* Hook分发初始化类
1717
*/
1818
public class HandlerHookClassResolverInitializer {

engine/src/main/java/com/keven1z/core/taint/resolvers/PropagationClassResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* 污点传播阶段的解析器
1717
*
1818
* @author keven1z
19-
* @date 2023/01/15
19+
* @since 2023/01/15
2020
*/
2121
public class PropagationClassResolver implements HandlerHookClassResolver {
2222
@Override

engine/src/main/java/com/keven1z/core/taint/resolvers/SanitizerClassResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* 无害处理阶段的解析器
1919
*
2020
* @author keven1z
21-
* @date 2023/01/15
21+
* @since 2023/01/15
2222
*/
2323
public class SanitizerClassResolver implements HandlerHookClassResolver {
2424
@Override

engine/src/main/java/com/keven1z/core/taint/resolvers/SinkClassResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* 污染汇聚点的解析器
1616
*
1717
* @author keven1z
18-
* @date 2023/01/15
18+
* @since 2023/01/15
1919
*/
2020
public class SinkClassResolver implements HandlerHookClassResolver {
2121
@Override

engine/src/main/java/com/keven1z/core/taint/resolvers/SourceClassResolver.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* 污染源的解析器
2929
*
3030
* @author keven1z
31-
* @date 2023/01/15
31+
* @since 2023/01/15
3232
*/
3333
public class SourceClassResolver implements HandlerHookClassResolver {
3434
private static final String[] USER_PACKAGE_PREFIX = new String[]{"java", "javax", " org.spring".substring(1), " org.apache".substring(1), " io.undertow".substring(1)};
@@ -50,12 +50,16 @@ public void resolve(Object returnObject, Object thisObject, Object[] parameters,
5050
resolveBeanHook(className, method, desc, returnObject, fromMap);
5151
return;
5252
}
53-
53+
int returnIdentityHashCode = System.identityHashCode(returnObject);
54+
//如果已经存在同一污点,不继续加入该污染源
55+
if (TAINT_GRAPH_THREAD_LOCAL.get().isTaint(returnIdentityHashCode)) {
56+
return;
57+
}
5458
TaintData taintData = new TaintData(className, method, desc, PolicyTypeEnum.SOURCE);
5559
searchAndFillSourceFromReturnObject(returnObject, taintData);
5660
taintData.setFromValue(getSourceFromName(fromMap));
5761
//加入原始对象的hashcode
58-
taintData.setToObjectHashCode(System.identityHashCode(returnObject));
62+
taintData.setToObjectHashCode(returnIdentityHashCode);
5963
TaintUtils.buildTaint(returnObject, taintData, true);
6064
}
6165

engine/src/main/java/com/keven1z/core/utils/Base64Utils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
/**
77
* @author keven1z
8-
* @date 2024/07/28
8+
* @since 2024/07/28
99
*/
1010
public class Base64Utils {
1111
/**

engine/src/main/java/com/keven1z/core/utils/ClassUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
/**
1414
* @author keven1z
15-
* @date 2023/02/06
15+
* @since 2023/02/06
1616
*/
1717
public class ClassUtils {
1818
private static final String[] IGNORE_OBJECT_CLASS = new String[]{"java.lang.Object", "java.lang.Cloneable", "java.io.Serializable", "java.lang.Iterable"};

engine/src/main/java/com/keven1z/core/utils/StackUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* @author keven1z
11-
* @date 2023/10/15
11+
* @since 2023/10/15
1212
*/
1313
public class StackUtils {
1414
/**

engine/src/main/java/com/keven1z/core/vulnerability/FlowProcessingStation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
/**
1919
* @author keven1z
20-
* @date 2023/10/29
20+
* @since 2023/10/29
2121
* hook以及流量处理类
2222
*/
2323
public class FlowProcessingStation {

0 commit comments

Comments
 (0)