Merge pull request #21898 from geoffw0/swiftflow · github/codeql@34d4e9a · GitHub
Skip to content

Commit 34d4e9a

Browse files
authored
Merge pull request #21898 from geoffw0/swiftflow
Swift: Extend swift/weak-sensitive-data-hashing, swift/weak-password-hashing sinks
2 parents ed8b9c2 + 5c2488e commit 34d4e9a

6 files changed

Lines changed: 286 additions & 121 deletions

File tree

‎swift/ql/lib/codeql/swift/security/WeakPasswordHashingExtensions.qll‎

Lines changed: 22 additions & 0 deletions

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

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@ private class WeakSensitiveDataHashingSinks extends SinkModelCsv {
4040
[
4141
// CryptoKit
4242
";Insecure.MD5;true;hash(data:);;;Argument[0];weak-hash-input-MD5",
43+
";Insecure.MD5;true;hash(bufferPointer:);;;Argument[0];weak-hash-input-MD5",
4344
";Insecure.MD5;true;update(data:);;;Argument[0];weak-hash-input-MD5",
4445
";Insecure.MD5;true;update(bufferPointer:);;;Argument[0];weak-hash-input-MD5",
4546
";Insecure.SHA1;true;hash(data:);;;Argument[0];weak-hash-input-SHA1",
47+
";Insecure.SHA1;true;hash(bufferPointer:);;;Argument[0];weak-hash-input-SHA1",
4648
";Insecure.SHA1;true;update(data:);;;Argument[0];weak-hash-input-SHA1",
4749
";Insecure.SHA1;true;update(bufferPointer:);;;Argument[0];weak-hash-input-SHA1",
4850
// CryptoSwift
@@ -69,10 +71,29 @@ private class WeakSensitiveDataHashingSinks extends SinkModelCsv {
6971
/**
7072
* A sink defined in a CSV model.
7173
*/
72-
private class DefaultWeakSenitiveDataHashingSink extends WeakSensitiveDataHashingSink {
74+
private class DefaultWeakSensitiveDataHashingSink extends WeakSensitiveDataHashingSink {
7375
string algorithm;
7476

75-
DefaultWeakSenitiveDataHashingSink() { sinkNode(this, "weak-hash-input-" + algorithm) }
77+
DefaultWeakSensitiveDataHashingSink() { sinkNode(this, "weak-hash-input-" + algorithm) }
78+
79+
override string getAlgorithm() { result = algorithm }
80+
}
81+
82+
/**
83+
* A sink for weak sensitive data hashing through a call with a metatype qualifier.
84+
*/
85+
private class WeakSensitiveDataHashingMetatypeSink extends WeakSensitiveDataHashingSink {
86+
string algorithm;
87+
88+
WeakSensitiveDataHashingMetatypeSink() {
89+
exists(CallExpr c |
90+
c.getAnArgument().getExpr() = this.asExpr() and
91+
algorithm = ["MD5", "SHA1"] and
92+
c.getQualifier().getType().getFullName() = "Insecure." + algorithm + ["", ".Type"] and
93+
c.getStaticTarget().getName() =
94+
["hash(data:)", "hash(bufferPointer:)", "update(data:)", "update(bufferPointer:)"]
95+
)
96+
}
7697

7798
override string getAlgorithm() { result = algorithm }
7899
}
Lines changed: 4 additions & 0 deletions

0 commit comments

Comments
 (0)