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