A11: Próximos pasos (by OWASP)

Por diseño, el OWASP Top 10 se limita de forma innata a los diez riesgos más importantes. Cada OWASP Top 10 tiene riesgos “en la cúspide” considerados extensamente para su inclusión, pero al final, no lo lograron.

Independientemente de cómo intentáramos interpretar o torcer los datos, los otros riesgos eran más frecuentes e impactantes.

Las organizaciones que trabajan para lograr un programa Appsec maduro o las consultorías de seguridad o los proveedores de herramientas que desean ampliar la cobertura de sus ofertas, vale la pena identificar y remediar los siguientes cuatro problemas.

Problemas de calidad del código

  • Descripción: Los problemas de calidad del código incluyen defectos o patrones de seguridad conocidos, reutilización de variables para múltiples propósitos, exposición de información confidencial en la salida de depuración, errores de uno en uno, condiciones de carrera de tiempo de verificación/tiempo de uso (TOCTOU), errores de conversión firmados o sin firmar, usar después de gratis, y más. El sello distintivo de esta sección es que, por lo general, se pueden identificar con banderas de compilación estrictas, herramientas de análisis de código estático y complementos IDE de linter. Los lenguajes modernos por diseño eliminaron muchos de estos problemas, como el concepto de propiedad y préstamo de memoria de Rust, el diseño de subprocesos de Rust y la estricta verificación de límites y escritura de Go.
  • Como prevenir: Habilite y use las opciones de análisis de código estático de su editor y lenguaje. Considere usar una herramienta de análisis de código estático. Considere si es posible usar o migrar a un lenguaje o marco que elimine las clases de errores, como Rust o Go.
  • Ejemplos de escenarios de ataque: Un atacante podría obtener o actualizar información confidencial explotando una condición de carrera utilizando una variable compartida estáticamente en varios subprocesos.

Referencias

Negación de servicio

  • Descripción: La denegación de servicio siempre es posible con los recursos suficientes. Sin embargo, las prácticas de diseño y codificación tienen una influencia significativa en la magnitud de la denegación de servicio. Supongamos que cualquier persona con el vínculo puede acceder a un archivo de gran tamaño, o si se produce una transacción computacionalmente costosa en cada página. En ese caso, la denegación de servicio requiere menos esfuerzo para llevar a cabo.
  • Como prevenir: Código de prueba de rendimiento para CPU, E/S y uso de memoria, rediseñar, optimizar o almacenar en caché operaciones costosas. Considere los controles de acceso para objetos más grandes para garantizar que solo las personas autorizadas puedan acceder a archivos u objetos grandes o servirlos mediante una red de almacenamiento en caché perimetral.
  • Ejemplos de escenarios de ataque: Un atacante podría determinar que una operación tarda entre 5 y 10 segundos en completarse. Cuando se ejecutan cuatro subprocesos simultáneos, el servidor parece dejar de responder. El atacante utiliza 1000 subprocesos y desconecta todo el sistema.
  • Referencias

Errores de gestión de memoria

  • Descripción: Las aplicaciones web tienden a escribirse en lenguajes de memoria administrada, como Java, .NET o node.js (JavaScript o TypeScript). Sin embargo, estos lenguajes están escritos en lenguajes de sistemas que tienen problemas de administración de memoria, como desbordamientos de búfer o montón, uso después de liberar, desbordamientos de enteros y más. A lo largo de los años, ha habido muchos escapes de sandbox que demuestran que solo porque el lenguaje de la aplicación web es nominalmente “seguro” para la memoria, las bases no lo son.
  • Como prevenir: Muchas API modernas ahora están escritas en lenguajes seguros para la memoria, como Rust o Go. En el caso de Rust, la seguridad de la memoria es una característica crucial del lenguaje. Para el código existente, el uso de indicadores de compilador estrictos, tipado fuerte, análisis de código estático y pruebas de fuzz pueden ser beneficiosos para identificar fugas de memoria, desbordamientos de memoria y matrices, y más.
  • Ejemplos de escenarios de ataque: Los desbordamientos de búfer y montón han sido un pilar de los atacantes a lo largo de los años. El atacante envía datos a un programa, que almacena en un búfer de pila de tamaño insuficiente. El resultado es que se sobrescribe la información de la pila de llamadas, incluido el puntero de retorno de la función. Los datos establecen el valor del puntero de retorno para que cuando la función regrese, transfiera el control al código malicioso contenido en los datos del atacante.

