Ciber Geek > Seguridad

Seguridad

Javascript y 2 prácticas de (in)seguridad fáciles de evitar

Javascript es amor. Javascript NO es JAVA. Javascript no es pariente de JAVA. Javascript se llama así porque cuando estaba dando sus primeros pasos JAVA era el lenguaje de moda, todo esto por allá por 1995, en definitiva todo una cuestión de marketing.

En éste post quería resaltar 2 errores que veo comúnmente, el primero es hacer validaciones del lado del cliente de datos que no deberían ser visibles por un tercero, y el segundo esta relacionado con el acceso al sistema y la carga de librerías que no son estrictamente necesarias, recuerden que el código Javascript puede ser leído fácilmente por el usuario.

No expondrás tu validación al cliente

Ojo, se puede validar, por ejemplo, que el campo para el nombre solo contenga letras, espacios y guiones, ése tipo de validaciones están bien. El problema es cuando se valida un código el cual se obtiene a través de una función que toma datos conocidos por el cliente. La realidad es que esto es malo y no se debe hacer, pero si lo van a hacer, por lo menos no incluyan también el script de validación del lado del cliente.

Ejemplo. El sitio web de un municipio pide el DNI del dueño de una casa, la dirección de ésta y un código de validación para acceder a más datos sobre la misma, datos que solo deberían ser accesibles por el dueño. El código de validación se calcula a través del DNI y la dirección. La función realiza algunas modificaciones al DNI y la dirección y luego algunas cuentas mágicas y devuelve un código, que es el código de validación.

La práctica anterior es cuestionable, no deberían utilizarla si de verdad se preocupan por la confidencialidad de los datos, pero si la utilizan lo peor que pueden hacer es calcular el código de validación del lado del cliente utilizando Javascript, no, por favor, no. Y ojo, Javascript no tiene la culpa.

Incluir Javascript antes de autenticar al usuario

Este error ocurre a menudo, pasa mas o menos así.

  1. Un usuario intenta acceder a una función que requiere que éste esté logueado.
  2. El sistema muestra la pantalla de logueo.
  3. El sistema ya cargó los scripts del área “protegida”.

Esto no siempre está mal, el problema surge cuando los scripts exponen información sobre funciones internas del sistema, por ejemplo, llamadas AJAX a ciertos puntos de la aplicación. El peor escenario ocurre cuando esas URLs no verifican que el usuario esté autenticado y tenga la autorización correspondiente para ejecutar la acción.

Ojo, no está mal cargar librerías/scripts genéricos, como por ejemplo jQuery, pero de todos modos siempre intenten solo incluir lo justo y necesario para que el sitio permita realizar las acciones que corresponden. Y siempre verifiquen que el usuario esté autenticado y autorizado (que tiene el rol adecuado) para ejecutar una acción.

Relacionado con este ultimo punto, también se debe deshabilitar el listado de directorios en el servidor, ya que de nada sirve no incluir los archivos si alguien pueden navegar la estructura de archivos para llegar a ellos.

Conclusión

Si están dando sus primeros pasos en el desarrollo de aplicaciones, o si es la primera vez que van a hacer una aplicación que maneja datos sensibles, o si simplemente les interesa el tema, deberían darse una vuelta por el sitio de OWASP, donde van a encontrar mucha información útil sobre seguridad y buenas practicas para el desarrollo de aplicaciones seguras.

El viagra en las universidades argentinas

No todo el mundo está al tanto del funcionamiento de Google, para los que no lo saben, el buscador determina la posición de una página mediante diferentes señales, una de estas son los links que se dirigen hacia un sitio, y también otros métodos como por ejemplo redirecciones, algo que seguramente han visto al entrar a una página y que rápidamente son dirigidos a otra.

¿Qué tienen que ver las universidades y el viagra?

Si leyeron el párrafo anterior, se darán cuenta que para posicionar un sitio en una búsqueda hay que conseguir enlaces o links hacia el sitio que quieren que aparezca en las primeras posiciones de los resultados de Google, y es aquí donde las universidades y muchos otros sitios son víctimas de hackers que aplican técnicas de SEO (optimización para motores de búsqueda) para ganar terreno en los resultados del buscador. El viagra es un negocio muy redituable, y es por eso que muchos de los sitios que son víctimas de estos ataques son utilizados para posicionar paginas relacionadas con este producto.

