viernes, 6 de julio de 2018

Ataques Web - Utilización de componentes con vulnerabilidades conocidas

Algunos componentes tales como las librerías, los frameworks y otros módulos de software casi siempre funcionan con todos los privilegios. Si se ataca un componente vulnerable esto podría facilitar la intrusión en el servidor o una pérdida seria de datos. Las aplicaciones que utilicen componentes con vulnerabilidades conocidas debilitan las defensas de la aplicación y permiten ampliar el rango de posibles ataques e impactos.

Como detectarlo


En teoría, debiera ser fácil distinguir si estas usando un componente o biblioteca vulnerable. Desafortunadamente, los reportes de vulnerabilidades para software comercial o de código abierto no siempre especifica exactamente que versión de un componente es vulnerable en un estándar, de forma accesible. Más aún, no todas las bibliotecas usan un sistema numérico de versiones entendible. Y lo peor de todo, no todas las vulnerabilidades son reportadas a un centro de intercambio fácil de buscar, sitios como CVE y NVD se están volviendo fáciles de buscar.

Para determinar si es vulnerable necesita buscar en estas bases de datos, así como también mantenerse al tanto de la lista de correos del proyecto y anuncios de cualquier cosa que pueda ser una vulnerabilidad, si uno de sus componentes tiene una vulnerabilidad, debe evaluar cuidadosamente si es o no vulnerable revisando si su código utiliza la parte del componente vulnerable y si el fallo puede resultar en un impacto del cual cuidarse.


Como prevenirlo


Una opción es no usar componentes que no ha codificado. Pero eso no es realista. La mayoría de los proyectos de componentes no crean parches de vulnerabilidades de las versiones más antiguas. A cambio, la mayoría sencillamente corrige el problema en la versión siguiente. Por lo tanto, actualizar a esta nueva versión es crítico. Proyectos de software deberían tener un proceso para:

  1. Identificar todos los componentes y la versión que están ocupando, incluyendo dependencias (ej: El plugin de versión). 
  2. Revisar la seguridad del componente en bases de datos públicas, lista de correos del proyecto, y lista de correo de seguridad, y mantenerlos actualizados. 
  3. Establecer políticas de seguridad que regulen el uso de componentes, como requerir ciertas prácticas en el desarrollo de software, pasar test de seguridad, y licencias aceptables. 
  4. Sería apropiado, considerar agregar capas de seguridad alrededor del componente para deshabilitar funcionalidades no utilizadas y/o asegurar aspectos débiles o vulnerables del componente.

No hay comentarios:

Publicar un comentario