viernes, 8 de junio de 2012

Atacando el framework


Como vimos en el anterior artículo sobre la evolución en la estructura de las aplicaciones web, uno de los elementos estructurales que se ha incorporado recientemente a muchas de ellas es el framework de desarrollo web.

Al ser un elemento relativamente reciente aun no ha atraído demasiado la mirada de la industria de la seguridad de forma que aun es un campo parcialmente inexplorado y con muchas vulnerabilidades.
 

Un framework de desarrollo web es una herramienta software que sirve de base a otros proyectos para hacerlos más organizados y facilitar su desarrollo. Un framework suele incluir programas de apoyo, bibliotecas y un API para las tareas comunes.

Por supuesto no todas las aplicaciones web que vemos a menudo están basadas en un framework, pero la mayoría de ellas probablemente lo estén. Es más, cuanto mayor y más compleja sea la aplicación, mayor probabilidad de que este basada en un framework.

Cuando hablamos de frameworks nos estamos refiriendo principalmente a frameworks públicos aunque también puede darse el caso de frameworks propietarios desarrollados internamente por una entidad o empresa con suficientes recursos.

Frameworks más populares, según el lenguaje de programación en el que estén basados:
  • Ruby: RoR (Ruby On Rails), Merb
  • PHP: Zend, CakePHP, Symphony, Horde
  • Java: Struts, Spring, JSF (Java Server Faces), Tapestry
  • Python: Django, Zope
  • .NET: ASP.NET

Como vemos un elemento clave en la definición de un framework es el lenguaje de programación en el que se basa. Esto determinará muchas de sus características y también influirá en los tipos de vulnerabilidades que pueda presentar con mayor probabilidad.

Los frameworks para aplicaciones web no son algo nuevo, pero su uso se ha ido popularizando hasta llegar a ocupar un puesto importante entre los elementos que definen la seguridad de un aplicativo.
 
¿Cómo puede influir un framework en la seguridad de una aplicación?

  • Haciendo que el programador caiga en trampas habituales debido a un mal diseño del framework: La presencia o no de vulnerabilidades de código depende generalmente de lo cuidadoso que haya sido el programador en su trabajo, pero algunos frameworks debido a sus características tienden a hacer que muchos programadores se equivoquen al codificar ciertas funcionalidades.

  • Haciendo difícil la implantación de medidas de seguridad para la aplicación: Algunos frameworks disponen de mecanismos de seguridad para incorporar al aplicativo, pero su funcionamiento es tan complejo que muchas veces el programador desiste de su uso y prefiere dejar la aplicación desprotegida.

  • Conteniendo vulnerabilidades: El propio framework puede presentar vulnerabilidades que si no son conocidas por el programador pueden permanecer ocultas en la aplicación.

Lo más importante es que todo esto ya lo conocen los profesionales del hacking y es por eso que cada día son más habituales los ataques que aprovechan este tipo de debilidades.

Además los frameworks son también un objetivo jugoso para los buscadores de vulnerabilidades ya que la diferencia de coste entre descubrir un 0-day en una aplicación y descubrir un 0-day en un framework puede ser pequeña, pero el segundo probablemente podrá ser usado en más sitios y tendrá un mayor mercado de posibles compradores.

Los frameworks web son por tanto un nuevo elemento a tener en cuenta en el diseño de las estrategias de seguridad informática tanto desde el punto de vista defensivo como desde el punto de vista ofensivo.