Skip to content

Commit fd763a0

Browse files
committed
JS: Auto-patch diff informed queries
1 parent d8b1d00 commit fd763a0

File tree

71 files changed

+173
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+173
-0
lines changed

javascript/ql/lib/semmle/javascript/security/dataflow/BrokenCryptoAlgorithmQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ module BrokenCryptoAlgorithmConfig implements DataFlow::ConfigSig {
2525
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
2626

2727
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
28+
29+
predicate observeDiffInformedIncrementalMode() { any() }
2830
}
2931

3032
/**

javascript/ql/lib/semmle/javascript/security/dataflow/BuildArtifactLeakQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ module BuildArtifactLeakConfig implements DataFlow::ConfigSig {
3030
contents = DataFlow::ContentSet::anyProperty() and
3131
isSink(node)
3232
}
33+
34+
predicate observeDiffInformedIncrementalMode() { any() }
3335
}
3436

3537
/**

javascript/ql/lib/semmle/javascript/security/dataflow/CleartextLoggingQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ module CleartextLoggingConfig implements DataFlow::ConfigSig {
4141
contents = DataFlow::ContentSet::anyProperty() and
4242
isSink(node)
4343
}
44+
45+
predicate observeDiffInformedIncrementalMode() { any() }
4446
}
4547

4648
/**

javascript/ql/lib/semmle/javascript/security/dataflow/CleartextStorageQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ module ClearTextStorageConfig implements DataFlow::ConfigSig {
2525
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
2626

2727
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
28+
29+
predicate observeDiffInformedIncrementalMode() { any() }
2830
}
2931

3032
module ClearTextStorageFlow = TaintTracking::Global<ClearTextStorageConfig>;

javascript/ql/lib/semmle/javascript/security/dataflow/ClientSideRequestForgeryQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ module ClientSideRequestForgeryConfig implements DataFlow::ConfigSig {
3131
predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) {
3232
isAdditionalRequestForgeryStep(node1, node2)
3333
}
34+
35+
predicate observeDiffInformedIncrementalMode() { any() }
3436
}
3537

3638
/**

javascript/ql/lib/semmle/javascript/security/dataflow/ClientSideUrlRedirectQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ module ClientSideUrlRedirectConfig implements DataFlow::StateConfigSig {
5454
state1 = state2
5555
)
5656
}
57+
58+
predicate observeDiffInformedIncrementalMode() { any() }
5759
}
5860

5961
/**

javascript/ql/lib/semmle/javascript/security/dataflow/CodeInjectionQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ module CodeInjectionConfig implements DataFlow::ConfigSig {
2424
// HTML sanitizers are insufficient protection against code injection
2525
node1 = node2.(HtmlSanitizerCall).getInput()
2626
}
27+
28+
predicate observeDiffInformedIncrementalMode() { any() }
2729
}
2830

2931
/**

javascript/ql/lib/semmle/javascript/security/dataflow/CommandInjectionQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig {
3030
predicate isSink(DataFlow::Node sink) { isSinkWithHighlight(sink, _) }
3131

3232
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
33+
34+
predicate observeDiffInformedIncrementalMode() { any() }
3335
}
3436

3537
/**

javascript/ql/lib/semmle/javascript/security/dataflow/ConditionalBypassQuery.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ module ConditionalBypassConfig implements DataFlow::ConfigSig {
2424
// comparing a tainted expression against a constant gives a tainted result
2525
node2.asExpr().(Comparison).hasOperands(node1.asExpr(), any(ConstantExpr c))
2626
}
27+
28+
predicate observeDiffInformedIncrementalMode() {
29+
// TODO(diff-informed): Manually verify if config can be diff-informed.
30+
// ql/lib/semmle/javascript/security/dataflow/ConditionalBypassQuery.qll:104: Flow call outside 'select' clause
31+
// ql/lib/semmle/javascript/security/dataflow/ConditionalBypassQuery.qll:113: Flow call outside 'select' clause
32+
// ql/lib/semmle/javascript/security/dataflow/ConditionalBypassQuery.qll:115: Flow call outside 'select' clause
33+
none()
34+
}
2735
}
2836

2937
/**

javascript/ql/lib/semmle/javascript/security/dataflow/CorsMisconfigurationForCredentialsQuery.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ module CorsMisconfigurationConfig implements DataFlow::ConfigSig {
2323
node instanceof Sanitizer or
2424
node = TaintTracking::AdHocWhitelistCheckSanitizer::getABarrierNode()
2525
}
26+
27+
predicate observeDiffInformedIncrementalMode() { any() }
2628
}
2729

2830
/**

0 commit comments

Comments
 (0)