Skip to content

Commit 3ec2c13

Browse files
committed
Add RequestForgerySanitizer
1 parent 0c71393 commit 3ec2c13

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

java/ql/src/Security/CWE/CWE-749/UnsafeAndroidAccess.ql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import java
1515
import semmle.code.java.dataflow.FlowSources
16+
import semmle.code.java.security.RequestForgeryConfig
1617
import semmle.code.java.security.UnsafeAndroidAccess
1718
import DataFlow::PathGraph
1819

@@ -25,6 +26,10 @@ class FetchUntrustedResourceConfiguration extends TaintTracking::Configuration {
2526
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
2627

2728
override predicate isSink(DataFlow::Node sink) { sink instanceof UrlResourceSink }
29+
30+
override predicate isSanitizer(DataFlow::Node sanitizer) {
31+
sanitizer instanceof RequestForgerySanitizer
32+
}
2833
}
2934

3035
from DataFlow::PathNode source, DataFlow::PathNode sink, FetchUntrustedResourceConfiguration conf

java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccess.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,6 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
147147

148148
String thisUrl = getIntent().getStringExtra("url");
149149
// This should be considered safe - the query lacks a proper sanitizer for partial URLs.
150-
wv.loadUrl("https://www.mycorp.com/" + thisUrl); // $ SPURIOUS: hasUnsafeAndroidAccess
150+
wv.loadUrl("https://www.mycorp.com/" + thisUrl);
151151
}
152152
}

java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33
import semmle.code.java.dataflow.FlowSources
4-
import TestUtilities.InlineExpectationsTest
4+
import semmle.code.java.security.RequestForgeryConfig
55
import semmle.code.java.security.UnsafeAndroidAccess
6+
import TestUtilities.InlineExpectationsTest
67

78
class Conf extends TaintTracking::Configuration {
89
Conf() { this = "qltest:cwe:unsafe-android-access" }
910

1011
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
1112

1213
override predicate isSink(DataFlow::Node sink) { sink instanceof UrlResourceSink }
14+
15+
override predicate isSanitizer(DataFlow::Node sanitizer) {
16+
sanitizer instanceof RequestForgerySanitizer
17+
}
1318
}
1419

1520
class UnsafeAndroidAccessTest extends InlineExpectationsTest {

0 commit comments

Comments
 (0)