Hace 16 años | Por --45803-- a thedailywtf.com
Publicado hace 16 años por --45803-- a thedailywtf.com

El autor de esta página ha descubierto un enorme agujero en la página oficial de seguridad federal de Oklahoma. Se accedía a la base de datos directamente desde la URL, dando así acceso a todos los datos personales de miles de personas de dicho estado. Esto fue así durante 3 años. Tras el aviso de este navegante, se ha corregido el error. La traducción del artículo en #1

Comentarios

D

Una de las reglas de oro de la programación es no confiar en tus "inputs". Esto es especialmente válido si tus "inputs" provienen de usuarios, y aún más si proviene del público anónimo, del público general. Aparentemente, los desarrolladores del Oklahoma Department of Corrections no asistieron a clase el día que se explicaba esta máxima. En una decisión incomprensible, no sólamente creyeron a pies juntillas las sugerencias anónimas en sus páginas web, sino que llegaron a ejecutarlas ciegamente y mostrar los resultados de ello.

Los resultados de esta forma tan negligente de desarrollo ha traído consecuencias bastante serias: los nombers, direcciones y números de la seguridad social de decenas de miles de residentes de Oklahoma han sido públicos por espacio de al menos trea años. Hasta ayer, 13 de Abril de 2008, cualquiera con un explorador y el conocimiento de la página 1 de SQL For Dummies (SQL para tontos) podría haber accedido (y seguramente cambiado) los datos de las bases de datos del DOC que hubiera querido. Tardé un minuto entero para darme cuenta de cómo podría bajarme 10597 registros, (números de seguridad social incluídos) de su página web.

Como el titulo del último pantallazo indica, los registros corresponden al "Sexual and Violent Offender Registry". Para quienes no sepan de qué se trata, el SVOR es un registro de autoridad federal y ámbito público diseñado para protegernos de los horrendos especímenes de la humanidad, etiquetando a aquellos sobre quienes ha sido dictada una sentencia de "Sexual Offender" (SO). Estos registro, también nos protegen de los desafortunados ofensores, como pueden ser, adolescentes fornicadores, niños que tomaron fotos de sí mismos desnudos y quienes mean en lugares públicos. Pero me estoy desviando. Oklahoma no sólo ha hecho público los números de la seguridad social de ese tipo de delincuentes, sino de todos los delincuentes en su sistema. Un inocente link en las páginas del SVOR lo hacía posible

Aquellos que estén mínimamente familiarizados con la sentencia SQL SELECT entenderán el sentido del link. La absurdamente larga URL contenía la consulta que se realizaba en BBDD y que se mostraba en la página web. La SELECT ambién incluía ciertas columnas que no se mostraban tales como "número de la seguridad social" y "fecha de nacimiento" e incluso poseía diferentes condiciones para asegurar que sólamente los registros activos aparecían en la respuesta. No se necesita mucho conocimiento sobre SQL para mostrar "social_security_number" en lugar de "doc_number", eliminar las condiciones y crear una URL como la siguiente:

Como respuesta, la URL devolvió un archivo de 7MB con 10597 registros, como se ve en el primer pantallazo. Es el sueño de cualquier ladrón de identidades, especialmente de cualquiera que haya aprendido ataques contra registros de SO. A tenor de los comentarios que hay en el código HTML de la página, nadie sabe cuántos pueden haberse colado en el sistema desde el 3 de Febrero de 2005.
Después de desubrir el problema (gracias al lector AJ, que lo señaló con cierta reticencia), me pasé todo un día estudiando cómo introducirme en el DOC's call tree. Finalmente llegué hasta George Floyd y le expliqué lo mala idea que era poner una consulta SQL como parámetro de entrada. Afortunadamente, no me acusó por hackear su página web. Por el contrario, pareció apreciar mi comentario y me prometió que pasaría los detalles a sus desarrolladores.
Al día siguiente, tanto el SVOR como el Registro de delincuentes se encontraban caídos en "tareas de mantenimiento rutinario". Perfecto, pensé. Han descubierto un agujero de seguridad en el que ponerse a trabajar. Me lelvé una sorpresa cuando en el mencionado link todavía existía la SQL en la URL, aunque el parámetro "social_security_number" no devolvía el número de la seguridad social. Tardé 10 segundos en encontrar la forma de saltarme su solución. Esta URL ligeramente modificada me devolvió los 10597 números de la seguridad social de nuevo:
¿Notasteis alguna diferencia? Esta vez usé "Social_security_number" en lugar de "social_security_number". Los brillantes desarrolladores de código solucionaron el problema sustituyendo la "s" minúscula por "S" mayúscula. Claramente, no tenían ni idea de por qué era tan malo dejar libre acceso a una SELECT en sus bases de datos.
Envié otro mail a George, explicándole esta vez el problema más detelladamente, anotando en negrita mayúsculas y color rojo que la página se debería deshabilitar inmediatamente. También le demostré el poder de la tabla "ALL_TABLES", los contenidos de una interesante tabla llamada MSD_MONTHLY_MEDICAL_ACTIVITY y de qué forma se podía mostrar su información para que todo el mundo la viera.
Eso, aparentemente, les hizo reaccionar. Poco después, el sitio volvió a estar caído en mantenimientos rutinarios. Supongo que no les acababa de hacer gracia que sus datos se pudieran mostrar por todo Internet.

(Gracias a tryasta por la traducción)