Ver Mensaje Individual
  #15  
Antiguo 04-12-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En ese caso, ya es menos probable. Pero existen posibilidades... no con inyeccion de Sql sino con Buffer Overflow.... El punto es, bueno pa nosotros, exige verdadero esfuerzo hacerle eso al Delphi No es como con C/C++, que de acuerdo a un estudio que vi la semana pasada, el 70-80% de todos los problemas de seguridad de MS se deben a una "caracteristica" del C++ o alguna deficiencia no administrada por parte del programador.

Ahora bien, la tecnica elemental de un overflow es tratar de hacerle tragar a un programa mas datos de los que permite el tipo de datos. Algo casi imposible con Delphi, porque genialmente, es un lenguaje bien tipado. Pero si se le intentase meter una cantidad BRUTAL de datos, tal vez haya experanzas.

Sin embargo, el punto es que un atacante no se quedara eternamente intentando un unico esquema. El codigo que se esboza aqui es mas tipico de una aplicacion Web y de hecho, de un programador ASP/VB, porque en Delphi uno hace mas comunmente lo de Roman.

En ese caso, el ataque se moveria mas por el lado de intentar crackear la aplicacion. Pero eso es un "poquito" mas sofisticado y seria mas bien tema de otra discusion...

El punto final es que no es bueno confiar en las entradas de datos (A proposito...otra forma de injeccion es intentar fastidiar el programa injectando un archivo con datos basuras y cosas asi.. razon por la que archivos planos o XML se deberian chequear contra un esquema.... obviamente depende del grado del riesgo) y se debe como minimo, tener mascaras de entrada. Contra un servicio Web o un sitios Web, se debe extremar el cuidado porque es mucho mas facil automatizar los ataques (por ejemplo, un script que intente varias sequencias de Injeccion y para un servidor Web no funiona *tan simplemente* el anular al 3 intento, por su naturaleza desconectada).

Tambien se debe anular la practica de logearse contra la base de datos como administrador. ESPECIALMENTE con Sql Server es MORTAL. De hecho, si veo que la aplicacion esta hecha en ASP.NET/ASP tengo un enorme chance de que use Acces o Sql Server. Asi que contra una entrada de datos desprotegida, se hace algo como meterle un comentario e hacer una llamada a un procedimiento especial que tiene Sql Server para AGREGAR USUARIOS AL DOMINIO, Y AL ESTAR COMO SA, ES EL Administrador!. Escalofriante cuando nos lo mostraron en una conferencia de MS!
__________________
El malabarista.
Responder Con Cita