Ojo, el viagra no es el único, se puede encontrar de todo, incluso links para posicionar una página de videos sexuales de famosos, alquileres baratos, y todo lo que se les pueda ocurrir, y aún más cosas que no se imaginan.

¿Por qué universidades?

Si bien es tema de discusión, se cree que los links provenientes de sitios con dominios .edu (instituciones educativas) o .gov (instituciones gubernamentales) tienen más peso que los provenientes de otros sitios. De todos modos, todos los sitios son atacados por igual, pero obviamente estas instituciones son el blanco más deseado, y aparentemente son más vulnerables que lo esperado, al menos por mi.

Lista de ejemplo de instituciones vulneradas

Entre las víctimas de estos ataques se encuentran las siguientes instituciones:

  • Facultad de Ciencias Médicas de la Universidad Nacional del Litoral
  • Portal Educativo de La Rioja (IDUKAY)
  • Universidad Nacional de Mar del Plata
  • Facultad de Psicología de la Universidad Nacional de Córdoba
  • Facultad de Turismo de la Universidad Nacional de Comahue
  • Facultad de Ciencias de la Salud de la Universidad Nacional de Entre Ríos
  • Universidad de San Pablo – Tucumán
  • Centro de Investigación Cinematográfica
  • Colegio Provincial Técnico Nº 748
  • Facultad Regional Santa Fe de la Universidad Tecnologica Nacional

La lista sigue, y mucho, además hay que considerar que también hay sitios hackeados que fueron utilizados para fines diferentes.

universidad vulnerada viagra

Ejemplo de una pagina de una universidad

¿Cómo encontrar los sitios comprometidos?

El método que utilicé para hacerlo es “artesanal”, ya que en realidad se utiliza a Google como herramienta, sí, el mismo Google que los hackers intentan burlar.

Esta es la búsqueda realizada para encontrar los sitios:

https://www.google.com/search?q=inurl:.edu.ar+viagra

Pueden cambiar “viagra” por otras palabras usadas comúnmente, por ejemplo: cialis, rolex, etcétera.

Entro al sitio y parece limpio

Ajá, es la idea, campeón. Hay muchas técnicas para esconder los enlaces, en las más simple se esconde dentro del contenido del sitio, y no es posible verlo a simple vista, pero si se pueden ver al urgar el código fuente de la pagina, para verlo puede ir en su navegador a “Ver código de fuente” o CTRL+U en Chrome.

Ok, mire el código de fuente y no hay nada raro. Bien, Sherlock. La otra técnica para ocultar información es un poco más compleja, comúnmente conocida como Cloaking en el rubro del posicionamiento, y se basa en mostrar contenido diferente según quien mira la pagina, de éste modo el sitio que ve Google es diferente al que ven los usuarios.

¿Cómo se si están usando Cloaking?

Hay una forma difícil y efectiva, y otra simple pero no tan efectiva, les voy a enseñar la forma simple, y en verdad es muy simple, solo basta con realizar la búsqueda que compartimos más arriba y en vez de clickear en el titulo del resultado, hacer clic en el caret o triangulo que se encuentra al final de la URL del mismo,  se van a desplegar una o dos opciones, ustedes deben seleccionar la que dice “Cached”, y de ese modo pueden ver el sitio como lo vió Google cuando entró a ver el contenido del sitio.

cache de google

Ver un sitio como lo ve Google

¿Qué importancia tiene esto?

Bueno, la lista es larga pero que tengan acceso para agregar estos enlaces muchas veces significa que también lo tienen para acceder a información privada de los integrantes (alumnos, docentes) de la institución.

Ojo, eso no es lo peor, muchos de estos sitios redireccionan a paginas que pueden explotar vulnerabilidades en su navegador o plugins (Flash, Java), y ahí la cosa se torna más peligrosa, ya que si el atacante consigue acceso a su PC, bueno, ustedes sabrán el riesgo que eso implica.

Phishing, otras veces se utilizan estos ataques para crear paginas que son utilizadas en esos mails falsos que llegan diciendo ser alguien que no son, en general personificando bancos e instituciones financieras, y en las que al acceder a un enlace nos piden información o instalan algo en nuestra PC.

¿Los políticos consumen viagra?

Que pregunta, lo dejo a su criterio:

https://www.google.com/search?q=inurl:.gov.ar+viagra

 

viagra google .gov.ar

Apaa, pero mirá vos!

Una aclaración final

