¿Es mi proveedor vulnerable a la inyección de SQL?

4

La compañía para la que trabajo se ha mudado recientemente a un proveedor externo para servicios de nómina. Hicimos una carga inicial de datos de nuestro sistema anterior al nuevo proveedor. Me di cuenta de que nuestros empleados que tienen apóstrofes en sus nombres (O’Riley por ejemplo) ya no estaban emparejándose con otros sistemas. El nuevo proveedor de nómina había eliminado los apóstrofes. Podemos volver a agregar manualmente el apóstrofe a través del front-end basado en web, y ejecutar un informe inmediatamente después de que el cambio muestre el apóstrofe, pero el personaje se elimina al día siguiente.

Cuando pregunté al proveedor de la nómina sobre los caracteres eliminados, se me informó que "el sistema eliminará automáticamente las comillas, ya que son problemáticas en la base de datos". Se recomendó que usáramos el carácter grave (comilla simple hacia atrás) porque se parece a una comilla simple.

Mi pregunta es la siguiente: ¿La incapacidad para manejar las cotizaciones (simple o doble) en una base de datos indicativa de vulnerabilidad a la inyección de SQL y existe una forma segura y legal de probar o refutar esta vulnerabilidad?

Este es un sistema de nómina y tengo dudas para intentar descubrir alguna vulnerabilidad en el sistema en vivo y no tengo acceso a un sistema de prueba.

    
pregunta JSR 05.08.2014 - 19:49
fuente

3 respuestas

4

No he trabajado con sistemas de nómina y no sé cuántos años tiene usted. Sé que a menudo tienen que admitir formatos de datos antiguos, por lo que podría ser que necesiten hacer esto por compatibilidad. Aun así, esto es indicativo de un sistema defectuoso y de una compañía que no tiene los recursos para arreglar su software. No se sigue inmediatamente que es vulnerable a la inyección de SQL. Sin embargo, vale la pena echarle un vistazo.

Está escrito en los contratos que tenemos con los proveedores que permiten una evaluación de seguridad si queremos.

Mi consejo es que les pida la documentación de sus evaluaciones de seguridad y si no está satisfecho, dígales que necesita hacer su propia evaluación de seguridad. A menos que hayan contratado a una empresa externa y tengan un informe completo (más de una página, digamos), y puedan mostrar un historial de evaluaciones y mejoras, entonces probablemente no debería estar satisfecho. Entonces puedes contratar a alguien para que lo haga o hacerlo tú mismo si te sientes cómodo haciendo eso.

    
respondido por el mcgyver5 05.08.2014 - 20:27
fuente
1

No significa necesariamente que sean vulnerables. Es posible que lo hayan eliminado solo por paranoia.

Sin embargo , en mi libro es una mala práctica hacerlo. Estás cambiando el nombre , no es como un identificador donde la restricción de caracteres no importaría demasiado, y ni siquiera significa que estés a salvo.

Por otra parte, el hecho de que se eliminó el día después de cambiarlo sugiere que no se realiza un filtrado en la entrada, sino que tienen un proceso nocturno vulnerable que se rompió debido a la 'y luego alguien lo eliminó.

Estoy de acuerdo en que vale la pena investigar sus prácticas de seguridad. También tenga en cuenta que es mejor descubrir problemas temprano que tarde. Estoy seguro de que, si es necesario, podría volver a migrar desde ese sistema, mientras que en un año un problema que provocó la pérdida de todos los datos de nómina almacenados allí podría no hacerlo.

    
respondido por el Ángel 23.09.2014 - 14:33
fuente
0

Sin embargo, es causa de sospecha grave y, posiblemente, indicativo de otros problemas:

Si el sistema fuera, en este caso, vulnerable a la inyección de SQL, su actualización habría fallado:

UPDATE users SET first_name = '?' WHERE user_id = ?;
UPDATE users SET first_name = 'O'Henry' WHERE user_id = 1; //substituting without escaping

Como puede ver, el analizador de SQL ve first_name = 'O' , pero como Henry no coincide con una palabra de control, generará un error.

    
respondido por el Nicholas Andre 06.08.2014 - 04:44
fuente

Lea otras preguntas en las etiquetas