Skip to content

Commit 5ed9949

Browse files
committed
Adapt InsecureBasicAuth to the previous commit
1 parent 2e08c5d commit 5ed9949

File tree

4 files changed

+196
-327
lines changed

4 files changed

+196
-327
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/** Provides classes and predicates to reason about Insecure Basic Authentication vulnerabilities. */
2+
3+
import java
4+
import semmle.code.java.dataflow.DataFlow
5+
import semmle.code.java.dataflow.TaintTracking
6+
import semmle.code.java.security.HttpsUrls
7+
8+
/**
9+
* A source that represents HTTP URLs.
10+
* Extend this class to add your own Insecure Basic Authentication sources.
11+
*/
12+
abstract class InsecureBasicAuthSource extends DataFlow::Node { }
13+
14+
/** A default source representing HTTP strings, URLs or URIs. */
15+
private class DefaultInsecureBasicAuthSource extends InsecureBasicAuthSource {
16+
DefaultInsecureBasicAuthSource() { this.asExpr() instanceof HttpStringLiteral }
17+
}
18+
19+
/**
20+
* A sink that represents a method that sets Basic Authentication.
21+
* Extend this class to add your own Insecure Basic Authentication sinks.
22+
*/
23+
abstract class InsecureBasicAuthSink extends DataFlow::Node { }
24+
25+
/** A default sink representing methods that set an Authorization header. */
26+
private class DefaultInsecureBasicAuthSink extends InsecureBasicAuthSink {
27+
DefaultInsecureBasicAuthSink() {
28+
exists(MethodAccess ma |
29+
ma.getMethod().hasName("addHeader") or
30+
ma.getMethod().hasName("setHeader") or
31+
ma.getMethod().hasName("setRequestProperty")
32+
|
33+
this.asExpr() = ma.getQualifier() and
34+
ma.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "Authorization" and
35+
TaintTracking::localExprTaint(any(BasicAuthString b), ma.getArgument(1))
36+
)
37+
}
38+
}
39+
40+
/**
41+
* String pattern of basic authentication.
42+
*/
43+
private class BasicAuthString extends StringLiteral {
44+
BasicAuthString() { exists(string s | this.getRepresentedString() = s | s.matches("Basic %")) }
45+
}

java/ql/src/semmle/code/java/security/InsecureBasicAuthQuery.qll renamed to java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/** Provides taint tracking configurations to be used in Insecure Basic Authentication queries. */
22

33
import java
4+
import semmle.code.java.security.HttpsUrls
45
import semmle.code.java.security.InsecureBasicAuth
56
import semmle.code.java.dataflow.TaintTracking
67

@@ -16,6 +17,6 @@ class BasicAuthFlowConfig extends TaintTracking::Configuration {
1617
override predicate isSink(DataFlow::Node sink) { sink instanceof InsecureBasicAuthSink }
1718

1819
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
19-
any(InsecureBasicAuthAdditionalTaintStep c).step(node1, node2)
20+
any(HttpUrlsAdditionalTaintStep c).step(node1, node2)
2021
}
2122
}

java/ql/src/semmle/code/java/security/InsecureBasicAuth.qll

Lines changed: 0 additions & 259 deletions
This file was deleted.

0 commit comments

Comments
 (0)