Qué hacer cuando su empresa no cifra las contraseñas

13

Background

Me han contratado para ayudar a una empresa a mantener su servidor. Trabajo en algunos proyectos menores de PHP, pero también reviso los problemas de rendimiento y, recientemente, escaneo los registros para detectar piratas informáticos.

Estos chicos han estado ejecutando su servidor durante algún tiempo y tienen lo que yo llamaría una aplicación heredada en sus últimas etapas. Utiliza comillas mágicas, variables globales (que permiten que $id se sobrescriba con $_GET['id'] ), usa .htaccess como su única seguridad en algunas instancias, lo que sea. Una pesadilla de seguridad y programación.

Hemos sido hackeados en el pasado, principalmente con inyecciones de SQL, que ejecutaban los comandos SLEEP(99999999) y actuaban como un ataque de DOS. Por suerte no corrieron "pequeñas mesas de bobby",

XKCD: enlace

Así que reescribí sus declaraciones SQL vulnerables de mysql_query() (no mysqli) a las transacciones de PDO. También estoy analizando las consultas para SLEEP y UNION , que no usamos, pero las inyecciones tienen. Hasta ahora, todo bien.

Último número

Recientemente, nos han dicho que los registros están cambiando en la base de datos para los usuarios, como sus direcciones de correo electrónico a las que presumiblemente hacen los spammers.

Me di cuenta de que sus columnas no tenían una columna last_modified , por lo que ni siquiera pudimos saber cuándo se estaban cambiando, por no hablar de quién. Agregué esa columna, pero eso es apenas un primer paso.

Cuando estaba mirando esta tabla, noté que las contraseñas no tenían sal ni estaban ocultas, solo se guardaban como texto sin formato.

Comunicación del cliente

¿Cómo puedo acercarme a ellos sobre toda la situación, como contratista, sin agitar mis brazos como un loco? ¿Algún consejo? Estaba pensando en un enfoque tranquilo,

    ISSUE #1
        Synopsis
        Why this is an issue
        What can happen if this is not fixed
        Suggested fix

    ISSUE #2
        Synopsis
        Why this is an issue
        What can happen if this is not fixed
        Suggested fix
        
    
pregunta bafromca 04.02.2014 - 19:14

4 respuestas

15

El enfoque tranquilo que sugieres sería el mejor. Señalando que cuando estos datos se exponen, la mayoría de los usuarios serán vulnerables al robo de identidad debido a la reutilización de la contraseña. Este sería un buen momento para señalar que este es el mismo problema que afectó a Target (suponiendo que la empresa no es Target). Y su gerente debería ser bastante receptivo a cambiar esto.

En lo que respecta a la legalidad de los datos, no creo que el nombre de usuario / las contraseñas se consideren lo mismo que los datos de CC, la información personal, etc. Aunque podría depender de la información que tenga para sus usuarios. No soy un abogado y estos aspectos se incluirían mejor en su revelación y deberían ser llevados al departamento legal de su compañía para determinar los aspectos legales.

enlace

Y tienes este XKCD para ayudarte también:

    
respondido por el Schleis 04.02.2014 - 19:48
4

Realmente depende de la audiencia a la que intenta acercarse con esto. He trabajado en compañías con graves problemas de seguridad, como usted dice, pero se negaron a escucharlo hasta que se lo mostré.

Un enfoque, si es factible, es juntar básicamente lo que se pretende hacer, así como detallar lo que posiblemente ya haya ocurrido en estos hacks. Si su audiencia no es técnica, probablemente necesite señalar el costo de negocios que pueden tener estos compromisos. Obviamente, las cuentas pirateadas reducen la credibilidad en su sistema y el valor percibido por el cliente de su producto. Sin mencionar que un sistema comprometido con contraseñas de texto sin formato y direcciones de correo electrónico para los usuarios puede causar un efecto de ondulación grave.

