martes, enero 19, 2010

Dangling Cursor Snarfing

Esta técnica debía ser "nueva" sobre noviembre de 2006 cuando David Litchfield publica su paper Dangling Cursor Snarfing: A new Clas of Attack in Oracle.

Hoy veremos el concepto y otro día ya veremos casos concretos. Entre esos ejemplos analizaremos el del paper, pero creo que el autor no fue muy afortunado con el ejemplo propuesto.

No he visto ninguna traducción de la denominación, pero creo que podría ser algo así como "Snarfing de Cursor colgado" (colgado o desconectado).

La idea es esta:

En la organización hay un proceso que lo pueden ejecutar los usuarios (por medio de alguna aplicación) de forma controlada. Este proceso puede ser un procedimiento PL-SQL creado con un usuario privilegiado de Oracle como SYSTEM, SYS, o cualquier otro al que un usuario o aplicación normal no tendría acceso.

La idea es que se les da a los usuarios o aplicaciones permiso de ejecución de ese procedimiento. La aplicación lo ejecuta, pero el mismo procedimiento realiza unas comprobaciones antes de abrir el cursor. Esas comprobaciones son necesarias porque por ejemplo hay que limitar el número de veces que se ejecuta al día, o hay que controlar el perfil del usuario de aplicación que lo ejecuta, etc. etc.

El cursor se construye dinámicamente en tiempo de ejecución y en la SQL participa un argumento que ha recibido el procedimiento por parte de la aplicación. Imaginemos que el dato lo obtiene la aplicación a partir del usuario.

Pues el "Snarfing de Cursor colgado" consiste en lo siguiente:

1.-El usuario malicioso pasa un argumento envenenado al procedimiento que provoca una excepción después de abrir el cursor y antes de que se cierre. Esto hace que el cursor se quede colgado en memoria.

2.-Como el desarrollador no captura la excepción para cerrar el cursor, el cursor sigue en memoria.

3.-El usuario, que es un pillo, sabe que el cursor se ha quedado abierto. Lo busca y bingo!!! Ya puede ejecutarlo sin las comprobaciones previas que el procedimiento realizaba antes de abrir el cursor.

En cuanto veamos unos cuantos ejemplos enseguida veréis lo peligroso que puede ser esto.

Saludos.

No hay comentarios: