Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Cómo aprender OWASP e impulsar la seguridad de sus aplicaciones

Foto de cabeza de Arthur Hicken, evangelista de Parasoft
4 octubre 2023
11 min leer

Lograr la seguridad de las aplicaciones en su organización no se puede lograr solo con herramientas de seguridad. Aquí hay una cobertura detallada de por qué tener el conocimiento de Open Web Application Security Project (OWASP) puede ayudarlo a mitigar las vulnerabilidades de la aplicación.

Seguimos viendo grandes filtraciones de datos que afectan a organizaciones de todos los tamaños. A medida que los problemas de seguridad cibernética continúan e incluso aumentan en frecuencia y gravedad, nos preguntamos: "¿Somos los siguientes?" y “¿Qué puedo hacer al respecto?” Ahí es donde OWASP entra en juego.

¿Qué es OWASP Top 10 y por qué debería aprenderlo?

Más conocido por el OWASP Top 10, OWASP es el Open Web Application Security Project, una comunidad abierta con información gratuita y capacitación sobre seguridad de aplicaciones. El OWASP Top 10 es una lista de riesgos de seguridad peligrosos comunes para las aplicaciones web, que se actualiza periódicamente para mantenerse al día. Si no ha estado haciendo mucho en cuanto a seguridad de aplicaciones, o si lo que ha estado haciendo es ad-hoc, OWASP Top 10 es un excelente lugar para comenzar.

Comprender el papel de OWASP en la seguridad de las aplicaciones web

OWASP, la organización, proporciona recursos, pautas y herramientas para ayudar a los desarrolladores de aplicaciones web a identificar, mitigar y prevenir vulnerabilidades de seguridad. El OWASP Top Ten es un recurso clave que la organización ha estado publicando desde 2003. La intención es lograr que la comunidad de desarrolladores se centre en los problemas de seguridad clave y comprenda su impacto.

La importancia de aprender OWASP para abordar los riesgos de seguridad

Comprender e implementar OWASP Top Ten y otras recomendaciones de OWASP mejora la seguridad de las aplicaciones web, ya que ayuda a eliminar los riesgos de seguridad más comunes y críticos. Conocer las causas fundamentales de estas diez vulnerabilidades principales ayuda a los desarrolladores a priorizar sus esfuerzos y centrarse en los mayores riesgos. A medida que una organización madura y adopta estas prácticas, sus aplicaciones web son más resistentes a los ataques y reducen el riesgo de filtraciones de datos, pérdidas financieras y daños a la reputación.

Las 10 principales vulnerabilidades de OWASP: lo que necesita saber

El OWASP Top 10 comprende las siguientes vulnerabilidades A1-A10:

  1. A01: 2021-Control de acceso roto
  2. A02:2021-Fallos criptográficos
  3. A03: 2021-inyección
  4. A04:2021-Diseño inseguro
  5. A05: 2021-Configuración incorrecta de seguridad
  6. A06:2021-Componentes vulnerables y obsoletos
  7. A07:2021-Fallos de identificación y autenticación
  8. A08:2021-Integridad del software y los datos
  9. A09:2021-Registro y monitoreo de seguridad
  10. A10:2021-Solicitud del lado del servidor

OWASP proporciona documentación para el Top 10 con una página web dedicada a cada vulnerabilidad. La página describe qué es cada vulnerabilidad y proporciona una puntuación de riesgo, que se utiliza para ayudar a priorizar y clasificar posibles vulnerabilidades. A continuación se muestra un ejemplo de la página web de inyección A03:2021:

Captura de pantalla que muestra la página web OWASP Top 10:2021 dedicada a describir la vulnerabilidad A03:2021 - Inyección.

La "Tabla de contenido" en la parte superior derecha proporciona orientación y le ayuda a comprender la importancia y el peligro de cada una de las vulnerabilidades.

Vulnerabilidades comunes en aplicaciones web

Según el Top Ten de OWASP, las vulnerabilidades más comunes son el control de acceso roto, fallas criptográficas y fallas de inyección.

El control de acceso mantiene a los usuarios dentro de los permisos previstos en una aplicación. Sin embargo, estos controles suelen estar mal implementados y son fácilmente eludidos. Con privilegios superiores a los previstos, los atacantes pueden acceder a datos privados o interrumpir las operaciones. Un control de acceso adecuado significa implantar controles efectivos con una filosofía de denegación por defecto. Las pruebas de seguridad deben abordar exhaustivamente posibles problemas con el control de acceso.

