Abstract
Revealing system data or debugging information helps
an adversary learn about the system and form a plan of
attack.
Description
An information leak occurs when system data or
debugging information leaves the program through an
output stream or logging function.
Examples
Example 1:
The following code prints the path environment
variable to the standard error stream:
char* path = getenv("PATH");
...
sprintf(stderr, "cannot find exe on path %s\n", path);
Example 2:
The following code prints an exception to the
standard error stream:
try {
...
} catch (Exception e) {
e.printStackTrace();
}
Depending upon the system configuration, this
information can be dumped to a console, written to a log
file, or exposed to a remote user. In some cases the
error message tells the attacker precisely what sort of
an attack the system will be vulnerable to. For example,
a database error message can reveal that the application
is vulnerable to a SQL injection attack. Other error
messages can reveal more oblique clues about the system.
In the example above, the search path could imply
information about the type of operating system, the
applications installed on the system, and the amount of
care that the administrators have put into configuring
the program.