Add more defaultAdditionalTaintSteps

This commit is contained in:
Alex Ford
2021-06-23 16:09:25 +01:00
parent 6e5665da8c
commit 957b29b5af

View File

@@ -15,9 +15,23 @@ predicate defaultTaintSanitizer(DataFlow::Node node) { none() }
*/
cached
predicate defaultAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) {
// operation involving `nodeFrom`
exists(CfgNodes::ExprNodes::OperationCfgNode op |
op = nodeTo.asExpr() and
op.getAnOperand() = nodeFrom.asExpr() and
not op.getExpr() instanceof AssignExpr
)
or
// string interpolation of `nodeFrom` into `nodeTo`
exists(CfgNodes::ExprNodes::StringlikeLiteralCfgNode lit, StringInterpolationComponent sic |
lit = nodeTo.asExpr() and
sic = lit.getExpr().getComponent(_) and
sic.getAStmt() = nodeFrom.asExpr().getExpr()
)
or
// element reference from nodeFrom
exists(CfgNodes::ExprNodes::ElementReferenceCfgNode ref |
ref = nodeTo.asExpr() and
ref.getExpr().getReceiver() = nodeFrom.asExpr().getExpr()
)
}