mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
Python: Move experimental TimingAttackAgainstSensitiveInfo to new dataflow API
This commit is contained in:
@@ -15,22 +15,25 @@ import python
|
|||||||
import semmle.python.dataflow.new.DataFlow
|
import semmle.python.dataflow.new.DataFlow
|
||||||
import semmle.python.dataflow.new.TaintTracking
|
import semmle.python.dataflow.new.TaintTracking
|
||||||
import experimental.semmle.python.security.TimingAttack
|
import experimental.semmle.python.security.TimingAttack
|
||||||
import DataFlow::PathGraph
|
import TimingAttackAgainstSensitiveInfoFlow::PathGraph
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A configuration tracing flow from obtaining a client Secret to a unsafe Comparison.
|
* A configuration tracing flow from obtaining a client Secret to a unsafe Comparison.
|
||||||
*/
|
*/
|
||||||
class ClientSuppliedSecretConfig extends TaintTracking::Configuration {
|
private module TimingAttackAgainstSensitiveInfoConfig implements DataFlow::ConfigSig {
|
||||||
ClientSuppliedSecretConfig() { this = "ClientSuppliedSecretConfig" }
|
predicate isSource(DataFlow::Node source) { source instanceof SecretSource }
|
||||||
|
|
||||||
override predicate isSource(DataFlow::Node source) { source instanceof SecretSource }
|
predicate isSink(DataFlow::Node sink) { sink instanceof NonConstantTimeComparisonSink }
|
||||||
|
|
||||||
override predicate isSink(DataFlow::Node sink) { sink instanceof NonConstantTimeComparisonSink }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
from ClientSuppliedSecretConfig config, DataFlow::PathNode source, DataFlow::PathNode sink
|
module TimingAttackAgainstSensitiveInfoFlow =
|
||||||
|
TaintTracking::Global<TimingAttackAgainstSensitiveInfoConfig>;
|
||||||
|
|
||||||
|
from
|
||||||
|
TimingAttackAgainstSensitiveInfoFlow::PathNode source,
|
||||||
|
TimingAttackAgainstSensitiveInfoFlow::PathNode sink
|
||||||
where
|
where
|
||||||
config.hasFlowPath(source, sink) and
|
TimingAttackAgainstSensitiveInfoFlow::flowPath(source, sink) and
|
||||||
(
|
(
|
||||||
source.getNode().(SecretSource).includesUserInput() or
|
source.getNode().(SecretSource).includesUserInput() or
|
||||||
sink.getNode().(NonConstantTimeComparisonSink).includesUserInput()
|
sink.getNode().(NonConstantTimeComparisonSink).includesUserInput()
|
||||||
|
|||||||
Reference in New Issue
Block a user