File tree Expand file tree Collapse file tree 4 files changed +19
-7
lines changed
semmle/code/java/security Expand file tree Collapse file tree 4 files changed +19
-7
lines changed Original file line number Diff line number Diff line change 1111 */
1212
1313import java
14- import ResponseSplitting
14+ import ServletResponseSplitting
1515import DataFlow:: PathGraph
1616
1717class ResponseSplittingConfig extends TaintTracking:: Configuration {
1818 ResponseSplittingConfig ( ) { this = "ResponseSplittingConfig" }
1919
2020 override predicate isSource ( DataFlow:: Node source ) {
2121 source instanceof RemoteFlowSource and
22- not source instanceof WhitelistedSource
22+ not source instanceof TrustedSource
2323 }
2424
2525 override predicate isSink ( DataFlow:: Node sink ) { sink instanceof HeaderSplittingSink }
Original file line number Diff line number Diff line change 1212
1313import java
1414import semmle.code.java.dataflow.FlowSources
15- import ResponseSplitting
15+ import ServletResponseSplitting
1616import DataFlow:: PathGraph
1717
1818class ResponseSplittingLocalConfig extends TaintTracking:: Configuration {
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.frameworks.Servlets
33import semmle.code.java.dataflow.FlowSources
4+ import semmle.code.java.security.ResponseSplitting
45
56/**
67 * Header-splitting sinks. Expressions that end up in an HTTP header.
78 */
8- class HeaderSplittingSink extends DataFlow :: ExprNode {
9- HeaderSplittingSink ( ) {
9+ class ServletHeaderSplittingSink extends HeaderSplittingSink {
10+ ServletHeaderSplittingSink ( ) {
1011 exists ( ResponseAddCookieMethod m , MethodAccess ma |
1112 ma .getMethod ( ) = m and
1213 this .getExpr ( ) = ma .getArgument ( 0 )
@@ -30,8 +31,8 @@ class HeaderSplittingSink extends DataFlow::ExprNode {
3031 }
3132}
3233
33- class WhitelistedSource extends DataFlow :: ExprNode {
34- WhitelistedSource ( ) {
34+ class TrustedServletSource extends TrustedSource {
35+ TrustedServletSource ( ) {
3536 this .asExpr ( ) .( MethodAccess ) .getMethod ( ) instanceof HttpServletRequestGetHeaderMethod or
3637 this .asExpr ( ) .( MethodAccess ) .getMethod ( ) instanceof CookieGetNameMethod
3738 }
Original file line number Diff line number Diff line change 1+ import semmle.code.java.dataflow.DataFlow
2+
3+ /**
4+ * Header-splitting sinks. Expressions that end up in an HTTP header.
5+ */
6+ abstract class HeaderSplittingSink extends DataFlow:: ExprNode { }
7+
8+ /**
9+ * Sources that cannot be used to perform a header splitting attack.
10+ */
11+ abstract class TrustedSource extends DataFlow:: ExprNode { }
You can’t perform that action at this time.
0 commit comments