Description
Argument Injection or Modification is a specific case of
attack, which belongs to Injection attacks familly.
Modifying or injecting data as arguments the attacker may
lead to very simmilar, often the same results as in other
injection attacks. It plays no difference if the attacker
wants to inject the system command into argument or into any
other part of the code.
Examples
Example 1
Knowing pseudo code of the application the attacker may
guess, what action is required by the application to perform
another one. E.g. what must be done to authorize the
attacker as the administrator.
Reading the code below the attacker doesn't know the
values of $pass and $login. The question is - is there
possiblity of altering value of $authorized not knowing
previously mentioned variables?
$authorized=0;
if($pass = "XXX" and $login = "XXX") { $authorized = 1; }
if($authorized == 1) { admin_panel(); }
If server configuration allows for that, we may try to
pass argument $authorized=1 as input data to application.
E.g. /index.php?user=&pass=&authorized=1
Example 2
If security mechanism doesn't protect data as it should,
e.g. doesn't check the identity of the user and private data
are displayed to him despite of fact they shouldn't, then
such user may try to alter arguments and get access to data
owned by a different user.
E.g. By entering address
http://testsite.com/index.php?invoice=12 user is able to
check one of his invoices. Modifying "invoice" argument,
considering above assumptions, the attacker may try to
access other user's invoices. Usefull to the attacker in
this example would be performing a brute-force attack.
Countermeasures
- validation of the format / expected classes of charachetrs / input/output data size