This type of attack leverages the use of tags or variables from a
formatted configuration data to cause buffer overflow. The attacker crafts a
malicious HTML page or configuration file that includes oversized strings,
thus causing an overflow.
Attack Execution Flow
The attacker modifies a tag or variable from a
formatted configuration data. For instance she
changes it to an oversized string.
The target program consumes the data modified by
the attacker without prior boundary checking. As a
consequence, a buffer overflow occurs and at worst
remote code execution may follow.
Attack Prerequisites
The target program consumes user-controllable data in the form of tags or
variables.
The target program does not perform sufficient boundary checking.
Typical Likelihood of Exploit
Likelihood: High
Methods of Attack
Injection
Examples-Instances
Description
A buffer overflow vulnerability exists in the Yamaha MidiPlug that can
be accessed via a Text variable found in an EMBED tag.
Related Vulnerabilities
CVE-1999-0946
Description
A buffer overflow in Exim allows local users to gain root privileges
by providing a long :include: option in a .forward file.
Related Vulnerabilities
CVE-1999-0971
Attacker Skills or Knowledge Required
Skill or Knowledge Level: Low
An attacker can simply overflow a buffer by inserting a long string
into an attacker-modifiable injection vector. The result can be a
DoS.
Skill or Knowledge Level: High
Exploiting a buffer overflow to inject malicious code into the stack
of a software system or even the heap can require a higher skill
level.
Probing Techniques
An attacker can modify the variables and tag exposed by the target
program.
An attacker can automate the probing by input injection with script or
automated tools.
Solutions and Mitigations
Use a language or compiler that performs automatic bounds checking.
Use an abstraction library to abstract away risky APIs. Not a complete
solution.
Compiler-based canary mechanisms such as StackGuard, ProPolice and the
Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
checking, it is not a complete solution.
Use OS-level preventative functionality. Not a complete solution.
Do not trust input data from user. Validate all user input.
Attack Motivation-Consequences
Denial of Service
Run Arbitrary Code
Information Leakage
Data Modification
Injection Vector
The variable or tag exposed to the user.
Payload
The new value of the variable or tag (could be an oversized string).
Activation Zone
When the function returns control to the main program, it jumps to the return
address portion of the stack frame. Unfortunately that return address may have
been overwritten by the overflowed buffer and the address may contain a call to
a privileged command or to a malicious code.
Vision and Technical Leadership provided by Cigital, Inc.
This Web site is hosted by The MITRE Corporation.
Copyright 2009, The MITRE Corporation. CAPEC and the CAPEC logo are trademarks of The MITRE Corporation.