Skip to content

Commit 81b0dbf

Browse files
committed
Swift: Add CSV extension points to the encryption queries.
1 parent 3baba70 commit 81b0dbf

8 files changed

+70
-1
lines changed

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

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

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

910
/**
1011
* A dataflow sink for constant password vulnerabilities. That is,
@@ -65,3 +66,10 @@ private class RnCryptorPasswordSink extends ConstantPasswordSink {
6566
)
6667
}
6768
}
69+
70+
/**
71+
* A sink defined in a CSV model.
72+
*/
73+
private class DefaultPasswordSink extends ConstantPasswordSink {
74+
DefaultPasswordSink() { sinkNode(this, "encryption-password") }
75+
}

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

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

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

910
/**
1011
* A dataflow sink for constant salt vulnerabilities. That is,
@@ -57,3 +58,10 @@ private class RnCryptorSaltSink extends ConstantSaltSink {
5758
)
5859
}
5960
}
61+
62+
/**
63+
* A sink defined in a CSV model.
64+
*/
65+
private class DefaultSaltSink extends ConstantSaltSink {
66+
DefaultSaltSink() { sinkNode(this, "encryption-salt") }
67+
}

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

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

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

910
/**
1011
* A dataflow source for ECB encryption vulnerabilities. That is,
@@ -77,3 +78,10 @@ private class Blowfish extends EcbEncryptionSink {
7778
)
7879
}
7980
}
81+
82+
/**
83+
* A sink defined in a CSV model.
84+
*/
85+
private class DefaultEcbEncryptionSink extends EcbEncryptionSink {
86+
DefaultEcbEncryptionSink() { sinkNode(this, "encryption-block-mode") }
87+
}

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

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

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

910
/**
1011
* A dataflow sink for hard-coded encryption key vulnerabilities. That is,
@@ -59,3 +60,10 @@ private class RnCryptorEncryptionKeySink extends HardcodedEncryptionKeySink {
5960
)
6061
}
6162
}
63+
64+
/**
65+
* A sink defined in a CSV model.
66+
*/
67+
private class DefaultEncryptionKeySink extends HardcodedEncryptionKeySink {
68+
DefaultEncryptionKeySink() { sinkNode(this, "encryption-key") }
69+
}

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

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

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

910
/**
1011
* A dataflow source for insecure TLS configuration vulnerabilities. That is,
@@ -59,3 +60,10 @@ private class NsUrlTlsExtensionsSink extends InsecureTlsExtensionsSink {
5960
)
6061
}
6162
}
63+
64+
/**
65+
* A sink defined in a CSV model.
66+
*/
67+
private class DefaultTlsExtensionsSink extends InsecureTlsExtensionsSink {
68+
DefaultTlsExtensionsSink() { sinkNode(this, "tls-protocol-version") }
69+
}

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

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

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

910
/**
1011
* A dataflow sink for insufficient hash interation vulnerabilities. That is,
@@ -43,3 +44,10 @@ private class CryptoSwiftHashIterationsSink extends InsufficientHashIterationsSi
4344
)
4445
}
4546
}
47+
48+
/**
49+
* A sink defined in a CSV model.
50+
*/
51+
private class DefaultHashIterationsSink extends InsufficientHashIterationsSink {
52+
DefaultHashIterationsSink() { sinkNode(this, "hash-iteration-count") }
53+
}

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

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

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

910
/**
1011
* A dataflow sink for static initialization vector vulnerabilities. That is,
@@ -58,3 +59,10 @@ private class RnCryptorInitializationVectorSink extends StaticInitializationVect
5859
)
5960
}
6061
}
62+
63+
/**
64+
* A sink defined in a CSV model.
65+
*/
66+
private class DefaultInitializationVectorSink extends StaticInitializationVectorSink {
67+
DefaultInitializationVectorSink() { sinkNode(this, "encryption-iv") }
68+
}

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import swift
77
import codeql.swift.security.SensitiveExprs
88
import codeql.swift.dataflow.DataFlow
9+
import codeql.swift.dataflow.ExternalFlow
910

1011
/**
11-
* A dataflow sink for weak sensitive data hashing vulnerabilities.
12+
* A dataflow sink for weak sensitive data hashing vulnerabilities. That is,
13+
* a `DataFlow::Node` that is passed into a weak hashing function.
1214
*/
1315
abstract class WeakSensitiveDataHashingSink extends DataFlow::Node {
1416
/**
@@ -51,3 +53,14 @@ private class CryptoSwiftWeakHashingSink extends WeakSensitiveDataHashingSink {
5153

5254
override string getAlgorithm() { result = algorithm }
5355
}
56+
57+
/**
58+
* A sink defined in a CSV model.
59+
*/
60+
private class DefaultWeakHashingSink extends WeakSensitiveDataHashingSink {
61+
string algorithm;
62+
63+
DefaultWeakHashingSink() { sinkNode(this, "weak-hash-input-" + algorithm) }
64+
65+
override string getAlgorithm() { result = algorithm }
66+
}

0 commit comments

Comments
 (0)