¿Es suficiente ejecutar un escáner de vulnerabilidad de aplicaciones automatizado para certificar que nuestra aplicación es segura? ¿Por qué no lo es?
Desde la Area51 original propuesta .
Seguro que las verificaciones automatizadas no son suficientes, y creemos que nunca lo serán. Bueno, hasta que se haga alguna IA. Como, por ejemplo, los fuzzers: solo pueden cubrir los cheques que fallan en caso de una entrada severa. Errores lógicos serán extrañados. El análisis del código fuente muestra buenos resultados cuando se habla de errores realmente graves y de las vulnerabilidades que requieren varias condiciones para cumplir. El análisis binario puede ser desalentador para una persona no tan experimentada, pero es posible inspeccionar la aplicación de código fuente cerrado y, además, tiene en cuenta las especificaciones del compilador que son imposibles de diagnosticar durante el análisis del código fuente. Por lo tanto, cada método tiene su ventaja y no debe usarse solo.
Confiar solo en el escaneo automatizado de vulnerabilidades para evaluar la seguridad de la mayoría de las aplicaciones es terriblemente inadecuado.
¿Por qué? Porque las herramientas automatizadas no detectarán las vulnerabilidades (errores de tipo II / falsos negativos) .
La implicación más fea de esta pregunta es que la seguridad de la aplicación es importante, pero se ignoró durante el desarrollo.
Las aplicaciones no pueden certificarse como seguras de la misma manera que los vehículos no pueden certificarse como seguros para conducir. Su mecánico puede entregarle una lista de las cosas que él o ella ha verificado y quizás incluso verificadas como seguras. Sin embargo, eso no significa que algo no saldrá mal una vez que tenga su automóvil en la carretera o en la pista.
Solo los mecánicos que buscan robarle le brindarán una inspección de seguridad completamente automatizada. Sería una locura pensar que en los próximos 50 años estaría bien considerar cualquier aplicación totalmente segura o segura, incluso con inteligencia artificial. Incluso se sabe que los métodos formales con especificaciones formales fallan.
Le sugiero que evalúe adecuadamente la situación única de una aplicación antes de determinar los resultados.
¿Suficiente para qué?
¿Suficiente para defenderse de otros ataques puramente automatizados como gusanos? Probablemente.
¿Suficiente para defenderse de ataques dirigidos por atacantes expertos? Ciertamente no.
Una mejor pregunta es "¿Un análisis automatizado reduce el riesgo a un nivel aceptable para mi aplicación?" La respuesta es, por supuesto, depende ...
Para usar una analogía, no haría la pregunta: "¿Es suficiente ir a mi médico de cabecera?" sin el contexto de "Necesito un chequeo anual" o "Acabo de cortar la mitad de mi torso"
Un escaneo automatizado podría ser suficiente para un sitio de folletos de baja criticidad en su propio dominio, pero definitivamente no es suficiente para una aplicación bancaria. La mayoría de los sitios se ubican en el medio, así que ... Depende ;-)
Lea otras preguntas en las etiquetas appsec penetration-test automated-testing