Otra vulnerabilidad común es la falta de criptografía adecuada. La falta total o débil de seguridad de los datos en movimiento o en reposo a menudo conduce a la exposición de los datos. Cuando se utiliza criptografía, a veces se utiliza un cifrado débil que ya ha sido "descifrado" por los atacantes. La clave para la prevención es mantener seguros los datos cuando se transmiten con protocolos seguros y un cifrado sólido cuando se almacenan. Esto también implica una gestión adecuada de las claves y la actualización de las herramientas y métodos de cifrado según sea necesario.

Los ataques de inyección manipulan entradas para ejecutar comandos no autorizados. Estos comandos se pueden utilizar para exponer información confidencial. Por ejemplo, un ataque de inyección SQL puede exponer los datos de los clientes. Un inicio de sesión deficiente y una gestión de sesiones deficientes pueden dar lugar a un acceso no autorizado, lo que a menudo conduce a una exposición de datos que habla de un problema general de mala protección de la información confidencial.

Cómo OWASP aborda el diseño inseguro

Abordar el diseño inseguro es una nueva categoría en el Top Ten de OWASP para 2021. Se diferencia en que se centra en las cuestiones organizativas relacionadas con la seguridad de las aplicaciones web. Es imposible corregir un diseño inseguro durante la implementación, por lo que el mejor enfoque es introducir la seguridad en las primeras etapas del proceso de desarrollo y durante todo el ciclo de vida.

Seguro por diseño es un enfoque que incluye análisis de amenazas, gestión de riesgos, diseño seguro y prácticas de codificación, y validación y verificación continua de la seguridad. OWASP publica el Modelo de madurez de garantía de software (SAMM) para ayudar a las organizaciones a alinear y madurar su ciclo de vida de desarrollo de software seguro.

OWASP incluye muchas recomendaciones para pasar a un proceso de desarrollo más seguro. Los aspectos clave incluyen el modelado de amenazas, la integración de controles de seguridad y lenguaje en las historias de los usuarios y, por supuesto, el establecimiento de un ciclo de vida de desarrollo seguro con profesionales externos de AppSec si es necesario.

Detalles del top diez de OWASP

Para cada uno de los diez principales, hay una página dedicada a cada categoría de problemas de seguridad de aplicaciones web.

factores

La sección de factores muestra los datos asociados a la categoría, como el número de CWE mapeados, tasas de incidencia, porcentaje de cobertura, número de incidentes.

SINOPSIS

La descripción general y la descripción, como se esperaba, proporcionan detalles sobre la categoría de vulnerabilidad. Esto se amplía con respecto a versiones anteriores de la lista.

Como prevenir

La sección de Cómo Prevenir es la más interesante en mi humilde opinión. Las pruebas de seguridad son importantes, pero crear código seguro es la única base sólida para una seguridad sólida de las aplicaciones. Esta sección describe varias estrategias que le ayudarán a mejorar su seguridad no sólo probando antes, sino también creando un código mejor que sea fundamentalmente menos vulnerable a los ataques. Esta es la base para un enfoque de seguridad por diseño, requerido por RGPD, por ejemplo.

Ejemplos de escenarios de ataque

La sección de escenarios de ataque de ejemplo muestra cómo un atacante podría aprovechar cada vulnerabilidad. Esta información se puede utilizar para ayudar a crear pruebas y para educar al equipo sobre cómo las vulnerabilidades del software afectan la seguridad de las aplicaciones.

Referencias

Finalmente, cada elemento del Top 10 tiene una sección con más información sobre cada problema, enfoques para evitarlo y enfoques para probarlo. También contiene enlaces que le llevarán a problemas relacionados. Esto le resultará muy útil mientras trabaja para mejorar continuamente la seguridad de su software.

Lista de CWE mapeados

La sección final enumera todos los CWE asignado a la categoría actual con enlaces a las descripciones CWE de MITRE.

Al leer la documentación de OWASP Top 10, es posible que algunos de los elementos sean obvios solo por su nombre, mientras que otros requieren una profundización para comprenderlos. Por ejemplo, A01 Broken Access Control es en realidad un conjunto más amplio de cosas como hacer cumplir controles de acceso, pruebas de autorización, revocar acceso y más. Detrás de esta debilidad de seguridad está el hecho de que las fallas de acceso pueden llevar a la divulgación no autorizada de información, modificación o destrucción de todos los datos o a la realización de una función fuera de los límites del usuario.

¿Por qué utilizar OWASP Top 10 para la seguridad de aplicaciones web?

Hay información, capacitación y consejos en OWASP Top 10. Puede aprender sobre problemas de seguridad comunes, así como estrategias para detectar e incluso evitar algunos problemas por completo. Toda esta información está disponible sin costo y se actualiza y mejora constantemente.

