Evitar la manipulación de la base de datos de contraseñas

3

Dado: un usuario malintencionado ha obtenido acceso (raíz) al servidor que aloja la base de datos de contraseñas de una aplicación. Digamos que la aplicación utiliza un mecanismo confiable de hash de contraseñas como bcrypt y la base de datos de contraseñas almacena la información relevante: nombre de usuario, hash, salt, # iteraciones ...

¿Es posible evitar que el usuario malintencionado cree su propio usuario administrador en la base de datos e inicie sesión con éxito en la aplicación con todos los derechos? Presumiblemente podrían INSERTAR a un nuevo usuario administrador en la base de datos con su propia contraseña de bcrypt'ed. Luego podrían iniciar sesión en la aplicación con todos los derechos de administrador.

¿Hay alguna forma de evitar esto o mitigar un ataque de este tipo en la aplicación?

    
pregunta ChaimKut 11.02.2016 - 17:20
fuente

2 respuestas

4

Si solo el servidor de la base de datos está comprometido: sí. Si el servidor de aplicaciones está comprometido: no.

Almacene un HMAC del hash de la contraseña final junto con el hash en sí: SIG = HMAC(hash, secret) .

secret es un valor único que solo conoce el servidor de aplicaciones. Nunca cambia. Al verificar un intento de inicio de sesión, vuelva a calcular el HMAC y compare. De esta manera, el atacante que ha comprometido la base de datos no puede crear o modificar una contraseña (ya que secret solo es conocido por el servidor de aplicaciones).

En la práctica, las cosas siempre son un poco diferentes: si su servidor de base de datos está comprometido, lo más probable es que tenga muchos más problemas.

    
respondido por el marstato 11.02.2016 - 17:30
fuente
-1

En primer lugar, creo que necesitas recopilar evidencia sobre lo que sucedió, porque podría haber sido el resultado del ataque de Inyección de SQL a través de tu aplicación u otra aplicación alojada en el mismo servidor, también podría haber sido el resultado de otra tipo de ataque Revise sus registros de su aplicación, servidor de aplicaciones, servidor de base de datos, incluso sistema operativo. Detecta los usuarios incorrectos en tus bases de datos y elimínalos.

Ahora, te recomiendo las siguientes medidas de seguridad:

  1. Crea un usuario en tus bases de datos para tu aplicación.
  2. Establezca los privilegios correctos para el usuario de su aplicación en su base de datos según lo que su aplicación necesite.
  3. Establezca mecanismos de control de acceso en su aplicación; tal vez un atacante podría aumentar los privilegios en algunas de las funciones de su aplicación para insertar un usuario administrador.
  4. Implementa validaciones de datos de entrada en su aplicación; Si implementa validaciones de datos de entrada, puede evitar los ataques de inyección de SQL u otro tipo de ataques de inyección, como mencionó anteriormente, podría haber sido el resultado de un ataque de inyección de SQL.

Espero que esta información te ayude.

Buena suerte.

    
respondido por el hmrojas.p 08.03.2016 - 19:36
fuente

Lea otras preguntas en las etiquetas