Este grupo de redactores ha estado mucho tiempo buscando soluciones a tu pregunta, te regalamos la soluciones por esto nuestro objetivo es servirte de gran apoyo.
Solución:
Cualquier número que obtenga no tendrá mucho sentido, algunos factores a considerar:
-
Lenguaje de programación: algunos lenguajes le permiten hacer cosas muy inseguras; por ejemplo, C te hace asignar memoria directamente, hacer aritmética de punteros, tiene null cadenas terminadas, por lo que presenta muchas posibles fallas de seguridad que los lenguajes más seguros (pero un poco más lentos) como Ruby/Python no permiten. ¿Propósito de la aplicacion? ¿Qué tipo de codificador/revisión de código?
-
Tipo de aplicación: si un programador no malicioso escribe un juego tipo Angry Bird relativamente complejo en Java (sin usar
unsafe
módulo), hay una gran posibilidad de que no haya errores “explotables”, especialmente después de la prueba; con la posible excepción de poder bloquear el programa. Una aplicación web en PHP escrita por aficionados tiene muchas posibilidades de tener varias fallas explotables (inyección de SQL, secuencias de comandos entre sitios, mala gestión de sesiones, hashing débil, inclusión remota de archivos, etc.). -
Experiencia del programador en la escritura de código seguro. Si contrata a un estudiante de secundaria sin experiencia previa para codificar alguna aplicación web, existe una posibilidad razonable de que tenga fallas importantes.
Además, contar el número de errores “explotables” tampoco es una tarea sencilla; si encontrar errores fuera sencillo, se eliminarían en la revisión del código. A veces, muchos errores solo surgen debido a condiciones de carrera sutiles o interacciones complejas entre programas/bibliotecas.
Sin embargo, si toma proyectos de código abierto, es bastante fácil encontrar un recuento de LoC en ohloh.net y un recuento de vulnerabilidades “explotables” en cvedetails.com (definí arbitrariamente “explotable” como CVSS sobre 7). Al azar, decidí mirar algunos navegadores web, lenguajes de programación y marcos web y encontré:
Navegadores web:
- Google Chrome 380 CVE con 6 239 930 LoC, por lo que 0,06 vulnerabilidades por mil LoC.
- Firefox 395 CVE en 8 000 969 LoC a una tasa de 0,05 por 1000 líneas de código.
Lenguajes de programación de código abierto:
- python con 3 CVSS explotables>=7) en 862 830 líneas de código a una tasa de 0.003
- Ruby 13 CVSS >= 7 en 171 122 LoC a una tasa de 0.08
- PHP con 122 CVSS>=7 explotables en 3 761 587 líneas de código a razón de 0.03 (factor de diez peor que python).
Marcos web:
- django con 1 CVSS explotable >= 7 en 149 292 LoC a una tasa de 0.007.
- Ruby on Rails 7 CVSS explotable >= 7 en 156 317 LoC a una tasa de 0,05.
Entonces, de nuevo, para estos importantes proyectos de programación específicos (probablemente escritos por programadores expertos), se encontraron tasas de vulnerabilidades importantes explotables a una tasa de 0,003 a 0,08 por 1000 LoC. (O 1 por 12 500 – 300 000 LoC). Necesariamente extrapolaría a proyectos de código abierto no importantes.
Como alguien que prueba la seguridad de las aplicaciones web por diversión y beneficio, los defectos de seguridad por cada mil líneas son mucho más altos en las aplicaciones web comunes de código abierto que la cifra citada de 0,08. Presumiblemente, el problema es que los CVE registran solo los defectos de seguridad encontrados e informados a través de los canales relevantes, necesita métricas en las que el código se haya sometido a revisiones sistemáticas para que al menos se hayan detectado defectos de seguridad bajos, de lo contrario, lo que está midiendo es una fracción de la prueba esfuerzo.
valoraciones y comentarios
Ten en cuenta dar recomendación a esta reseña si te ayudó.