110 lines
6.7 KiB
YAML
110 lines
6.7 KiB
YAML
unidirectional-drop-abp:
|
|
- command: python src/main.py --model=tests/abp/abp.pml --attacker=drop --chan=AtoB --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: abp resists drop, see https://en.wikipedia.org/wiki/Alternating_bit_protocol
|
|
|
|
bidirectional-drop-abp:
|
|
- command: python src/main.py --model=tests/abp/abp.pml --attacker=drop --chan=AtoB,BtoA --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: abp resists drop, see https://en.wikipedia.org/wiki/Alternating_bit_protocol
|
|
|
|
tcp-phi1-drop-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=drop --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: dropping A's outbound messages alone is insufficient to create a half-open state; B cannot reach Established without receiving from A
|
|
|
|
tcp-phi1-drop-BtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=drop --chan=BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: dropping B's outbound messages prevents B from progressing; A times out back to Closed, no half-open
|
|
|
|
tcp-phi1-drop-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=drop --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: dropping on both directions prevents any handshake progress; neither side reaches Established
|
|
|
|
tcp-phi1-replay-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=replay --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: property violation
|
|
- explanation: replaying A's SYN can drive B into Established via a forged handshake while A returns to Closed, creating a half-open state
|
|
|
|
tcp-phi1-replay-BtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=replay --chan=BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: property violation
|
|
- explanation: replaying B's SYN+ACK can cause A to believe handshake completed; if A then closes, B may remain Established
|
|
|
|
tcp-phi1-replay-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=replay --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: property violation
|
|
- explanation: replaying on both channels gives the attacker maximum ability to manufacture a half-open state
|
|
|
|
tcp-phi1-reorder-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=reorder --chan=AtoN --output=temp.pml --eval --cleanup --mem=2
|
|
- intended: property violation
|
|
- explanation: reordering A's messages (e.g., delivering ACK before SYN) can desynchronize the handshake, leading to half-open
|
|
|
|
tcp-phi1-reorder-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi1.pml --attacker=reorder --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=2
|
|
- intended: property violation
|
|
- explanation: reordering on both channels maximizes desynchronization potential for half-open
|
|
|
|
tcp-phi3-drop-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi3.pml --attacker=drop --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: acceptance cycle
|
|
- explanation: dropping A's messages can cause B to stall indefinitely in SynReceived or similar waiting states
|
|
|
|
tcp-phi3-drop-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi3.pml --attacker=drop --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: acceptance cycle
|
|
- explanation: dropping on both channels can strand both sides in intermediate states with no timeout recovery
|
|
|
|
tcp-phi3-replay-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi3.pml --attacker=replay --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: acceptance cycle
|
|
- explanation: replaying stale messages can trap B in a loop re-processing old handshake messages
|
|
|
|
tcp-phi3-reorder-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi3.pml --attacker=reorder --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=2
|
|
- intended: acceptance cycle
|
|
- explanation: reordering on both channels can desynchronize both sides into permanently mismatched states
|
|
|
|
tcp-phi5-drop-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi5.pml --attacker=drop --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: acceptance cycle
|
|
- explanation: if A's ACK is dropped, B remains stuck in SynReceived with no timeout to recover
|
|
|
|
tcp-phi5-drop-BtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi5.pml --attacker=drop --chan=BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: acceptance cycle
|
|
- explanation: dropping B's SYN+ACK means A never sends ACK, leaving the initiator-side SynReceived unresolved
|
|
|
|
tcp-phi5-replay-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi5.pml --attacker=replay --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: replaying A's messages provides additional ACKs that can help resolve SynReceived
|
|
|
|
tcp-phi5-reorder-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi5.pml --attacker=reorder --chan=AtoN --output=temp.pml --eval --cleanup --mem=2
|
|
- intended: acceptance cycle
|
|
- explanation: reordering can deliver A's SYN after the ACK, confusing B's state machine and trapping it in SynReceived
|
|
|
|
tcp-phi6-drop-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi6.pml --attacker=drop --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: no violation
|
|
- explanation: dropping A's messages while in Closing does not cause A to transition to an unexpected state; A remains in Closing or eventually times out
|
|
|
|
tcp-phi6-replay-AtoN:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi6.pml --attacker=replay --chan=AtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: property violation
|
|
- explanation: replaying a FIN while in Closing could cause a transition to TimeWait instead of the expected Closing or Closed
|
|
|
|
tcp-phi6-replay-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi6.pml --attacker=replay --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=1
|
|
- intended: property violation
|
|
- explanation: replaying on both channels maximizes the chance of injecting an unexpected ACK that transitions Closing to TimeWait, violating the next-state constraint
|
|
|
|
tcp-phi6-reorder-bidirectional:
|
|
- command: python src/main.py --model=tests/tcp/tcp-phi6.pml --attacker=reorder --chan=AtoN,BtoN --output=temp.pml --eval --cleanup --mem=2
|
|
- intended: property violation
|
|
- explanation: reordering close-sequence messages can cause ACK delivery at unexpected times, violating the strict Closing transition property
|