add a code injection sink for JSDOM when "runScripts" is set to "dangerously"

This commit is contained in:
Erik Krogh Kristensen
2020-11-03 14:29:00 +01:00
parent e6e4a485c8
commit 120faf9d1a
4 changed files with 32 additions and 0 deletions

View File

@@ -138,4 +138,17 @@ module CodeInjection {
API::moduleImport("module").getInstance().getMember("_compile").getACall().getArgument(0)
}
}
/**
* A construction of a JSDOM object (server side DOM), where scripts are allowed.
*/
class JSDomWithRunScripts extends Sink {
JSDomWithRunScripts() {
exists(DataFlow::NewNode instance |
instance = API::moduleImport("jsdom").getMember("JSDOM").getInstance().getAnImmediateUse() and
this = instance.getArgument(0) and
instance.getOptionArgument(1, "runScripts").mayHaveStringValue("dangerously")
)
}
}
}