Skip to content

Commit 46da73c

Browse files
committed
Swift: Add realm path-injection sinks.
1 parent feccd30 commit 46da73c

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,13 @@ private class PathInjectionSinks extends SinkModelCsv {
127127
";DatabasePool;true;init(path:configuration:);;;Argument[0];path-injection",
128128
";DatabaseQueue;true;init(path:configuration:);;;Argument[0];path-injection",
129129
";DatabaseSnapshotPool;true;init(path:configuration:);;;Argument[0];path-injection",
130-
";SerializedDatabase;true;init(path:configuration:defaultLabel:purpose:);;;Argument[0];path-injection"
130+
";SerializedDatabase;true;init(path:configuration:defaultLabel:purpose:);;;Argument[0];path-injection",
131+
// Realm
132+
";Realm.Configuration;true;init(fileURL:inMemoryIdentifier:syncConfiguration:encryptionKey:readOnly:schemaVersion:migrationBlock:deleteRealmIfMigrationNeeded:shouldCompactOnLaunch:objectTypes:);;;Argument[0];path-injection",
133+
";Realm.Configuration;true;init(fileURL:inMemoryIdentifier:syncConfiguration:encryptionKey:readOnly:schemaVersion:migrationBlock:deleteRealmIfMigrationNeeded:shouldCompactOnLaunch:objectTypes:seedFilePath:);;;Argument[0];path-injection",
134+
";Realm.Configuration;true;init(fileURL:inMemoryIdentifier:syncConfiguration:encryptionKey:readOnly:schemaVersion:migrationBlock:deleteRealmIfMigrationNeeded:shouldCompactOnLaunch:objectTypes:seedFilePath:);;;Argument[10];path-injection",
135+
";Realm.Configuration;true;fileURL;;;;path-injection",
136+
";Realm.Configuration;true;seedFilePath;;;;path-injection",
131137
]
132138
}
133139
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
| testPathInjection.swift:314:35:314:35 | remoteUrl | Unexpected result: hasPathInjection=208 |
2+
| testPathInjection.swift:316:40:316:40 | remoteUrl | Unexpected result: hasPathInjection=208 |

swift/ql/test/query-tests/Security/CWE-022/testPathInjection.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,9 +311,9 @@ func test() {
311311
// Realm
312312

313313
_ = Realm.Configuration(fileURL: safeUrl) // GOOD
314-
_ = Realm.Configuration(fileURL: remoteUrl) // BAD [NOT DETECTED]
314+
_ = Realm.Configuration(fileURL: remoteUrl) // BAD
315315
_ = Realm.Configuration(seedFilePath: safeUrl) // GOOD
316-
_ = Realm.Configuration(seedFilePath: remoteUrl) // BAD [NOT DETECTED]
316+
_ = Realm.Configuration(seedFilePath: remoteUrl) // BAD
317317

318318
var config = Realm.Configuration() // GOOD
319319
config.fileURL = safeUrl // GOOD

0 commit comments

Comments
 (0)