"Bryce Kerley" bk@cromulence.co
Cromulence (CROMU)
This service generates charts for numeric data, including horizontal bar charts, sparklines, amd also produces random numbers.
After the PRNG has been seeded, the state chart loses the ability to predict bar chart sizes: this is tainted
mode.
The input format is mostly unsigned 32-bit integers. Integers are always big- endian.
max_value
: Maximum value of a single datumcolumn_count
: Number of columns to use when drawingbar_character
: code point to use as bar (will only use the least-significant 8 bits)Given sparks in the range of 0x2581 to 0x2588 and data 0-7, sparkline mode should output the sparks verbatim.
Given a max_value
of 16, column_count
of 16, a bar_character
of 'X', and data 0, 4, 8, 12, 16, 15, 14:
```
XXXX XXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXX ```
If the column_count
and max_value
are dissimilar, the column length will be truncated to the lower value.
Given max_value
of 16, column_count
of 10, and data 4, 5, 6, 7, and 8:
XX XXX XXX XXXX XXXXX
Given max_value
of 16, column_count
of 32, and the same data:
XXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
Echo repeats 32-bit integers back verbatim.
Seed has no output.
Given a quantity N, noise outputs N - (N % 4) bytes of pseudorandom data.
Replacer has no output.
When the PRNG has been seeded, it multiplies the bar chart lengths by 1, 2, 3, or 4, which can cause a maximum-length bar to overflow.
The second vulnerability exists due to an incorrect allocation size based upon user input. A user supplies the number of sparkles and a buffer is allocated with that size. However in the loop reading the sparkle data sparle count uint32s are read which is 4 times larger than the actually allocated size.
CWE-120 Stack-based Buffer Overflow CWE-122 Heap-based Buffer Overflow
The attacker must find a random seed that allows bars to overflow their buffer.
Curated by Lunge Technology, LLC. Questions or comments? Send us email