Seguridad en la web no confíes en el usuario

3
Seguridad en Sitios Web No confíes en el Usuario Carlos R. Soriano López Escuela de Computación, Facultad de Ingeniería Universidad Don Bosco Soyapango, San Salvador, El Salvador [email protected] AbstractEste artículo presenta cómo las vulnerabilidades pueden ser detectadas y explotadas del lado del usuario sin tener acceso físico al servidor que aloja el Sitio o Sistema Web. KeywordsSeguridad;Web;Usuario I. INTRODUCCIÓN En la era de la información y de las comodidades en línea” la personas con acceso a internet tienden a buscar información, entretenerse, comunicarse y hasta realizar transacciones financieras en “La Red de redes”. Por esta razón las empresas y cualquier persona que desee ganar dinero por internet debe tener presencia en esta a través de sitios web para promocionarse u ofrecer servicios en línea a sus clientes a través de portales para acceder a esta audiencia masiva. Pero hay que tomar precauciones y medidas de seguridad en nuestro fron-enden internet ya que el visitante no siempre tiene propósitos benignos. II. EL PUNTO DE VISTA DE NUESTRO ATACANTE A. ¿Qué obtiene al vulnerar el sitio/sistema? Los atacantes pueden tener distintos propósitos como: (1) Obtener información sensible de la empresa o usuario, (2) dañar la imagen del sitio/empresa (3) e inclusive por diversión o reconocimiento. B. ¿Cómo vulnera mi seguridad? La forma en que los atacantes vulneran nuestra seguridad pueden ser tan simples como (1) enviar información sin encriptar, (2) no tomar en cuenta los valores por defecto en las entradas del usuario ó (3) no validar que la entrada del usuario sea un valor permitido. III. MÉTODOS DE ATAQUE COMUNES La mayoría de ataques pueden ser realizados por personas con conocimientos medios de informática, aunque actualmente existen herramientas automatizadas que permiten a cualquier usuario con conocimientos básicos realizarlo. Es importante tener conocimiento de estos métodos de ataques para poder prevenirlos: A. SQL Injection(SLQi) Consiste en la inyección de código SQL en la información que envía el usuario hacia el servidor logrando obtener, insertar ó modificar la información directamente a la base de datos que usa el sistema/sitio. B. Exploits Exploit (del inglés to exploit, „explotar‟ o „aprovechar‟) es una pieza de software, fragmento de datos o secuencia de comandos y/o acciones, utilizada con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo[1]. Este ataque es mucho más fácil cuando se usa un CMS o sistemas Open Source o en los que se tiene acceso al código fuente, ya que es posible usar ingeniería inversa ver las fallas que pueda tener; agregando que existe una amplia base de datos donde explican las vulnerabilidades específicas de estos. Igualmente la “prueba y error” al inducir mal funcionamientos en el sistema y detectar las vulnerabilidades similar al método XSS a ciegas. C. Robo de Cookies Una forma de suplantar la identidad o tener acceso de otra persona en un sitio o plataforma web es usando las cookies de ese usuario y usarlas como nuestras; así el servidor nos identificará como el usuario al que se le obtuvo la cookie (el impacto puede ser muy grande si se suplanta al administrador del sitio). Para lograr robar las cookies se pueden usar varios métodos entre los cuales están: (1) acceso a la PC del usuario, (2) usar técnicas de “spoofingpara interceptar el tráfico de la red y obtener las cookies, (3) usar técnicas de XSS para obtener las cookies remotamente; entre otras. D. Cross-Site Scripting (XSS) XSS, del inglés Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas web vistas por el usuario código JavaScript o en otro lenguaje script similar (ej: VBScript), evitando medidas de control. [2]. Existen 3 métodos de XSS: 1) Indirecto: se logra al cambiar parámetros en cualquier dato que pueda ser manipulable por el usuario como y sea usado por la aplicación web: (1) campos ocultos

Transcript of Seguridad en la web no confíes en el usuario

Page 1: Seguridad en la web   no confíes en el usuario

Seguridad en Sitios Web No confíes en el Usuario

Carlos R. Soriano López

Escuela de Computación, Facultad de Ingeniería

Universidad Don Bosco

Soyapango, San Salvador, El Salvador

[email protected]

Abstract—Este artículo presenta cómo las vulnerabilidades

pueden ser detectadas y explotadas del lado del usuario sin tener

acceso físico al servidor que aloja el Sitio o Sistema Web.

Keywords—Seguridad;Web;Usuario

I. INTRODUCCIÓN

En la era de la información y de las “comodidades en línea” la personas con acceso a internet tienden a buscar información, entretenerse, comunicarse y hasta realizar transacciones financieras en “La Red de redes”. Por esta razón las empresas y cualquier persona que desee ganar dinero por internet debe tener presencia en esta a través de sitios web para promocionarse u ofrecer servicios en línea a sus clientes a través de portales para acceder a esta audiencia masiva. Pero hay que tomar precauciones y medidas de seguridad en nuestro “fron-end” en internet ya que el visitante no siempre tiene propósitos benignos.

