Replies: 1 comment 1 reply
-
|
Hi @Leepay, 👋 When modeling mutations in the JavaScript analysis, we usually add override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
//track the path from Rhs to the object e.g. o.name = n; (n -> o)
exists(DataFlow::PropWrite write_prop|
pred = write_prop.getRhs() and
+ succ = write_prop.getBase().getALocalSource()
)
}Regarding your example, |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
The JavaScript codes are:
And I want to make
nas my source in the TaintTracking::Configuration to find out its flows. So my codeQL query is:But when I run this query, the longest path it can track is "
n(the argument offunc) ->n(in assignmento.name=n) ->o.name=n", which ends ato.name=nand will not markoas a tainted variable.So I override the
isAdditionalTaintSteppredicate like:Now the tracked flows is appended with
oino.name=n. And the current path is "n(the argument offunc) ->n(in assignmento.name=n) ->o.name=n->o(ino.name=n)". However, it still cannot track into the usage ofoin CallNodeconsole.log(o).I also tried the
isAdditionalTaintSteplike:And the tracked path is "
n(the argument offunc) ->n(in assignmento.name=n) ->o(ino.name=n)", still without the CallNodeconsole.log(o)I wonder why does this happen, is it an inner mechanism of codeQL or a mistake of my codeQL query?
Beta Was this translation helpful? Give feedback.
All reactions