mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
Add io.netty.handler.codec.http.DefaultHttpResponse to Netty Response Splitting Detection
Related: #2185 Related: https://github.com/github/security-lab/issues/22
This commit is contained in:
@@ -5,5 +5,11 @@ public class ResponseSplitting {
|
|||||||
private final DefaultHttpHeaders badHeaders = new DefaultHttpHeaders(false);
|
private final DefaultHttpHeaders badHeaders = new DefaultHttpHeaders(false);
|
||||||
|
|
||||||
// GOOD: Verifies headers passed don't contain CRLF characters
|
// GOOD: Verifies headers passed don't contain CRLF characters
|
||||||
private final DefaultHttpHeaders badHeaders = new DefaultHttpHeaders();
|
private final DefaultHttpHeaders goodHeaders = new DefaultHttpHeaders();
|
||||||
|
|
||||||
|
// BAD: Disables the internal response splitting verification
|
||||||
|
private final DefaultHttpResponse badResponse = new DefaultHttpResponse(version, httpResponseStatus, false);
|
||||||
|
|
||||||
|
// GOOD: Verifies headers passed don't contain CRLF characters
|
||||||
|
private final DefaultHttpResponse goodResponse = new DefaultHttpResponse(version, httpResponseStatus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,21 @@
|
|||||||
|
|
||||||
import java
|
import java
|
||||||
|
|
||||||
from ClassInstanceExpr new
|
abstract private class InsecureNettyObjectCreation extends ClassInstanceExpr { }
|
||||||
where
|
|
||||||
new.getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpHeaders") and
|
private class InsecureDefaultHttpHeadersClassInstantiation extends InsecureNettyObjectCreation {
|
||||||
new.getArgument(0).getProperExpr().(BooleanLiteral).getBooleanValue() = false
|
InsecureDefaultHttpHeadersClassInstantiation() {
|
||||||
select new, "Response-splitting vulnerability due to verification being disabled."
|
getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpHeaders") and
|
||||||
|
getArgument(0).getProperExpr().(BooleanLiteral).getBooleanValue() = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class InsecureDefaultHttpResponseClassInstantiation extends InsecureNettyObjectCreation {
|
||||||
|
InsecureDefaultHttpResponseClassInstantiation() {
|
||||||
|
getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpResponse") and
|
||||||
|
getArgument(2).getProperExpr().(BooleanLiteral).getBooleanValue() = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
from InsecureNettyObjectCreation new
|
||||||
|
select new, "Response-splitting vulnerability due to header value verification being disabled."
|
||||||
|
|||||||
Reference in New Issue
Block a user