10
10
* @id java/netty-http-request-or-response-splitting
11
11
* @tags security
12
12
* external/cwe/cwe-113
13
+ * external/capec/capec-105
13
14
*/
14
15
15
16
import java
@@ -19,33 +20,34 @@ abstract private class InsecureNettyObjectCreation extends ClassInstanceExpr {
19
20
int vulnerableArgumentIndex ;
20
21
21
22
InsecureNettyObjectCreation ( ) {
22
- DataFlow:: localExprFlow ( any ( CompileTimeConstantExpr ctce | ctce .getBooleanValue ( ) = false ) , this .getArgument ( vulnerableArgumentIndex ) )
23
+ DataFlow:: localExprFlow ( any ( CompileTimeConstantExpr ctce | ctce .getBooleanValue ( ) = false ) ,
24
+ this .getArgument ( vulnerableArgumentIndex ) )
23
25
}
24
26
25
27
abstract string splittingType ( ) ;
26
28
}
27
29
28
30
abstract private class RequestOrResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation {
29
- override string splittingType ( ) { result = "Request- splitting or response- splitting" }
31
+ override string splittingType ( ) { result = "Request splitting or response splitting" }
30
32
}
31
33
32
34
/**
33
35
* Request splitting can allowing an attacker to inject/smuggle an additional HTTP request into the socket connection.
34
36
*/
35
37
abstract private class RequestSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation {
36
- override string splittingType ( ) { result = "Request- splitting" }
38
+ override string splittingType ( ) { result = "Request splitting" }
37
39
}
38
40
39
41
/**
40
42
* Response splitting can lead to HTTP vulnerabilities like XSS and cache poisoning.
41
43
*/
42
44
abstract private class ResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation {
43
- override string splittingType ( ) { result = "Response- splitting" }
45
+ override string splittingType ( ) { result = "Response splitting" }
44
46
}
45
47
46
48
private class InsecureDefaultHttpHeadersClassInstantiation extends RequestOrResponseSplittingInsecureNettyObjectCreation {
47
49
InsecureDefaultHttpHeadersClassInstantiation ( ) {
48
- getConstructedType ( )
50
+ this . getConstructedType ( )
49
51
.hasQualifiedName ( "io.netty.handler.codec.http" ,
50
52
[ "DefaultHttpHeaders" , "CombinedHttpHeaders" ] ) and
51
53
vulnerableArgumentIndex = 0
@@ -54,28 +56,30 @@ private class InsecureDefaultHttpHeadersClassInstantiation extends RequestOrResp
54
56
55
57
private class InsecureDefaultHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation {
56
58
InsecureDefaultHttpResponseClassInstantiation ( ) {
57
- getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultHttpResponse" ) and
59
+ this . getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultHttpResponse" ) and
58
60
vulnerableArgumentIndex = 2
59
61
}
60
62
}
61
63
62
64
private class InsecureDefaultHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation {
63
65
InsecureDefaultHttpRequestClassInstantiation ( ) {
64
- getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultHttpRequest" ) and
66
+ this . getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultHttpRequest" ) and
65
67
vulnerableArgumentIndex = 3
66
68
}
67
69
}
68
70
69
71
private class InsecureDefaultFullHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation {
70
72
InsecureDefaultFullHttpResponseClassInstantiation ( ) {
71
- getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultFullHttpResponse" ) and
73
+ this .getConstructedType ( )
74
+ .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultFullHttpResponse" ) and
72
75
vulnerableArgumentIndex = [ 2 , 3 ]
73
76
}
74
77
}
75
78
76
79
private class InsecureDefaultFullHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation {
77
80
InsecureDefaultFullHttpRequestClassInstantiation ( ) {
78
- getConstructedType ( ) .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultFullHttpRequest" ) and
81
+ this .getConstructedType ( )
82
+ .hasQualifiedName ( "io.netty.handler.codec.http" , "DefaultFullHttpRequest" ) and
79
83
vulnerableArgumentIndex = [ 3 , 4 ]
80
84
}
81
85
}
0 commit comments