Mas de uno en este momento debe estar odiando a aquellos que hacen SEO, pero tengan en cuenta que estas son técnicas conocidas como BlackHat SEO, y no son aprobadas por la mayoría de la comunidad, y menos que menos por Google, que se encuentra activamente luchando contra estos trucos para burlar sus algoritmos. Si Google lo encuentra usando estas estrategias, tarde o temprano van a ser penalizados, lo malo es que penaliza tanto al sitio donde se encuentran los enlaces como al sitio al cual se dirigen éstos.

Cuidado con el SPAM de Pro.Cre.Auto

Pro.Cre.Auto es un programa del gobierno argentino que tiene como objetivo fomentar el consumo de vehículos o facilitar el acceso a los mismos, como quieran. Lo importante en éste caso es el hecho de que se ésta enviando una gran cantidad de SPAM que, cuando menos, tiene como objetivo recolectar datos personales, incluyendo números de teléfono. Hay que aclarar que no es el gobierno argentino el que está enviando el SPAM, sino que se trata de alguien que se avivo para sacar obtener información y ganar algunos pesos con referidos o vendiendo bases de datos de emails y teléfonos.

El siguiente es el email en cuestión, esperemos nunca lo vean y su filtro anti-SPAM sea capaz de reconocerlo.

spam pro.cre.auto

Los spammers tienen mucho tiempo entre manos

El sitio al que llevan (plan-nacional.org) tiene 2 formularios, uno para completar con datos para el pseudo-plan Pro.Cre.Auto, y el otro para “conectarse” a DirecTV, si en ése punto no tuvieron dudas de que ésto no es algo oficial, el whois capaz los termine de convencer, y el hecho de que el sitio está hosteado en un servidor compartido en DonWeb.

whois plan-nacional.org

¿Quién es?

Lo que termina de confirmar de que no se trata de un sitio oficial, pero ésto, aunque simple, no es algo que las personas que menos conocen puedan advertir. Así que bueno, vayan advirtiéndole a su tío que hace clic en cuanto link encuentra.

Los mails

Recibí 2 mail en 2 cuentas diferentes con el mismo contenido, el asunto era “Actualice sus datos para poder ser contactado” y el contenido era el siguiente:

Estimado,

Recuerde actualizar sus datos, para poder ser contactado cuando se lancen las proximas entregas de descuentos y beneficios en Plan Nacional Autos para Todos

Para ingresar haga click aqui: plan-nacional.org

No dejes pasar la oportunidad!

Plan Nacional

Obviamente la intención es captar la atención de aquellos que quieren entrar al plan Pro.Cre.Auto. Esperemos no lo logren, por lo pronto voy a informar a DonWeb.

Los robots de los buscadores y la seguridad por oscuridad

Robots, bots, spiders, arañas, pueden llamarlos como quieran, pero lo importante es saber que se trata del software que usan los buscadores y otros sitios para recorrer la web e indexar contenido. Por ende, son a quienes les debemos “decir” que es lo que queremos, o no, indexen de nuestro sitio, y para eso existe el archivo robots.txt.

r2d2 bot

R2D2 tiene mas onda que Asimo

Imagen robada sin escrúpulos de Wikipedia. shhh, botones.

¿Qué hace el archivo robots.txt?

El archivo robots.txt debe ser accesible públicamente y estar ubicado en directorio raíz del host, ej: cibergeek.com/robots.txt. Debido a que es su naturaleza publica muchas veces son indexados por Google y publicados en los resultados.

Éste archivo contiene directivas para indicarle a los bots que es lo que pueden, y no pueden, indexar. Y si bien según el W3C en el archivo robots.txt solo sé debe indicar que es lo que NO se deben indexar mediante la directiva “Disallow”, Google admite la directiva “Allow”, que justamente tiene permite indicar que es lo que se puede indexar.

Además de indicar que, también permite indicar el quien, ya que la directiva “User-agent” tiene como finalidad crear diferentes reglas para los diferentes bots.

¿Hay alguna otra forma de hacerlo?

El archivo robots.txt muchas veces tiene problemas con la granularidad, y es por eso que se puede complementar con la etiqueta “meta“, la cual permite definir en cada pagina si ésta puede ser indexada, además de detalles extras, como si los links de la pagina se deben seguir.

<meta name=”robots” content=”noindex, nofollow”>

