diff --git a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/EndpointFeatures.qll b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/EndpointFeatures.qll index be2eb236c4e..01b14945925 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/EndpointFeatures.qll +++ b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/EndpointFeatures.qll @@ -599,7 +599,7 @@ private module SyntacticUtilities { } /** - * Gets a property initializer value in a an object literal or one of its nested object literals. + * Gets a property initializer value in an object literal or one of its nested object literals. */ Expr getANestedInitializerValue(ObjectExpr o) { exists(Expr init | init = o.getAProperty().getInit().getUnderlyingValue() | @@ -823,7 +823,7 @@ class InputArgumentIndex extends EndpointFeature, TInputArgumentIndex { exists(DataFlow::InvokeNode invk, DataFlow::Node arg, int i | arg = invk.getArgument(i) | result = i + "" and ( - invk.getAnArgument() = endpoint + invk.getArgument(i) = endpoint or SyntacticUtilities::getANestedInitializerValue(arg.asExpr().getUnderlyingValue()).flow() = endpoint diff --git a/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/FeatureValue.expected b/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/FeatureValue.expected index 2e8e24cb223..487fcf65ca3 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/FeatureValue.expected +++ b/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/FeatureValue.expected @@ -17,7 +17,7 @@ | test.js:6:7:6:14 | endpoint | calleeName | f | | test.js:6:7:6:14 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:6:7:6:14 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:6:7:6:14 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:6:7:6:14 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:6:7:6:14 | endpoint | enclosingFunctionName | | | test.js:6:7:6:14 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:7:11:7:18 | endpoint | Callee_AccessPath | f | @@ -28,7 +28,7 @@ | test.js:7:11:7:18 | endpoint | calleeImports | ? lib3 | | test.js:7:11:7:18 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:7:11:7:18 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:7:11:7:18 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:7:11:7:18 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:7:11:7:18 | endpoint | enclosingFunctionName | | | test.js:7:11:7:18 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:8:15:8:22 | endpoint | Callee_AccessPath | f | @@ -39,7 +39,7 @@ | test.js:8:15:8:22 | endpoint | calleeImports | ? lib3 | | test.js:8:15:8:22 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:8:15:8:22 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:8:15:8:22 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:8:15:8:22 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:8:15:8:22 | endpoint | enclosingFunctionName | | | test.js:8:15:8:22 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:9:9:9:16 | endpoint | Callee_AccessPath | o.m | @@ -52,7 +52,7 @@ | test.js:9:9:9:16 | endpoint | calleeName | m | | test.js:9:9:9:16 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:9:9:9:16 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:9:9:9:16 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:9:9:9:16 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:9:9:9:16 | endpoint | enclosingFunctionName | | | test.js:9:9:9:16 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:9:9:9:16 | endpoint | receiverName | o | @@ -64,7 +64,7 @@ | test.js:10:13:10:20 | endpoint | calleeImports | ? lib2 | | test.js:10:13:10:20 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:10:13:10:20 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:10:13:10:20 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:10:13:10:20 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:10:13:10:20 | endpoint | enclosingFunctionName | | | test.js:10:13:10:20 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:11:17:11:24 | endpoint | Callee_AccessPath | o.m | @@ -75,7 +75,7 @@ | test.js:11:17:11:24 | endpoint | calleeImports | ? lib2 | | test.js:11:17:11:24 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:11:17:11:24 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:11:17:11:24 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:11:17:11:24 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:11:17:11:24 | endpoint | enclosingFunctionName | | | test.js:11:17:11:24 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:12:11:12:18 | endpoint | Callee_AccessPath | F | @@ -85,7 +85,7 @@ | test.js:12:11:12:18 | endpoint | calleeImports | lib1 | | test.js:12:11:12:18 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:12:11:12:18 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:12:11:12:18 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:12:11:12:18 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:12:11:12:18 | endpoint | enclosingFunctionName | | | test.js:12:11:12:18 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:13:17:13:24 | endpoint | Callee_AccessPath | o.m().m().m | @@ -98,7 +98,7 @@ | test.js:13:17:13:24 | endpoint | calleeName | m | | test.js:13:17:13:24 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:13:17:13:24 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:13:17:13:24 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:13:17:13:24 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:13:17:13:24 | endpoint | enclosingFunctionName | | | test.js:13:17:13:24 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:14:9:14:16 | endpoint | Callee_AccessPath | f() | @@ -110,7 +110,7 @@ | test.js:14:9:14:16 | endpoint | calleeImports | ? lib3 | | test.js:14:9:14:16 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:14:9:14:16 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:14:9:14:16 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:14:9:14:16 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:14:9:14:16 | endpoint | enclosingFunctionName | | | test.js:14:9:14:16 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:15:12:15:19 | endpoint | Callee_AccessPath | o.?.m | @@ -123,7 +123,7 @@ | test.js:15:12:15:19 | endpoint | calleeName | m | | test.js:15:12:15:19 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:15:12:15:19 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:15:12:15:19 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:15:12:15:19 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:15:12:15:19 | endpoint | enclosingFunctionName | | | test.js:15:12:15:19 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:16:16:16:23 | endpoint | Callee_AccessPath | o.m.?.p.m | @@ -136,7 +136,7 @@ | test.js:16:16:16:23 | endpoint | calleeName | m | | test.js:16:16:16:23 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:16:16:16:23 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:16:16:16:23 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:16:16:16:23 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:16:16:16:23 | endpoint | enclosingFunctionName | | | test.js:16:16:16:23 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:17:15:17:22 | endpoint | Callee_AccessPath | (await p) | @@ -148,7 +148,7 @@ | test.js:17:15:17:22 | endpoint | calleeImports | lib1 | | test.js:17:15:17:22 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:17:15:17:22 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:17:15:17:22 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:17:15:17:22 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:17:15:17:22 | endpoint | enclosingFunctionName | | | test.js:17:15:17:22 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:18:27:18:34 | endpoint | Callee_AccessPath | import(!).bar.baz | @@ -161,7 +161,7 @@ | test.js:18:27:18:34 | endpoint | calleeName | baz | | test.js:18:27:18:34 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:18:27:18:34 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:18:27:18:34 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:18:27:18:34 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:18:27:18:34 | endpoint | enclosingFunctionName | | | test.js:18:27:18:34 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:20:13:20:20 | endpoint | Callee_AccessPath | bar | @@ -174,7 +174,7 @@ | test.js:20:13:20:20 | endpoint | calleeName | bar | | test.js:20:13:20:20 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:20:13:20:20 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:20:13:20:20 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:20:13:20:20 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:20:13:20:20 | endpoint | enclosingFunctionName | | | test.js:20:13:20:20 | endpoint | fileImports | foo lib1 lib2 lib3 | | test.js:22:21:22:28 | endpoint | Input_ArgumentIndex | 0 | @@ -185,6 +185,6 @@ | test.js:22:21:22:28 | endpoint | calleeImports | ? lib2 lib3 | | test.js:22:21:22:28 | endpoint | contextFunctionInterfacesInFile | f(?)\nfoo()\ng()\nm() | | test.js:22:21:22:28 | endpoint | contextSurroundingFunctionParameters | () | -| test.js:22:21:22:28 | endpoint | enclosingFunctionBody | f endpoint f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | +| test.js:22:21:22:28 | endpoint | enclosingFunctionBody | f endpoint 12 f p endpoint f p q endpoint o m endpoint o m p endpoint o m p q endpoint F endpoint o m m m endpoint f endpoint o x m endpoint o m x p m endpoint p endpoint foo bar baz endpoint foo bar endpoint f f o m endpoint | | test.js:22:21:22:28 | endpoint | enclosingFunctionName | | | test.js:22:21:22:28 | endpoint | fileImports | foo lib1 lib2 lib3 | diff --git a/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/test.js b/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/test.js index da7c016ceaa..c9ac63b906f 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/test.js +++ b/javascript/ql/experimental/adaptivethreatmodeling/test/generic_feature_testing/test.js @@ -3,7 +3,7 @@ import * as o from 'lib2'; const f = require('lib3'); (async function () { - f(endpoint); + f(endpoint, 12); f({p: endpoint}); f({p: {q: endpoint}}); o.m(endpoint);