Skip to content

Commit 834d35b

Browse files
committed
JS: Port experimental DecompressionBombs to ConfigSig
1 parent 871bc3b commit 834d35b

3 files changed

Lines changed: 220 additions & 361 deletions

File tree

javascript/ql/src/experimental/Security/CWE-522-DecompressionBombs/DecompressionBombs.ql

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,25 @@
1212
*/
1313

1414
import javascript
15-
import DataFlow::PathGraph
1615
import DecompressionBombs
1716

18-
class BombConfiguration extends TaintTracking::Configuration {
19-
BombConfiguration() { this = "DecompressionBombs" }
17+
module DecompressionBombConfig implements DataFlow::ConfigSig {
18+
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
2019

21-
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
20+
predicate isSink(DataFlow::Node sink) { sink instanceof DecompressionBomb::Sink }
2221

23-
override predicate isSink(DataFlow::Node sink) { sink instanceof DecompressionBomb::Sink }
24-
25-
override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
22+
predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) {
2623
exists(DecompressionBomb::AdditionalTaintStep addstep |
2724
addstep.isAdditionalTaintStep(pred, succ)
2825
)
2926
}
3027
}
3128

32-
from BombConfiguration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
33-
where cfg.hasFlowPath(source, sink)
29+
module DecompressionBombFlow = TaintTracking::Global<DecompressionBombConfig>;
30+
31+
import DecompressionBombFlow::PathGraph
32+
33+
from DecompressionBombFlow::PathNode source, DecompressionBombFlow::PathNode sink
34+
where DecompressionBombFlow::flowPath(source, sink)
3435
select sink.getNode(), source, sink, "This Decompression depends on a $@.", source.getNode(),
3536
"potentially untrusted source"

javascript/ql/src/experimental/Security/CWE-522-DecompressionBombs/DecompressionBombs.qll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import javascript
22
import experimental.semmle.javascript.FormParsers
33
import experimental.semmle.javascript.ReadableStream
4-
import DataFlow::PathGraph
54

65
module DecompressionBomb {
76
/**

0 commit comments

Comments
 (0)