¿qué es OWASP?
El Proyecto de seguridad de aplicaciones Web abiertas, o OWASP, es una organización internacional sin fines de lucro dedicada a la seguridad de aplicaciones web. Uno de los principios fundamentales de OWASP es que todos sus materiales estén disponibles gratuitamente y sean fácilmente accesibles en su sitio web, lo que hace posible que cualquier persona mejore la seguridad de su propia aplicación web. Los materiales que ofrecen incluyen documentación, herramientas, videos y foros. Quizás su proyecto más conocido es el Top 10 de OWASP.
¿qué es el Top 10 de OWASP?,
El Top 10 de OWASP es un informe actualizado regularmente que describe las preocupaciones de seguridad para la seguridad de las aplicaciones web, centrándose en los 10 riesgos más críticos. El informe es elaborado por un equipo de expertos en seguridad de todo el mundo. OWASP se refiere al Top 10 como un ‘documento de concientización’ y recomienda que todas las empresas incorporen el informe en sus procesos para minimizar y/o mitigar los riesgos de seguridad.
a continuación se muestran los riesgos de seguridad reportados en el informe OWASP Top 10 2017:
1., Injection
Los ataques de inyección ocurren cuando se envían datos no confiables a un intérprete de código a través de una entrada de formulario o algún otro envío de datos a una aplicación web. Por ejemplo, un atacante podría introducir código de base de datos SQL en un formulario que espera un nombre de usuario de texto plano. Si esa entrada de formulario no está correctamente asegurada, esto daría lugar a que se ejecute el código SQL. Esto se conoce como un ataque de inyección SQL.
los ataques de inyección se pueden prevenir validando y/o desinfectando los datos enviados por el usuario., (La validación significa rechazar datos sospechosos, mientras que la desinfección se refiere a limpiar las partes sospechosas de los datos.) Además, un administrador de base de datos puede establecer controles para minimizar la cantidad de información que un ataque de inyección puede exponer.
2. Autenticación rota
las vulnerabilidades en los sistemas de autenticación (inicio de sesión) pueden dar a los atacantes acceso a las cuentas de usuario e incluso la capacidad de comprometer todo un sistema con una cuenta de administrador., Por ejemplo, un atacante puede tomar una lista que contiene miles de combinaciones conocidas de nombre de usuario/contraseña obtenidas durante una violación de datos y usar un script para probar todas esas combinaciones en un sistema de inicio de sesión para ver si hay alguna que funcione.
algunas estrategias para mitigar las vulnerabilidades de autenticación requieren autenticación de dos factores (2FA), así como limitar o retrasar los intentos de inicio de sesión repetidos mediante la limitación de velocidad.
3., Exposición de datos confidenciales
si las aplicaciones web no protegen los datos confidenciales, como la Información Financiera y las contraseñas, los atacantes pueden obtener acceso a esos datos y sellor los utiliza para fines nefastos. Un método popular para robar información confidencial es usar un ataque en ruta.
el riesgo de exposición de datos se puede minimizar cifrando todos los datos confidenciales, así como deshabilitando el almacenamiento en caché* de cualquier información confidencial. Además, los desarrolladores de aplicaciones web deben asegurarse de no almacenar innecesariamente ningún dato confidencial.,
* el almacenamiento en caché es la práctica de almacenar temporalmente datos para su reutilización. Por ejemplo, los navegadores web a menudo almacenan en caché las páginas web de modo que si un usuario vuelve a visitarlas dentro de un lapso de tiempo fijo, el navegador no tiene que recuperar las páginas de la web.
4. XML External Entities (XEE)
Este es un ataque contra una aplicación web que analiza la entrada XML*. Esta entrada puede hacer referencia a una entidad externa, intentando explotar una vulnerabilidad en el analizador. Una «entidad externa» en este contexto se refiere a una unidad de almacenamiento, como un disco duro., Un analizador XML puede ser engañado para enviar datos a una entidad externa no autorizada, que puede pasar datos confidenciales directamente a un atacante.
la mejor manera de evitar ataques XEE es hacer que las aplicaciones web acepten un tipo de datos menos complejo, como JSON**, o al menos parchear analizadores XML y deshabilitar el uso de entidades externas en una aplicación XML.
*XML o lenguaje de marcado Extensible es un lenguaje de marcado destinado a ser legible tanto por humanos como por máquinas. Debido a su complejidad y vulnerabilidades de seguridad, ahora está siendo eliminado de su uso en muchas aplicaciones web.,
**La notación de objetos JavaScript (JSON) es un tipo de notación simple y legible por humanos que a menudo se usa para transmitir datos a través de internet. Aunque originalmente fue creado para JavaScript, JSON es independiente del lenguaje y puede ser interpretado por muchos lenguajes de programación diferentes.
5. Control de acceso roto
El control de acceso se refiere a un sistema que controla el acceso a la información o funcionalidad. Los controles de acceso rotos permiten a los atacantes eludir la autorización y realizar tareas como si fueran usuarios privilegiados, como los administradores., Por ejemplo, una aplicación web podría permitir a un usuario cambiar la cuenta en la que ha iniciado sesión simplemente cambiando parte de una url, sin ninguna otra verificación.
Los controles de acceso se pueden proteger asegurándose de que una aplicación web utilice tokens de autorización* y establezca controles estrictos sobre ellos.
*muchos servicios emiten tokens de autorización cuando los usuarios inician sesión. Cada solicitud privilegiada que haga un usuario requerirá que el token de autorización esté presente. Esta es una forma segura de asegurarse de que el Usuario es quien dice ser, sin tener que ingresar constantemente sus credenciales de inicio de sesión.
6., Error de configuración de seguridad
error de configuración de seguridad es la vulnerabilidad más común en la lista, y a menudo es el resultado de usar configuraciones predeterminadas o mostrar errores excesivamente detallados. Por ejemplo, una aplicación podría mostrar a un usuario errores excesivamente descriptivos que pueden revelar vulnerabilidades en la aplicación. Esto se puede mitigar eliminando cualquier característica no utilizada en el código y asegurando que los mensajes de error sean más generales.
7., Cross-Site Scripting
las vulnerabilidades de Cross-site scripting ocurren cuando las aplicaciones web permiten a los usuarios agregar código personalizado en una ruta de url o en un sitio web que será visto por otros usuarios. Esta vulnerabilidad se puede explotar para ejecutar código JavaScript malicioso en el navegador de una víctima. Por ejemplo, un atacante podría enviar un correo electrónico a una víctima que parece ser de un banco de confianza, con un enlace al sitio web de ese banco. Este enlace podría tener algún código JavaScript malicioso etiquetado al final de la url., Si el sitio del banco no está correctamente protegido contra el scripting entre sitios, entonces ese código malicioso se ejecutará en el navegador web de la víctima cuando haga clic en el enlace.
Las estrategias de mitigación para el scripting entre sitios incluyen escapar de solicitudes HTTP no confiables, así como validar y/o desinfectar el contenido generado por el usuario. El uso de marcos de desarrollo web modernos como ReactJS y Ruby on Rails también proporciona una protección incorporada de scripting entre sitios.
8. Deserialización insegura
esta amenaza se dirige a las muchas aplicaciones web que con frecuencia serializan y deserializan datos., Serialización significa tomar objetos del código de la aplicación y convertirlos en un formato que se puede utilizar para otro propósito, como almacenar los datos en el disco o transmitirlos. La deserialización es justo lo contrario: convertir los datos serializados de nuevo en objetos que la aplicación puede utilizar. La serialización es como empacar muebles en cajas antes de una mudanza, y la deserialización es como desempacar las cajas y ensamblar los muebles después de la mudanza. Un ataque de deserialización inseguro es como hacer que los de la mudanza manipulen el contenido de las cajas antes de desempaquetarlas.,
un exploit de deserialización insegura es el resultado de deserializar datos de fuentes no confiables, y puede resultar en consecuencias graves como ataques DDoS y ataques de ejecución de código remoto. Si bien se pueden tomar medidas para tratar de atrapar a los atacantes, como monitorear la deserialización e implementar comprobaciones de tipo, la única manera segura de protegerse contra ataques de deserialización inseguros es prohibir la deserialización de datos de fuentes no confiables.
9., Uso de componentes con vulnerabilidades conocidas
muchos desarrolladores web modernos utilizan componentes como bibliotecas y frameworks en sus aplicaciones web. Estos componentes son piezas de software que ayudan a los desarrolladores a evitar el trabajo redundante y proporcionan la funcionalidad necesaria; ejemplo común incluyen marcos de interfaz como React y bibliotecas más pequeñas que solían agregar iconos compartidos o pruebas a/B. Algunos atacantes buscan vulnerabilidades en estos componentes que luego pueden usar para orquestar ataques., Algunos de los componentes más populares se utilizan en cientos de miles de sitios web; un atacante encontrar un agujero de seguridad en uno de estos componentes podría dejar cientos de miles de sitios vulnerables a explotar.
Los desarrolladores de componentes a menudo ofrecen parches y actualizaciones de seguridad para conectar vulnerabilidades conocidas, pero los desarrolladores de aplicaciones web no siempre tienen las versiones parcheadas o más recientes de los componentes que se ejecutan en sus aplicaciones., Para minimizar el riesgo de ejecutar componentes con vulnerabilidades conocidas, los desarrolladores deben eliminar los componentes no utilizados de sus proyectos, así como asegurarse de que están recibiendo componentes de una fuente confiable y asegurarse de que están actualizados.
10. Registro y monitoreo insuficientes
muchas aplicaciones web no están tomando suficientes medidas para detectar violaciones de datos. El tiempo promedio de descubrimiento de una brecha es de alrededor de 200 días después de que haya ocurrido. Esto da a los atacantes mucho tiempo para causar daño antes de que haya una respuesta., OWASP recomienda que los desarrolladores web implementen planes de registro y monitoreo, así como de respuesta a incidentes, para asegurarse de que estén al tanto de los ataques a sus aplicaciones.
para una visión más técnica y en profundidad del Top 10 de OWASP, consulte el informe oficial .