El cumplimiento también significa que necesitamos saber exactamente qué elemento específico de nuestro conjunto de herramientas respalda qué parte específica del estándar. En el caso del análisis estático, esto significa saber qué verificadores respaldan qué elementos del estándar y si hay elementos en el estándar que requieren más que un análisis estático, como la revisión de código por pares o el análisis de composición de software.

Los beneficios de la seguridad por diseño

Adoptar la seguridad desde el diseño debería ser una prioridad absoluta para el desarrollo de aplicaciones web. La prevención mediante un diseño y codificación seguros y la implementación de un estándar de codificación seguro son parte de la solución. De hecho, la última lista Top Ten de OWASP ha agregado la categoría de diseño inseguro para abordar estos mismos problemas. La seguridad no se puede reforzar. Debe estar en la aplicación desde el principio.

Las herramientas SAST desempeñan un papel importante a la hora de desplazar la seguridad hacia la izquierda, lo que significa aplicar controles de seguridad en una fase más temprana del ciclo de vida del desarrollo. Las herramientas SAST ayudan a prevenir vulnerabilidades de seguridad cuando se utilizan para hacer cumplir prácticas y estándares de codificación segura. Además, estas herramientas pueden detectar vulnerabilidades existentes, ya sea en código existente o recientemente desarrollado.

La recompensa por un diseño seguro es considerable, ya que los incidentes de seguridad, especialmente las violaciones de datos, son muy costosos. Los problemas de seguridad encontrados en producción o en productos implementados cuestan varios órdenes de magnitud más para solucionarlos que los encontrados durante el desarrollo. Las violaciones de datos públicos que se convierten en noticia pueden costar a las empresas millones de dólares.
El diseño seguro también ofrece beneficios en términos de reputación y experiencia del cliente. Incorporar la seguridad desde el principio es una buena práctica.

Cómo ayuda OWASP a identificar riesgos de seguridad

El OWASP Top Ten, ante todo, brinda conocimiento y un lenguaje común para las vulnerabilidades de aplicaciones web más comunes y riesgosas. Como lista, también proporciona priorización y evaluación de riesgos para que los desarrolladores la consideren. Por ejemplo, las fallas de inyección siguen siendo una vulnerabilidad crítica y deberían ser un foco principal en el diseño de seguridad, la codificación y el uso de herramientas de escaneo y pruebas de penetración.

El Top Ten también es un buen recurso para capacitar y ayudar a las organizaciones a madurar su postura de seguridad. Secure by Design y DevSecOps se basan en la información y la orientación proporcionadas por OWASP y recursos como el Top Ten.

Comenzando al final

Es fácil (y peligrosamente común) para las organizaciones de desarrollo de software comenzar con la seguridad empezando por el final mediante pruebas externas de ciclo tardío de todo el sistema, como las pruebas de penetración. Podría llamar a esto algo así como DevTestOpsSec.

Esta prueba es excelente para demostrar que la aplicación/sistema no contiene ninguna de las vulnerabilidades enumeradas en OWASP, por supuesto. Pero esta prueba de caja negra no es la forma más eficiente de producir código que sea más seguro. No queremos depender de las pruebas de caja negra como una forma de proteger nuestro software o encontrar errores, por mucho que queramos usarlo para demostrar que el software es seguro.

Entonces, si las pruebas de penetración encuentran una vulnerabilidad, debemos preguntarnos, ¿por qué? Y trate de abordar la causa raíz del problema. Aquí es cuando pasamos de una mentalidad de “seguridad de prueba” a una mentalidad de “seguridad por diseño”. Para ello, encontrará herramientas de prueba de seguridad de aplicaciones estáticas (SAST), como análisis de código estático, con soporte para OWASP.

Herramientas y estrategias para satisfacer OWASP

Una pequeña cosa a tener en cuenta es que el elemento A06 en el OWASP Top 10 es completamente diferente al resto y no se presta a SAST o DAST porque se trata de buscar vulnerabilidades conocidas en el código abierto, no de encontrar nuevas vulnerabilidades.

Afortunadamente, OWASP tiene una herramienta gratuita para esto llamada Verificación de dependencia de OWASP. Esta herramienta identifica las dependencias del proyecto y verifica si existen vulnerabilidades conocidas y divulgadas públicamente, y puede usarse para escanear aplicaciones y sus bibliotecas dependientes para identificar componentes vulnerables conocidos.

Si está utilizando Parasoft, de hecho integramos OWASP Dependency Check en nuestro sistema de informes y lo hicimos parte del Panel de control OWASP Top 10. Esto facilita el manejo de problemas en sus componentes de código abierto al escanear como parte regular de su CI, junto con SAST, y colocar los resultados en un panel unificado con el resto de su información OWASP. Con este enfoque, en lugar de ser un proceso ortogonal separado, A9 se integra con el Top 10 como debería ser.