Lo siguiente que debes hacer, si es posible, es probarlo. Si puede soportar este sistema en un entorno de prueba, hágalo. Luego demuestre frente a ellos el tipo de impacto que puede tener en el sistema desde el lado del cliente de la aplicación. Incluso con la gente de tecnología, esto ha demostrado ser bastante convincente para mí (aunque en general no actuaron en mis casos).

Por supuesto, como usted dijo, necesita explicar si se deben tomar medidas y una estimación del esfuerzo para lograrlo. Les ayudará a justificar el costo, aunque algunos lugares simplemente no se preocuparán de todos modos. Al menos puedes despejar tu conciencia y seguir adelante sabiendo que lo intentaste.

    
respondido por el Rig 04.02.2014 - 21:01
2

Si, como usted dice, ha sido contratado para mantener su servidor, seguramente este contrato debe incluir en las tareas de descripción del trabajo, como garantizar la integridad, seguridad y disponibilidad del sistema operativo, el software de las aplicaciones y todos los datos, etc. Si hay un indicio vago que el contrato espera (y lo responsabiliza) para asegurarse de que el servidor esté seguro, no perdería el tiempo en armar los casos de negocios y solo haré un buen trabajo asegurándome de que los problemas se solucionen. una copia de seguridad antes y después, manteniendo un historial de versiones de los cambios en su código).

No esperaría que un cambio como este tomara más de una mañana de trabajo y si le preguntan en qué ha dedicado su tiempo a trabajar, entonces puede llevar un diario para explicar y justificar sus acciones. Siempre que esté trabajando dentro del alcance de su contrato, no debería haber problemas aquí. En ocasiones, volverse loco por la seguridad frente a quienes toman decisiones causa pánico o, en el peor de los casos, crea una oportunidad para que ellos digan que no les importan esos problemas, así que no lo solucione. Mientras tanto, el contrato aún lo responsabiliza en el caso de ¡un incumplimiento! Quizás este no sea siempre el enfoque más amigable para los negocios, pero mi ética profesional no me permitiría dejar las contraseñas no cifradas en ningún sistema del que haya sido responsable alguna vez de que haya llegado a mi atención.

Por experiencia personal, cuando comienzo a trabajar para un nuevo empleador o cliente, discutir situaciones y expectativas por adelantado puede ahorrarle mucho estrés, por ejemplo: si encuentro algún problema de seguridad que pueda solucionar es ¿Te alegra que siga adelante y complete este trabajo sin acudir a ti todas las veces, solo notificándote de posibles violaciones o incidentes? Casi siempre dicen que sí, porque desde su punto de vista no les interesa preocuparse por la seguridad o las cosas de la computadora, ¡es por eso que lo contrataron! Quizás esto no responda a la pregunta de la forma que esperaba, pero espero que sirva para reflexionar. ¡Te deseo lo mejor y espero que el problema se solucione!

    
respondido por el richhallstoke 07.02.2014 - 13:52
0

Seguramente si ya se está produciendo un cambio en la dirección de correo electrónico del cliente, y eso se considera un problema, la capacidad de cambiar las contraseñas también es un problema.

Ahora, si ha asegurado la base de datos lo suficiente para evitar que esto ocurra en el futuro, entonces la posibilidad de que alguien pueda editar la contraseña del usuario se soluciona de manera similar y solo tiene que considerar si alguien puede leer la contraseña ahora.

Por supuesto, si pueden, o si (en el caso del poco probable ) que no haya asegurado totalmente la base de datos, entonces seguramente se debe cifrar las contraseñas. ¿Cómo hacerlo? Simplemente colóquelo en el mismo contexto que el problema "tener direcciones de correo electrónico actualizadas". Si esto requiere que la aplicación cambie, y si ese es un problema "demasiado difícil" es otro tema que debe plantearse con ellos. Mire el código y vea cuánto costará cambiarlo antes de aplicarles la solución sugerida.

    
respondido por el gbjbaanb 07.02.2014 - 16:00

Lea otras preguntas en las etiquetas