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 inotiles a la escucha, se han utilizado las oltimas versiones de los programas de bases de datos con todos los parches de oltima 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 www.iec.csic.es/criptonomicon/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 comon 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 algon 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 www.iec.csic.es/criptonomicon/cookies/tienda.html . 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 algon 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 comon 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 onica 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.
Gonzalo -lvarez Mara_¢n
criptonomicon@iec.csic.es
Bolet¡n Criptonomic¢n #55
http://www.iec.csic.es/criptonomicon