Skip to content

Commit b0754d6

Browse files
authored
Merge pull request #83 from advanced-security/knewbury01/extra-cds-sinks-code-injection
Add cap cxn parse sink model and test
2 parents 4aed785 + ec38b0e commit b0754d6

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

javascript/frameworks/cap/lib/advanced_security/javascript/frameworks/cap/CDS.qll

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,13 @@ module CDS {
131131
class CdsFacade extends API::Node {
132132
CdsFacade() { this = API::moduleImport("@sap/cds") }
133133
}
134+
135+
136+
/**
137+
* Methods that parse source strings into a CQL expression
138+
*/
139+
class ParseSink extends DataFlow::Node {
140+
ParseSink() { this = any(CdsFacade cds).getMember("parse").getMember(["expr", "ref", "xpr"]).getACall().getAnArgument() }
141+
}
142+
134143
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
| parseexpr.js:3:27:3:39 | `foo.bar > 9` |
2+
| parseexpr.js:4:26:4:38 | `foo.bar > 9` |
3+
| parseexpr.js:5:26:5:34 | `foo.bar` |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const cds = require("@sap/cds");
2+
3+
let cxn = cds.parse.expr (`foo.bar > 9`)
4+
let xpr = cds.parse.xpr (`foo.bar > 9`)
5+
let ref = cds.parse.ref (`foo.bar`)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import javascript
2+
import advanced_security.javascript.frameworks.cap.CDS
3+
4+
from CDS::ParseSink sink
5+
select sink

0 commit comments

Comments
 (0)