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.