"Joe Rogers" joe@cromulence.com
Cromulence (CROMU)
This CB, given a list of nodes and edges as input, calculates the nodes in the shortest path from a given starting node to a given ending node.
The CB accepts three commands: - Send Nodes: Allows the user to input a set of nodes - Send Edges: Allows the user to input a set of edges - Run SPT: Instructs the program to calculate the shortest path from a starting to an ending node
Upon completion of the SPT calculation, a list of nodes is sent back to the user.
The CB has a limit to the number of nodes that it will accept. However, this limit is enforced on each use of the "Send Nodes" command rather than on the total of all nodes sent to the program. While this doesn't cause a problem for the SPT algorithm itself, it does cause a problem for the resulting shortest path list of nodes. The CB uses an unsigned 8-bit integer to store the total number of nodes in the SPT and uses this to calculate the size of a memory allocation call. If the number of nodes in the SPT overflows this integer, too little storage will be allocated creating a buffer underwrite condition.
Incorrect buffer size calculation leading to a buffer underwrite
CWE-124 Buffer Underwrite ('Buffer Underflow') CWE-131 Incorrect Calculation of Buffer Size
The heap-based buffer underwrite allows control of the linked-list of edges that have been sent to the CB. By controlling the list's pointers, it's possible to cause a block of stack memory to be placed on the list of free blocks for later reallocation. Then, when that next allocation occurs, data is written to the stack allowing overwrite of critical stack contents including the return address of main().
The difficulty in setting up this sequence of events is with the lookaside table used by the library malloc function. In order to be sure the correct block of previously free'd memory is used for the subsequent allocation, the size of the freed block must be carefully controlled. And since this size is part of the heap metadata, when the fake block of stack-based memory is freed, it must have correct metadata. Fortunately, main() has a stack-based counter variable which limits the number of commands that can be sent to the CB. By sending exactly the right number of previous commands and positioning the freed block correctly, the stack-based block can be freed into the correct lookaside bucket for later re-use by the pov.
The Subjective Quantifications for this vulnerability are:
Discovering - Medium Proving - Hard Fixing - Easy
Round | Source | Destination | Result | POV | Analysis | Video |
---|---|---|---|---|---|---|
17 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
17 | DeepRed | CSDS | Failed POV | POV | Watch | |
17 | DeepRed | Disekt | Failed POV | POV | Watch | |
17 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
17 | DeepRed | Shellphish | Failed POV | POV | Watch | |
17 | DeepRed | TECHx | Failed POV | POV | Watch | |
17 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
17 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
17 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
17 | ForAllSecure | Disekt | Failed POV | POV | Watch | |
17 | ForAllSecure | Shellphish | Failed POV | POV | Watch | |
17 | ForAllSecure | TECHx | Failed POV | POV | Watch | |
18 | CodeJitsu | Disekt | Failed POV through defenses | POV | Watch | |
18 | CodeJitsu | Shellphish | Failed POV through defenses | POV | Watch | |
18 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
18 | CSDS | DeepRed | Failed POV | POV | Watch | |
18 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
18 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
18 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
18 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
18 | DeepRed | CSDS | Failed POV | POV | Watch | |
18 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
18 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
18 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
18 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
18 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
18 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
18 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
18 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
19 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
19 | CSDS | DeepRed | Failed POV | POV | Watch | |
19 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
19 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
19 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
19 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
19 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
19 | DeepRed | CSDS | Failed POV | POV | Watch | |
19 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
19 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
19 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
19 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
19 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
19 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
19 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
19 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
19 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
19 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
20 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
20 | CSDS | DeepRed | Failed POV | POV | Watch | |
20 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
20 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
20 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
20 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
20 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
20 | DeepRed | CSDS | Failed POV | POV | Watch | |
20 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
20 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
20 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
20 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
20 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
20 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
20 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
20 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
20 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
20 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
21 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
21 | CSDS | DeepRed | Failed POV | POV | Watch | |
21 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
21 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
21 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
21 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
21 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
21 | DeepRed | CSDS | Failed POV | POV | Watch | |
21 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
21 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
21 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
21 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
21 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
21 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
21 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
21 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
21 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
21 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
22 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
22 | DeepRed | CSDS | Failed POV | POV | Watch | |
22 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
22 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
22 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
22 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
22 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
22 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
22 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
22 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
22 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
22 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
23 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
23 | CSDS | DeepRed | Failed POV | POV | Watch | |
23 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
23 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
23 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
23 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
23 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
23 | DeepRed | CSDS | Failed POV | POV | Watch | |
23 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
23 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
23 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
23 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
23 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
23 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
23 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
23 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
23 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
23 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
24 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
24 | CSDS | DeepRed | Failed POV | POV | Watch | |
24 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
24 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
24 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
24 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
24 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
24 | DeepRed | CSDS | Failed POV | POV | Watch | |
24 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
24 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
24 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
24 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
24 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
24 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
24 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
24 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
24 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
24 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
25 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
25 | CSDS | DeepRed | Failed POV | POV | Watch | |
25 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
25 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
25 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
25 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
25 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
25 | DeepRed | CSDS | Failed POV | POV | Watch | |
25 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
25 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
25 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
25 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
25 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
25 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
25 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
25 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
25 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
25 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
26 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
26 | CSDS | DeepRed | Failed POV | POV | Watch | |
26 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
26 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
26 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
26 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
26 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
26 | DeepRed | CSDS | Failed POV | POV | Watch | |
26 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
26 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
26 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
26 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
26 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
26 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
26 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
26 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
26 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
26 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
27 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
27 | CSDS | DeepRed | Failed POV | POV | Watch | |
27 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
27 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
27 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
27 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
27 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
27 | DeepRed | CSDS | Failed POV | POV | Watch | |
27 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
27 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
27 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
27 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
27 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
27 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
27 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
27 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
27 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
27 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
28 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
28 | CSDS | DeepRed | Failed POV | POV | Watch | |
28 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
28 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
28 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
28 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
28 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
28 | DeepRed | CSDS | Failed POV | POV | Watch | |
28 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
28 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
28 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
28 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
28 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
28 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
28 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
28 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
28 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
28 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
29 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
29 | CSDS | DeepRed | Failed POV | POV | Watch | |
29 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
29 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
29 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
29 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
29 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
29 | DeepRed | CSDS | Failed POV | POV | Watch | |
29 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
29 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
29 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
29 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
29 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
29 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
29 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
29 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
29 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
29 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch | |
30 | CSDS | CodeJitsu | Failed POV | POV | Watch | |
30 | CSDS | DeepRed | Failed POV | POV | Watch | |
30 | CSDS | Disekt | Failed POV through defenses | POV | Watch | |
30 | CSDS | ForAllSecure | Failed POV | POV | Watch | |
30 | CSDS | Shellphish | Failed POV through defenses | POV | Watch | |
30 | CSDS | TECHx | Failed POV through defenses | POV | Watch | |
30 | DeepRed | CodeJitsu | Failed POV | POV | Watch | |
30 | DeepRed | CSDS | Failed POV | POV | Watch | |
30 | DeepRed | Disekt | Failed POV through defenses | POV | Watch | |
30 | DeepRed | ForAllSecure | Failed POV | POV | Watch | |
30 | DeepRed | Shellphish | Failed POV through defenses | POV | Watch | |
30 | DeepRed | TECHx | Failed POV through defenses | POV | Watch | |
30 | ForAllSecure | CodeJitsu | Failed POV | POV | Watch | |
30 | ForAllSecure | CSDS | Failed POV | POV | Watch | |
30 | ForAllSecure | DeepRed | Failed POV | POV | Watch | |
30 | ForAllSecure | Disekt | Failed POV through defenses | POV | Watch | |
30 | ForAllSecure | Shellphish | Failed POV through defenses | POV | Watch | |
30 | ForAllSecure | TECHx | Failed POV through defenses | POV | Watch |
Curated by Lunge Technology, LLC. Questions or comments? Send us email