Skip to content

Commit e6bbfbc

Browse files
committed
Python: TimingAttackAgainstHash (+ new test)
That said, the test is useless; to get a result, I need a comparison against remote input.
1 parent df3d929 commit e6bbfbc

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

python/ql/src/experimental/Security/CWE-208/TimingAttackAgainstHash/TimingAttackAgainstHash.ql

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ private module TimingAttackAgainstHashConfig implements DataFlow::ConfigSig {
2626

2727
predicate isSink(DataFlow::Node sink) { sink instanceof NonConstantTimeComparisonSink }
2828

29-
predicate observeDiffInformedIncrementalMode() {
30-
any() // TODO: Make sure that the location overrides match the query's select clause: Column 5 selects source.getResultType (/Users/d10c/src/semmle-code/ql/python/ql/src/experimental/Security/CWE-208/TimingAttackAgainstHash/TimingAttackAgainstHash.ql@39:3:39:54)
31-
}
29+
predicate observeDiffInformedIncrementalMode() { any() }
3230
}
3331

3432
module TimingAttackAgainstHashFlow = TaintTracking::Global<TimingAttackAgainstHashConfig>;
@@ -39,5 +37,5 @@ from TimingAttackAgainstHashFlow::PathNode source, TimingAttackAgainstHashFlow::
3937
where
4038
TimingAttackAgainstHashFlow::flowPath(source, sink) and
4139
sink.getNode().(NonConstantTimeComparisonSink).includesUserInput()
42-
select sink.getNode(), source, sink, "Timing attack against $@ validation.",
43-
source.getNode().(ProduceCryptoCall).getResultType(), "message"
40+
select sink.getNode(), source, sink, "Timing attack against $@ validation.", source.getNode(),
41+
source.getNode().(ProduceCryptoCall).getResultType() + " message"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
edges
2+
| TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | TimingAttackAgainstHash.py:27:24:27:32 | ControlFlowNode for signature | provenance | |
3+
| TimingAttackAgainstHash.py:26:17:26:41 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | provenance | |
4+
| TimingAttackAgainstHash.py:30:12:30:47 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:37:19:37:48 | ControlFlowNode for sign() | provenance | |
5+
nodes
6+
| TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | semmle.label | ControlFlowNode for signature |
7+
| TimingAttackAgainstHash.py:26:17:26:41 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
8+
| TimingAttackAgainstHash.py:27:24:27:32 | ControlFlowNode for signature | semmle.label | ControlFlowNode for signature |
9+
| TimingAttackAgainstHash.py:30:12:30:47 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
10+
| TimingAttackAgainstHash.py:37:19:37:48 | ControlFlowNode for sign() | semmle.label | ControlFlowNode for sign() |
11+
subpaths
12+
#select
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
experimental/Security/CWE-208/TimingAttackAgainstHash/TimingAttackAgainstHash.ql

0 commit comments

Comments
 (0)