Skip to content

Commit 614d6e3

Browse files
committed
feat(dataflow): Add Taint Tracking
1 parent 533c94f commit 614d6e3

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Provides the module `TaintTracking`.
3+
*/
4+
5+
private import bicep
6+
7+
/**
8+
* Provides a library for performing local (intra-procedural) and global
9+
* (inter-procedural) taint-tracking analyses.
10+
*/
11+
module TaintTracking {
12+
import codeql.bicep.dataflow.internal.TaintTrackingImpl::Public
13+
private import codeql.bicep.dataflow.internal.DataFlowImplSpecific
14+
private import codeql.bicep.dataflow.internal.TaintTrackingImplSpecific
15+
private import codeql.dataflow.TaintTracking
16+
private import bicep
17+
import TaintFlowMake<Location, BicepDataFlow, BicepTaintTracking>
18+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import codeql.bicep.dataflow.internal.TaintTrackingPublic as Public
2+
3+
module Private {
4+
import codeql.bicep.dataflow.DataFlow::DataFlow as DataFlow
5+
import codeql.bicep.dataflow.internal.DataFlowImpl as DataFlowInternal
6+
import codeql.bicep.dataflow.internal.TaintTrackingPrivate
7+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* Provides bicep-specific definitions for use in the taint tracking library.
3+
*/
4+
5+
private import codeql.Locations
6+
private import codeql.dataflow.TaintTracking
7+
private import DataFlowImplSpecific
8+
9+
module BicepTaintTracking implements InputSig<Location, BicepDataFlow> {
10+
import TaintTrackingPrivate
11+
}

ql/lib/codeql/bicep/dataflow/internal/TaintTrackingPrivate.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,16 @@ private module Cached {
4545
}
4646

4747
import Cached
48+
49+
import SpeculativeTaintFlow
50+
51+
private module SpeculativeTaintFlow {
52+
private import codeql.bicep.dataflow.internal.DataFlowDispatch as DataFlowDispatch
53+
private import codeql.bicep.dataflow.internal.DataFlowPublic as DataFlowPublic
54+
55+
/**
56+
* Holds if the additional step from `src` to `sink` should be considered in
57+
* speculative taint flow exploration.
58+
*/
59+
predicate speculativeTaintStep(DataFlow::Node src, DataFlow::Node sink) { none() }
60+
}

0 commit comments

Comments
 (0)