Skip to content

Commit 439d919

Browse files
committed
Swift: Add CSV extension points.
1 parent 13d308a commit 439d919

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

swift/ql/lib/codeql/swift/security/SqlInjectionExtensions.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import swift
88
import codeql.swift.dataflow.DataFlow
9+
private import codeql.swift.dataflow.ExternalFlow
910

1011
/**
1112
* A dataflow sink for SQL injection vulnerabilities.
@@ -141,3 +142,10 @@ class GrdbDefaultSqlInjectionSink extends SqlInjectionSink {
141142
)
142143
}
143144
}
145+
146+
/**
147+
* A sink defined in a CSV model.
148+
*/
149+
private class DefaultSqlInjectionSink extends SqlInjectionSink {
150+
DefaultSqlInjectionSink() { sinkNode(this, "sql") }
151+
}

swift/ql/lib/codeql/swift/security/UnsafeJsEvalExtensions.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import swift
77
import codeql.swift.dataflow.DataFlow
88
import codeql.swift.dataflow.FlowSources
9+
private import codeql.swift.dataflow.ExternalFlow
910

1011
/**
1112
* A dataflow sink for javascript evaluation vulnerabilities.
@@ -141,3 +142,10 @@ class DefaultUnsafeJsEvalAdditionalTaintStep extends UnsafeJsEvalAdditionalTaint
141142
)
142143
}
143144
}
145+
146+
/**
147+
* A sink defined in a CSV model.
148+
*/
149+
private class DefaultUnsafeJsEvalSink extends UnsafeJsEvalSink {
150+
DefaultUnsafeJsEvalSink() { sinkNode(this, "js-eval") }
151+
}

swift/ql/lib/codeql/swift/security/UnsafeWebViewFetchExtensions.qll

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

66
import swift
77
import codeql.swift.dataflow.DataFlow
8+
private import codeql.swift.dataflow.ExternalFlow
89

910
/**
1011
* A dataflow sink for unsafe webview fetch vulnerabilities.
@@ -33,10 +34,10 @@ class UnsafeWebViewFetchAdditionalTaintStep extends Unit {
3334
* A default uncontrolled format string sink, such as certain arguments
3435
* to `UIWebView.loadHTMLString`.
3536
*/
36-
class DefaultUnsafeWebViewFetchSink extends UnsafeWebViewFetchSink {
37+
class UIKitWebKitWebViewFetchSink extends UnsafeWebViewFetchSink {
3738
Expr baseUrl;
3839

39-
DefaultUnsafeWebViewFetchSink() {
40+
UIKitWebKitWebViewFetchSink() {
4041
exists(
4142
MethodDecl funcDecl, CallExpr call, string className, string funcName, int arg, int baseArg
4243
|
@@ -71,3 +72,13 @@ class DefaultUnsafeWebViewFetchSink extends UnsafeWebViewFetchSink {
7172

7273
override Expr getBaseUrl() { result = baseUrl }
7374
}
75+
76+
/**
77+
* A sink defined in a CSV model.
78+
*
79+
* Note that sinks defined in this way never have a recognized `baseURL`
80+
* argument, which may limit the accuracy of results.
81+
*/
82+
private class DefaultUnsafeWebViewFetchSink extends UnsafeWebViewFetchSink {
83+
DefaultUnsafeWebViewFetchSink() { sinkNode(this, "webview-fetch") }
84+
}

0 commit comments

Comments
 (0)