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:
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