This is a micro-benchmark that exercises the gzprintf
function in
zlib
version
1.1.3. This version of the zlib library has a bug where calls to
gzprintf
use
a fixed sized buffer that can be overflowed.
Each error class has a warm up phase, and a security expoit. The warm up
phase represent normal use of the gzprintf
function by a program that links in
zlib. In this phase, gzprintf
is called a random number of times with random
arguments and a random choice of 8 format strings. The exploits are listed
below. All exploits are from code discovered on the internet.
Class | Error message | Cause |
---|---|---|
Normal | No exploit | |
Shell exploit | Produces a root shell | Large buffer with shell code |
Crash exploit 1 | Crashes program | large string formatting argument, "%10240s" |
Crash exploit 2 | Crashes program | Large buffer with garbage |