Estaba leyendo en
kriptopolis sobre la ultima vulnerabilidad en los archivos pdf, basada en la forma que que la función Shellexecute interpreta sus parámetros, y me he puesto a pensar cuantos programas tendrán el mismo fallo o otros similares.
Cuantas veces habremos usado la función ShellExecute sin comprobar que los parámetros que le pasamos son correctos. Por ejemplo, si utilizamos la siguiente función para mandar un email, una función que a simple vista esta libre de sospecha:
Código Delphi
[-]
uses ShellApi;
procedure EnviarCorreo(Correo: String);
begin
ShellExecute(0,nil,PChar('mailto:'+Correo),nil,nil,sw_show);
end;
Y permitimos que el correo sea introducido por el usuario, o como en el caso de los pdf, venga dentro de un archivo y no comprobamos que sea correcto, pueden pasarnos que un gracioso diga que su correo es "test%../../../../../../../../windows/system32/calc.exe".cmd", es decir:
Código Delphi
[-]
EnviarCorreo('test%../../../../../../../../windows/system32/calc.exe".cmd');
¿A que da que pensar?
![Wink](http://www.clubdelphi.com/foros/images/smilies/wink.gif)