DAST y SAST: herramientas para satisfacer OWASP

Las herramientas de prueba de seguridad de aplicaciones respaldan las actividades necesarias para prevenir las vulnerabilidades enumeradas en el Top Ten de OWASP. Como tal, utilizar una combinación de estas herramientas es una de las mejores prácticas para los desarrolladores de software.

Las herramientas SAST analizan el código "en reposo" y pueden aplicarse en una etapa muy temprana del ciclo de vida del desarrollo de software. Su punto fuerte es detectar debilidades del software y programación insegura a medida que se escribe el código. También son excelentes para hacer cumplir estándares de codificación segura como SEI CERT. Los proveedores de herramientas SAST a menudo tienen configuraciones para el Top Ten de OWASP y documentan cómo se puede utilizar su herramienta para abordar estas principales vulnerabilidades.

Las herramientas DAST, por otro lado, se utilizan cuando se ejecuta una aplicación. Detectan vulnerabilidades a medida que ocurren y con muy alta precisión. Las herramientas DAST se utilizan durante las pruebas para detectar errores y vulnerabilidades que podrían pasar desapercibidas únicamente en los resultados de las pruebas.

Cómo utilizar las pautas de OWASP para el análisis de código seguro

El OWASP Top Ten ayuda a guiar las pruebas de seguridad de las aplicaciones y el análisis de código al proporcionar una lista priorizada de los riesgos de seguridad de las aplicaciones web más críticos. Los desarrolladores y los equipos de seguridad pueden revisar su código teniendo estos riesgos en mente, asegurándose de abordar y mitigar las vulnerabilidades relacionadas con estos diez problemas principales.

Herramientas y consejos de análisis de código estático

La belleza del análisis estático es que no es necesario tener terminada toda la aplicación o el sistema. Puede comenzar a buscar problemas de seguridad mucho antes en el ciclo para desplazar a la izquierda pruebas de seguridad. Si está realizando la seguridad tarde o cerca del final de su desarrollo (DevOpsSec), puede usar el análisis estático para impulsar la seguridad antes, incluso antes de que comiencen las pruebas, mientras el código se está escribiendo (DevSecOps).

El lado desagradable del análisis estático es que tiene fama de ser muy ruidoso, produciendo, por ejemplo, cientos o incluso miles de violaciones justo cuando pensaba que estaba listo para publicar. Afortunadamente, existen algunas buenas estrategias para afrontar esto. Aquí hay algunas cosas a tener en cuenta:

  • No guarde las pruebas de seguridad hasta el final. Comience a ejecutar un análisis estático tan pronto como comience a codificar. Si espera y solo lo ejecuta como parte de su canal de CI / CD, los hallazgos se acumularán y abrumarán a su equipo de desarrollo. Ejecútelo en el escritorio para encontrar problemas y ejecútelo en CI / CD para simplemente verificar que el código se haya creado correctamente
  • Ajuste su configuración. Es posible que algunos verificadores de análisis estáticos no sean necesarios en el contexto de su código. Verifique su aplicación y determine qué riesgos de seguridad son importantes para usted y solo trabaje en ellos. Nunca busque problemas que no planee solucionar.
  • La antigüedad del código importa. “Si no está roto, no lo arregles” debería aplicarse al código heredado. Ejecute únicamente los escáneres de seguridad más críticos contra códigos antiguos. Los problemas menores le harán perder el tiempo y estos cambios conllevan sus propios riesgos. Nunca revises el código que no planeas arreglar.
  • Se trata de riesgo. Las herramientas SAST encuentran vulnerabilidades tanto reales como potenciales. No todos los hallazgos tienen el mismo riesgo potencial. OWASP Top Ten ayuda a los desarrolladores a centrarse primero en los problemas de mayor prioridad. Con la ayuda de las asignaciones de herramientas SAST a las diez principales vulnerabilidades de OWASP, es mejor priorizar y clasificar los hallazgos de SAST.

El poder de la prevención en el aprendizaje OWASP

Me gustaría enfatizar algo que es importante si realmente desea fortalecer su aplicación. Es fácil probar la seguridad, pero es más difícil crearla. Afortunadamente, los verificadores de análisis estático vienen en diferentes versiones. Algunos verificadores buscan problemas típicos, como datos contaminados, e intentan descubrir si hay un flujo en la aplicación donde esto podría ocurrir. Estos son los verificadores más comunes en muchas herramientas SAST.