II. EL PUNTO DE VISTA DE NUESTRO ATACANTE

A. ¿Qué obtiene al vulnerar el sitio/sistema?

Los atacantes pueden tener distintos propósitos como: (1) Obtener información sensible de la empresa o usuario, (2) dañar la imagen del sitio/empresa (3) e inclusive por diversión o reconocimiento.

B. ¿Cómo vulnera mi seguridad?

La forma en que los atacantes vulneran nuestra seguridad pueden ser tan simples como (1) enviar información sin encriptar, (2) no tomar en cuenta los valores por defecto en las entradas del usuario ó (3) no validar que la entrada del usuario sea un valor permitido.

III. MÉTODOS DE ATAQUE COMUNES

La mayoría de ataques pueden ser realizados por personas con conocimientos medios de informática, aunque actualmente existen herramientas automatizadas que permiten a cualquier usuario con conocimientos básicos realizarlo.

Es importante tener conocimiento de estos métodos de ataques para poder prevenirlos:

A. SQL Injection(SLQi)

Consiste en la inyección de código SQL en la información que envía el usuario hacia el servidor logrando obtener, insertar

ó modificar la información directamente a la base de datos que usa el sistema/sitio.

B. Exploits

Exploit (del inglés to exploit, „explotar‟ o „aprovechar‟) es

una pieza de software, fragmento de datos o secuencia de

comandos y/o acciones, utilizada con el fin de aprovechar una

vulnerabilidad de seguridad de un sistema de información para

conseguir un comportamiento no deseado del mismo[1].

Este ataque es mucho más fácil cuando se usa un CMS o

sistemas Open Source o en los que se tiene acceso al código

fuente, ya que es posible usar ingeniería inversa ver las fallas

que pueda tener; agregando que existe una amplia base de

datos donde explican las vulnerabilidades específicas de estos.

Igualmente la “prueba y error” al inducir mal funcionamientos

en el sistema y detectar las vulnerabilidades similar al método

XSS a ciegas.

C. Robo de Cookies

Una forma de suplantar la identidad o tener acceso de otra persona en un sitio o plataforma web es usando las cookies de ese usuario y usarlas como nuestras; así el servidor nos identificará como el usuario al que se le obtuvo la cookie (el impacto puede ser muy grande si se suplanta al administrador del sitio).

Para lograr robar las cookies se pueden usar varios métodos entre los cuales están: (1) acceso a la PC del usuario, (2) usar técnicas de “spoofing” para interceptar el tráfico de la red y obtener las cookies, (3) usar técnicas de XSS para obtener las cookies remotamente; entre otras.

D. Cross-Site Scripting (XSS)

XSS, del inglés Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas web vistas por el usuario código JavaScript o en otro lenguaje script similar (ej: VBScript), evitando medidas de control. [2].

Existen 3 métodos de XSS:

1) Indirecto: se logra al cambiar parámetros en cualquier dato que pueda ser manipulable por el usuario como y sea usado por la aplicación web: (1) campos ocultos

Page 2: Seguridad en la web   no confíes en el usuario

en formularios, (2) campos de entrada en formularios, (3) parámetros visibles en la URL (método GET), (4) valores de las cookies ó cualquier valor que se transfiera para realizar una acción .

2) Directo: consiste en inyectar código malicioso en la página que se muestra y lograr manipular la aplicación y obtener los datos que el atacante crea relevantes como cookies, IP, etcétera.

3) A ciegas: el atacante lo único que puede observar es el comportamiento de la aplicación a partir del ensayo “prueba y error” variando parámetros y consultas.

E. Ingeniería Social

La Ingeniería social es una de las herramientas más eficaces para lograr romper la seguridad; siendo esta usada por el Maestro de la Ingeniería Social Kevin Mitnick para irrumpir en sistemas “altamente seguros” los cuales dieron suficiente material para libros y producciones cinematográficas de ficción.

Esta técnica mas allá de las técnicas que puedan ser aplicables a Hardware y Software para vulnerar la seguridad considera el punto humano como fallo y la posibilidad que interprete de manera errónea o incumpla las políticas de Seguridad. Manipular a la persona que nos atiende por el teléfono quien también tiene ciertos “privilegios” de información para poder “ayudarnos” e igualmente con la recepcionista en el edificio donde están los servidores puede brindarles una gran cantidad de información y accesos sin necesidad de tener “grandes conocimientos técnicos”.

IV. ESTÁNDARES INTERNACIONALES QUE DAN SOPORTE A

LA SEGURIDAD

Existen varios estándares y marcos de trabajo que ayudan a una correcta implementación de buenas prácticas y controles que permiten asegurar la información, la cual es el principal activo en Internet.

En este artículo mencionaremos solamente uno:

A. ISO/IEC 27002

Anteriormente se denominaba ISO/IEC 17799 publicada en 1995 pero luego de varias revisiones se lanzó en el 2000 como ISO/IEC 27002 .

