Programación segura

A la hora de hablar de seguridad informática a todos nos viene a la cabeza codificar información, supervisar la red, usar cortafuegos, etc… Sin embargo, solemos olvidar que nuestro sistema puede verse afectado por atacantes que se aprovechan de nuestro propio descuido. Me estoy refiriendo principalmente al código que creamos en las aplicaciones que luego vamos a tener visibles, como es el caso de las aplicaciones web.

Programar sin tener en cuenta unos mínimos estándares de calidad en cuanto a seguridad se refiere, puede ser tan desastroso como descargarse archivos desconocidos sin ser revisados por un antivirus. No hay más que pensar en el siguiente caso:
Supongamos que programamos una aplicación web de un banco que permite obtener los datos de una cuenta corriente a partir del identificador de la cuenta corriente (http://www.bancoChachi.com/aplic/vistaCuenta?id=XXXX). Si no tenemos malicia, lo normal sería programar la recogida de los datos de entrada de la siguiente manera:

String query = "SELECT * FROM cuentas WHERE idCliente='" + request.getParameter("id") +"'";.

Escrito así no parece que haya ningún problema. La consulta está bien formada y no hay nada incorrecto. Pero ¿qué pasa si se accede a la aplicación de esta manera?:

http://www.bancoChachi.com/aplic/vistaCuenta?id=’ or ‘1’=’1

Por si el lector aún no lo ha detectado, al realizar la sustitución nos encontramos con que la condición se cumple siempre, ya que ’1=1’ es cierto. Le estaríamos permitiendo a un atacante la posibilidad de acceder a todas las cuentas corrientes del banco.

Como este caso podemos encontrar cientos. Puede ser abrumador pensar en todos nuestros posibles errores o en la imaginación de un usuario malintencionado (los maleantes siempre van con un paso por delante de la policía). Pero por fortuna existen organizaciones que se dedican a detectar este tipo de problemas y ponerlos al alcance de todos. Una de estas organizaciones es The Open Web Application Security Project (OWASP), organización sin ánimo de lucro formada por voluntarios que se dedican a investigar posibles problemas de seguridad en la programación. Como actividad más relevante, la OWASP publica todos los años un top10 con los problemas más detectados durante los últimos meses, y por fortuna tiene voluntarios y páginas en muchos países (incluida España). Además la OWASP tiene publicadas una serie de metodologías a seguir para evaluar y mejorar la seguridad en nuestras infraestructuras y aplicaciones web.

Para no extendernos mucho más en este post, os dejamos con el último top10 publicado:

1. Inyección de código.
2. Gestión de las sesiones.
3. XSS (Cross site scripting).
4. Referencias a objetos inseguras.
5. Desactualización de componentes o partes de nuestro sistema.
6. Exposición de datos sensibles.
7. Pérdida de control de acceso.
8. CSRF (Cross site request forgery).
9. Uso de componentes con vulnerabilidades conocidas.
10. Redirecciones inválidas.

Se puede ver la lista completa en la página web de OWASP.

Comments

  1. Interesante. La verdad que algunas de las claves del “top 10” se pueden controlar sin mucha dificultad, es más una cuestión de información y ganas.
    Por supuesto una programación limpia y construída de forma segura es básica.

    Saludos

Trackbacks

  1. […] securityartwork Compartir […]

  2. […] A la hora de hablar de seguridad informática a todos nos viene a la cabeza codificar información, supervisar la red, usar cortafuegos, etc… Sin embargo, solemos olvidar que nuestro sistema puede ve…  […]

  3. […] A la hora de hablar de seguridad informática a todos nos viene a la cabeza codificar información, supervisar la red, usar cortafuegos, etc… Sin embargo, solemos olvidar que nuestro sistema puede ve…  […]