Referencias


Más información

: OWASP ORG

Relacionado

ForEach de Javascript: Array para bucles

Como una de las estructuras de control básicas en la programación, los bucles son casi una adición diaria al código que escribimos. El bucle forEach clásico es uno de los primeros fragmentos de código que aprendemos a escribir como programadores. Si fueras un desarrollador de Javascript, sabrías que Javascript no es ajeno a la iteración a través de los elementos de una matriz o un mapa ¡SEGUIR LEYENDO!

10 Mejores alternativas de Sci-hub para descargar artículos de investigación gratis

Como sabemos, Sci-hub es un sitio web increíble con millones de artículos de investigación para todos los estudiantes universitarios y académicos. El sitio web de Sci-Hub se encarga de obtener los artículos de investigación y artículos de pago utilizando las credenciales que se filtran. La fuente de credenciales utilizada por este sitio web no está clara. Sin embargo, se supone que muchas de ellas son donadas, ¡SEGUIR LEYENDO!

10 Características Sorprendentes de Windows que Deberías Conocer en 2024

Aunque haya sido usuario de Windows durante décadas, el sistema operativo es tan amplio y complejo que siempre existen características útiles, pero menos conocidas, que podrían sorprenderte. En este sentido, he identificado diez funciones poco conocidas de Windows que pueden potenciar su eficiencia, comodidad e incluso su experiencia de uso lúdico en su PC.

¡REBAJADO!
Microsoft Surface Go 2 - Portátil 2 en 1 de 10.5 pulgadas Full HD, Wifi, Intel...
  • Procesador Dual-Core Intel Pentium Gold 4425Y (2...
  • Memoria RAM de 8 GB LPDDR3
  • Disco SSD de 128 GB
Todas estas características deberían ser compatibles tanto con Windows 10 ¡SEGUIR LEYENDO!

10 Criptomonedas con Potencial de Crecimiento de Futuro

El rumor en torno a las criptomonedas no se desvanece por mucho que existan grandes pesimistas alrededor de los malos rumores. Entonces, si consideras invertir en el mundo de las criptomonedas, deberías estar atento a las criptomonedas que se espera que tengan un buen desempeño para el resto de 2021. En los últimos tiempos, los tokens DeFi están recibiendo toda la atención y es más que ¡SEGUIR LEYENDO!

10 Empresas de robótica más importantes del mundo

Los cambios de paradigma revolucionarios debido a los desarrollos de la robótica en todo el mundo están generando nuevos puntos de vista en muchos sectores, entre ellos en los de la industria y la tecnología. Con la ayuda de la Inteligencia Artificial, la tecnología produce resultados innovadores cada segundo y el campo de la robótica define y reconfigura su uso a cada instante. Cada día que ¡SEGUIR LEYENDO!

10 Frameworks que los Desarrolladores de Software deberían Aprender 2024

Bienvenidos desarrolladores web y de software, estamos en los inicios de 2023 y es posible que muchos se esten planteado sus objetivos para lo largo del año. Con anterioridad ya he compartidos las rutas de aprendizaje para un desarrollador front-end, un desarrollador full-stack o un desarrollador back-end entre otros muchos contenidos más. En este artículo, me gustaría compartir algunos de los mejores frameworks y bibliotecas para ¡SEGUIR LEYENDO!

10 Repositorio de GitHub que todo Desarrollador Web debería conocer

GitHub es el lugar que debes buscar cuando intentas mejorar como desarrollador, toda la información que necesitas está disponible en algún repositorio que alguien ya se ha molestado en indexar. Sin embargo, la parte complicado es encontrar el repositorio más adecuado. Es fácil sentirse perdido en todos los repositorios disponibles dentro de GitHub. Para ayudarte, he elaborado una lista de 10 repositorios de GitHub que pueden ¡SEGUIR LEYENDO!

Deja un comentario