REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object...

13
REFERENCIA DIRECTA INSEGURA A OBJETOS

Transcript of REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object...

Page 1: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

REFERENCIA DIRECTA INSEGURA A OBJETOS

Page 2: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

DEFINICION:

Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una referencia hacia un objeto interno de la aplicación, tales como un fichero, directorio, registro de base de datos, o una clave tal como una URL o un parámetro de formulario Web.

Page 3: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

Un atacante podría manipular este tipo de referencias en la aplicación para acceder a otros objetos sin autorización, a menos que se aplique un control de accesos como medida de prevención.

Page 4: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

ENTORNOS AFECTADOS:

Todos los entornos de desarrollo de aplicaciones de Web son vulnerables presentando referencias a objetos internos de la aplicación.

Page 5: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

VULNERABILIDAD

Muchas aplicaciones presentan a los usuarios referencias a objetos internos. Un atacante podría manipular los parámetros de entrada a la aplicación cambiando estas referencias, saltándose de esta manera un control de accesos incorrectamente desarrollado

Page 6: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

Con frecuencia, estas referencias apuntan a sistemas de ficheros y bases de datos, si bien cualquier otro elemento de la aplicación podría ser vulnerable por un problema de esta categoría.

Page 7: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

EJEMPLO:

En el ejemplo que se presenta a continuación, un atacante puede cambiar el parámetro "cartID" para obtener la información asociada a cualquier "carrito de la compra" de la aplicación.

int cartID = Integer.parseInt( request.getParameter( "cartID" ) ); String query = "SELECT * FROM table WHERE cartID=" + cartID;

Page 8: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

PROTECCION:

La mejor protección es evitar presentar al usuario cualquier referencia directa a un objeto, mediante el uso de un índice, un mapa de referencias indirectas, o cualquier otro método que sea fácil de verificar. Si es necesario utilizar una referencia directa, se deberá comprobar que el usuario está autorizado a usarla antes de hacerlo.

http://www.example.com/application?file=1

Page 9: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

En caso de que sea necesario presentar referencias a elementos de base de datos, hay que asegurarse de que las sentencias SQL y otros mecanismos de acceso a base de datos sólo permiten que se obtengan los registros autorizados:

int cartID = Integer.parseInt( request.getParameter( "cartID" ) ); User user = (User)request.getSession().getAttribute( "user" ); String query = "SELECT * FROM table WHERE cartID=" + cartID + " AND userID=" + user.getID();

Page 10: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.

EJEMPLO DE UN ATAQUE

Page 11: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.
Page 12: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.
Page 13: REFERENCIA DIRECTA INSEGURA A OBJETOS. DEFINICION: Una referencia directa a objetos ("direct object reference") ocurre cuando un programador expone una.