Pero el mayor valor en el análisis de código estático radica en las verificaciones que hacen cumplir dos cosas especiales:

  1. Un patrón que frecuentemente se asocia con problemas del pasado. Si bien esto puede no ser tan interesante como un seguimiento de pila específico de un exploit, puede ser mucho más exhaustivo simplemente arreglar todo lo que es más débil de lo que debería ser que solo arreglar los problemas que tienen un vector de ataque probado.
  2. Requisitos de tipos específicos de codificación para garantizar su correcto funcionamiento. Estándares automotrices y aeronáuticos como Misra y JSF confían en esta técnica para garantizar la seguridad funcional. La misma técnica de exigir un buen código además de marcar el código incorrecto le ayudará a crear aplicaciones que sean más seguras.

Irónicamente, este es el enfoque que las industrias críticas para la seguridad han utilizado durante décadas con hardware y software, pero de alguna manera en ciberseguridad creemos que podemos probar la seguridad en una aplicación y no necesitamos enfocarnos en crear código seguro. Aproveche todas las capacidades del análisis estático proactivo, además de los verificadores de detección temprana, para obtener el máximo valor.

Creación de código seguro: mejores prácticas de OWASP

Las mejores prácticas que podemos aprender del Top Ten de OWASP están escritas en la propia lista. Por ejemplo, la clave para prevenir fallas de inyección es validar adecuadamente todas las entradas en la aplicación. Además, se necesitan las siguientes mejores prácticas.

  • Mantenga los datos separados de los comandos y consultas.
  • Utilice API seguras.
  • Utilice una validación de entrada positiva del lado del servidor.
  • Utilice LIMIT y otros controles SQL dentro de las consultas.
  • Garantizar un control de acceso adecuado.
  • Datos seguros en tránsito y en reposo.
  • Adopte la seguridad por diseño.
  • Garantice configuraciones seguras.
  • Garantizar la seguridad de la cadena de suministro de software.
  • Garantizar la integridad del software.
  • Garantizar el registro y la supervisión de seguridad.

Cómo aprender OWASP puede ayudar en la evaluación de riesgos

El OWASP Top Ten proporciona una lista ordenada de las vulnerabilidades de seguridad de aplicaciones web de mayor riesgo. Teniendo esto en cuenta, los desarrolladores de aplicaciones web cuentan con la información que necesitan para evaluar los riesgos de seguridad a medida que surgen. La prioridad de los incidentes de seguridad o la detección de vulnerabilidades durante el desarrollo se puede priorizar en función de su lugar en la lista. Todos los diez principales son críticos, pero los desarrolladores deben centrarse primero en los más comunes y de mayor riesgo.

Resumen: sus próximos pasos para aprender OWASP

Comenzar con OWASP Top 10 no será fácil si nunca te has centrado en la seguridad, pero es posible. DAST es una forma sencilla de comenzar con el Top 10 y luego usar SAST lo ayudará cambie su prueba de seguridad a la izquierda. Si se implementa correctamente, SAST puede incluso prevenir problemas, no solo detectarlos, así que busque herramientas que cubran todos los elementos de la lista, con verificadores tanto de detección como preventivos.

Incorporación de seguridad en su aplicación desde el principio

Los desarrolladores de aplicaciones web pueden incorporar seguridad a sus aplicaciones desde el principio en el contexto del Top Ten de OWASP al:

  • Comprender el riesgo. Tenga en cuenta las vulnerabilidades comunes.
  • Seguir prácticas de codificación segura. Codificación segura que mitiga los diez principales riesgos.
  • Entrenando regularmente. Los equipos de desarrollo necesitan aprender codificación segura y las mejores prácticas de OWASP.
  • Pruebas de seguridad. Realice pruebas de seguridad continuas, incluidos análisis estáticos y dinámicos.
  • Realizar revisiones de código. Revisiones periódicas de código con enfoque en seguridad.
  • Adoptar la seguridad por diseño. La seguridad no se puede reforzar más tarde.
  • Utilizar modelos de amenazas. Identifique posibles debilidades de seguridad y abórdelas en la arquitectura.

El tema clave es integrar medidas de seguridad en el proceso de desarrollo desde el principio, ser proactivo y priorizar la mitigación con la evaluación de riesgos descrita en el Top Ten de OWASP.

Con estos consejos, debería estar listo para comenzar a eliminar los riesgos de seguridad de aplicaciones web más comunes y peligrosos en la actualidad.

Incorpore seguridad en su aplicación desde el principio.

“MISRA”, “MISRA C” y el logotipo del triángulo son marcas comerciales registradas de The MISRA Consortium Limited. © The MISRA Consortium Limited, 2021. Todos los derechos reservados.