|
|
Ya es un viejo tópico afirmar que el comercio electrónico no termina de despegar. ¿Razones? Variadas y de distinto peso, pero siempre se esgrime aquella de la seguridad y el temor al fraude. Conscientes de ello, los administradores web y diseñadores de aplicaciones dedican sus esfuerzos y sus noches desveladas a fortificar los servidores, crear sistemas de comercio a prueba de balas y rodear en definitiva a los portales de venta de una sólida atmósfera de confianza, que induzca al cliente potencial a realizar sus compras y gastar su dinero. Por supuesto, el problema de fondo no es sólo el prestar una imagen de seguridad, ya que también está en juego la información privada de los usuarios y de la propia compañía. Se trata de asegurar todas las posibles vías de ataque para prevenir la filtración de información, evitar ataques de denegación de servicio o la modificación de ficheros en servidores de la compañía, incluyendo su página principal que constituye su escaparate de cara al mundo y cuya alteración atentaría seriamente contra su imagen tan arduamente buscada. Con el fin de lograr estos objetivos de seguridad se contratan expertos en redes, se instalan cortafuegos que sólo permiten el tráfico HTTP, se crean políticas de seguridad para toda la empresa, a menudo se contrata una auditoría externa, para finalmente sentirse satisfecho con la seguridad global de la aplicación de comercio electrónico desarrollada. No hay servicios de comunicaciones inútiles a la escucha, se han utilizado las últimas versiones de los programas de bases de datos con todos los parches de última hora correctamente aplicados, todos los permisos están cuidadosamente controlados, las listas de control de acceso están protegidas, los logs registran cada movimiento sospechoso, los antivirus están actualizados al minuto, en definitiva, todas las puertas traseras y ratoneras están cerradas. Pero, ¿y la puerta principal? ¿No se habrá quedado abierta una rendija? Aunque parezca mentira, muchos ataques se producen por la puerta grande, explotando errores tan obvios que ni los expertos de seguridad pensaban que existieran o no miraron allí. Se trata de olvidos o descuidos en la programación en HTML, JavaScript, CGI o ASP. Muchos autores de programas CGI no son conscientes de que el programa que escriben se ejecutará en un servidor web, al que accederá cualquier persona, introduciendo cualquier entrada, incluso las insospechadas, para las que el programa no está preparado. El no tener la seguridad en mente a la hora de escribir un programa CGI puede tener consecuencias desastrosas, pero ¿cuántos programadores están preparados para el reto? Un descuido puede permitir a un atacante desde husmear el contenido de archivos del servidor, hasta ganar acceso de root al sistema. Dentro del capítulo de CGI, se puede incluir a los server side includes (SSI), que permiten toda clase de trucos para llegar a ejecutar comandos arbitrarios o listar el contenido de ficheros seleccionados. Se puede encontrar información completa sobre este tipo de ataques en Seguridad en CGI, tema que ya ha sido tratado en profundidad. Por otro lado, los formularios en páginas web, tal vez debido a su sencillez de programación en HTML, resultan muy descuidados. Es común que no se comprueben las longitudes de las entradas de los usuarios, que a veces, deliberadamente o no, serán inusualmente largas, provocando un fallo del programa que debe procesarlas. En el caso peor, se podría producir una caída del servicio, mientras que en otros casos se puede revelar indeseadamente el nombre de algún programa o fichero de datos, información sobre la estructura de directorio del servidor, software utilizado, y otros datos parecidos, valiosos en manos de un atacante. Otros errores comunes consisten en la utilización de campos ocultos en formularios para asignar el valor a ciertas variables, como por ejemplo el precio de un producto. La manipulación del formulario y de dicha etiqueta resulta trivial usando cualquier editor de texto, permitiendo que cualquier atacante pueda modificar a voluntad el valor de estos campos. Se puede encontrar un ejemplo tal en la tienda de ejemplo de la sección de cookies. Si no existe una programación en el servidor que contraste los datos enviados desde el formulario, la tienda virtual puede experimentar grandes pérdidas. Los URL también pueden explotarse para obtener información acerca de otros usuarios. A menudo, los programadores creen que una página sólo será accedida desde otra página anterior o un formulario. Pero un atacante podría crear un URL, escribiéndolo directamente en la ventana de dirección, e intentar acceder a algún recurso protegido, como los datos de clientes o bases de datos confidenciales, saltándose los filtros del programador, que se encontraban en la página anterior. Nuevos ataques están proviniendo de la utilización de etiquetas en JavaScript, que se incluyen en ventanas que se presentan al cliente en un formulario para que introduzca un texto, como su opinión acerca de un producto o la descripción de las características de un cierto artículo. El usuario medio introducirá texto sencillo, mientras que el avezado intentará introducir incluso programas en JavaScript, que a veces pueden llegar a ejecutarse en la página web del comercio cuando la visite el siguiente cliente. Un truco común en este caso es la petición al siguiente usuario de su login y password, que confiado los introduce sin reservas, pasando así a ser conocidos por el atacante. En resumen, existe toda una serie de ataques ingeniosos basados exclusivamente en la web, que no hacen uso de sofisticadas herramientas de hacking, ni requieren grandes recursos computacionales, ni explotan características de protocolos de difícil conocimiento. Utilizan la puerta grande. Se llevan a cabo rellenando formularios y escribiendo los URL de manera ingeniosa. La única herramienta que precisan es un navegador. Por lo tanto, pasan a través de todos los controles estándar de filtrado de paquetes y de control de contenido, al ser ataques disfrazados tras el tráfico web convencional. Cuando se diseña una aplicación web sofisticada también deben tenerse en cuenta estos agujeros, aunque se hayan cerrado todas las otras pequeñas puertas traseras. Recuerde, de nada le sirve tapar las ratoneras si se deja abierta la puerta principal. Publicado en el Boletín del Criptonomicón #55.
Se pueden leer otros artículos desde la página principal de Susurros desde la Cripta.
Si consideras que este artículo puede interesarle a alguien que conozcas, puedes enviárselo por correo electrónico. No tienes más que indicar la dirección del destinatario, el asunto y tu nombre. Copyright © 1997-1999 Gonzalo Álvarez Marañón, CSIC. Todos los derechos reservados. Criptonomicón es un servicio ofrecido libremente desde el Instituto de Física Aplicada del CSIC. Para información sobre privacidad, por favor consulte la declaración de política sobre privacidad. Para sugerencias, comentarios o quejas, acuda al libro de visitas. Para contribuir al Criptonomicón, lea la página de contribuciones. |