Como se habrán dado cuenta, la etiqueta “meta” tiene la desventaja de poder estar presente solo en paginas HTML, y no en recursos como archivos PDF, SQL, etc, y aquí entran en juego los encabezados HTTP (HTTP Headers), los cuales permiten mediante el agregado del elemento “X-Robots-Tag”, incluir en la respuesta del servidor la misma información que se puede especificar en la etiqueta de HTML.

Pueden leer un poco sobre el uso de las etiquetas en la web de NoArchive.

La seguridad por oscuridad y el archivo robots.txt son incompatibles

Y por fin llegamos a lo que quería remarcar, tal vez la introducción fue un poco larga, pero bueno, quería añadir un poco de contexto. El concepto de seguridad por oscuridad se basa en una decisión de diseño que lleva a pensar que la información, si bien es vulnerable, el desconocimiento de la ubicación de la misma le da su seguridad.

Y es cuando el webmaster (que palabra vieja), quiere asegurarse de que los buscadores no indexen la misma cuando la terminan haciendo vulnerable, ya que el archivo robots.txt termina indicando como acceder a eso que muchas veces no se quiere hacer publico, aunque también sirve para evitar que los buscadores indexen paginas que no tienen ningún contenido o las cuales consumen muchos recursos como para ser servidas a un bot.

Por todo esto es que si quieren que algún archivo o servicio que no sea accesible al publico, lo que no deben hacer es incluirlo en el robots.txt. Sino que deben utilizar otras estrategias, como agregar el elemento X-Robots-Tags a los headers, o mejor aún, si se trata de información sensible, no enlazarla desde ningún lado, además de setear correctamente los Headers HTTP, si bien deberían situarla detrás de algún tipo de autenticación, al menos. No vaya a ser que mediante una búsqueda terminen quedando expuestos esos archivos que se esforzaron en ocultar, un Streisand Effect en potencia.

Conclusión (TL;DR)

Si querés ocultar algo y evitar que lo indexen, no lo agregues en el archivo robots.txt. Usá las demás alternativas.

Protegiendo tus directorios en Apache, ideal para WordPress

Empecemos con un viejo y conocido refrán: “En casa de herrero, cuchillo de palo“. Dicho esto, seguimos con el post, y estén atentos, ya que esto los puede salvar de un aprieto, y es super sencillo, tan sencillo que hasta yo podría hacerlo.

Evitar el listado de directorios en Apache

Seguramente estén pensando ¿A mi para que me sirve esto? Y bueno, no hay mejor forma que ejemplificando, por ejemplo, existen plugins en WordPress que almacenan archivos en la carpeta “wp-content/uploads”, muchos de estos son plugins que hacen backups o permiten descargar listados de emails, así que con un poco de Google-fu pueden llegar a encontrar muchas cosas.

http://www.google.com/#q=%22Index+of+%2Fwp-content%2Fuploads%2Fbackupbuddy_backups%22+zip

Pero los backups son aburridos y no se pueden vender, mejor vamos por un listado de mails.

https://www.google.com/search?q=”Index%20of%20%2Fwp-content%2Fuploads%2Fwp-mailinglist”%20csv

E incluso hay cosas mas interesantes, por ejemplo, el otro día encontré un sitio que vende un plugin para ayudar con el marketing de WordPress a 65 dolares y lo tiene disponible para descargar gratis en la carpeta “uploads”. Les avisé hace mas de una semana y ni siquiera intentaron bajarlo, o al menos cambiar la configuración. Pero bueno, ahora vamos a lo importante, como evitarlo.

Hay 2 formas de evitarlo (en Apache):

  1. Una forma de hacerlo, mas “artesanal”, es poniendo un archivo con el nombre “index.html” (sin comillas) en el directorio en el que quiere evitar el listado. El archivo puede estar vacío.
  2. La forma que recomendaría un sysadmin es utilizando el archivo “.htaccess” y agregando la siguiente linea:

    Options -Indexes
     

    Esto deshabilita el listado en el directorio en donde se encuentra el  archivo “.htaccess” y en todos los subdirectorios que se encuentren por debajo. 

listado directorio apache

Otra forma de hacerlo es con la directiva “IndexIgnore, por ejemplo, para que no se listen los archivos PHP se usa así “IndexIgnore *.php“, si quieren bloquear todo solo escriben el asterisco (wildcard).

Si tienen acceso al archivos de configuración de Apache esto también se puede hacer desde ahí, pero no es la situación mas habitual.

Pagina 2 de 3123