ISO/IEC 17799 proporciona recomendaciones de las mejores prácticas en la gestión de la seguridad de la información a todos los interesados y responsables en iniciar, implantar o mantener sistemas de gestión de la seguridad de la información. La seguridad de la información se define en el estándar como "la preservación de la confidencialidad (asegurando que sólo quienes estén autorizados pueden acceder a la información), integridad (asegurando que la información y sus métodos de proceso son exactos y completos) y disponibilidad (asegurando que los usuarios autorizados tienen acceso a la información y a sus activos asociados cuando lo requieran)" [3].

V. BUENAS PRÁCTICAS PARA EVITAR Y DETECTAR

VULNERABILIDADES

A. Encriptar Información Sensible

Se debe encriptar la transmisión y almacenamiento de

cualquier información que comprometa la seguridad de una persona o de una empresa minimizando el impacto de cualquier intrusión al obtener datos “indescifrables”. Estos datos no deben ser recuperables, sino mas bien comparar el hash almacenado con el hash del dato que se desea verificar .

B. Mantener el Software y Hardware actualizados

Una vez detectadas vulnerabilidades se deben de crear

parches o versiones corregidas las cuales deben de ser implementadas tan pronto hayan sido aprobadas como estables. Estas vulnerabilidades generalmente son detectadas por “personas ajenas” los cuales son los que ayudan a acrecentar las bases de datos públicas de Exploits.

C. Mantener fuera del área de acceso público que

comprometan la seguridad y privacidad

Varios directorios y archivos deben mantenerse fuera del

alcance de los visitantes, como puede ser el directorio de almacenamiento de archivos subidos ya que pueden subir una Shell (script que permite ejecutar comandos y sentencias) que permita manipular en cierta forma el servidor (si es necesario tener una zona de subidas de archivos, el usuario podrá tener acceso a este descargándolo evitando la ejecución del archivo), el archivo de configuración que contiene las credenciales de acceso a la base de datos u otra API necesaria para el funcionamiento del sitio.

D. Validar los datos ingresados por el usuario

”No confíes en el usuario”; es una buena práctica validar

las entradas del usuario, los valores por defecto que toma una variable al dejarla en blanco, verificar que no esté ingresando código malicioso (XSS); no necesariamente porque pueda ser un posible atacante sino para evitar inconsistencia de datos o los famosos “missing values” que no aportan nada a la información y carecen de sentido para el fin que fueron creados. Una buena forma de validar estas entradas es usando expresiones regulares y agregando un “slash” ( / ) cuando sea detectado código ejecutable dejando este inoperable.

E. Registrar los accesos y acciones del usuario

Es necesario tener datos relevantes para lograr detectar

vulnerabilidades en una etapa temprana, detectar anomalías en el comportamiento de un usuario y/o aplicación y para un análisis forense en el caso que haya sido explotada comprometiendo el Sistema.

Page 3: Seguridad en la web   no confíes en el usuario

F. Mostrar únicamente información relevante de las

tecnologías usadas

Hay cierta información irrelevante para el usuario como:

(1) CMS usado, (2) Tipo de Servidor, (3) Versión del Servidor Web, etc. ; pero también hay información que necesitaría saber para darle tranquilidad el certificados SSL y la empresa que lo valida. El atacante al tener esta información es capaz de buscar en las bases de datos de Exploits para la versión correspondiente y vulnerar la seguridad; por eso no es recomendable mostrar información que el usuario no necesite para usar el sitio/sistema, pero sí hay que tener en cuenta por tema de licenciamientos y reconocimientos de autor por ello hay que buscar la solución más óptima a esta problemática.

G. Realizar Test de Penetración

Es una buena práctica realizar regularmente ataques “con

permiso” para determinar las vulnerabilidades que presenta nuestro sitio/sistema.

Existen suites de software especializadas para este fin que son utilizadas por expertos en seguridad informática e inclusive por los mismos atacantes.

VI. CONCLUSIONES

El usuario/visitante es la razón por la cual se tienen

servicios en la web y se debe ofrecerle una experiencia óptima y darle tranquilidad haciéndole saber que su información está segura y no será malversada; y como organización se tiene el compromiso de cumplirlo eliminando las vulnerabilidades del sistema.

REFERENCIAS

[1] Exploit. (2013, 23 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 18:12, octubre 01, 2013 desde http://es.wikipedia.org/w/index.php?title=Exploit&oldid=70119389.

[2] Cross-site scripting. (2013, 7 de marzo). Wikipedia, La enciclopedia libre. Fecha de consulta: 19:37, octubre 01, 2013 desde http://es.wikipedia.org/w/index.php?title=Cross-site_scripting&oldid=64415763.

[3] ISO/IEC 27002. (2013, 10 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 20:01, octubre 10, 2013 desde http://es.wikipedia.org/w/index.php?title=ISO/IEC_27002&oldid=69536706.