Steffen hace buenos puntos en su respuesta, pero me gustaría agregar algo más. El por qué, creo, se puede dividir en los siguientes temas:
- Falta de conocimiento o educación de los desarrolladores
- Churn en un entorno de desarrollo empresarial
- Presión para entregar antes de lo previsto
- No hay suficiente énfasis en la seguridad
Así que vamos a dividirlos.
Formación de desarrolladores
Hay mucho énfasis en la educación del usuario en estos días. Enseñar a los usuarios cómo mantener contraseñas seguras. Enseñar a los usuarios cómo identificar el phishing. Enseñar a los usuarios cómo ... Tienes la idea. Algunas empresas, probablemente muchas, pero solo puedo hablar de mi experiencia profesional y no he trabajado en muchas empresas;), tengo programas de capacitación. Pero esos programas de capacitación pueden estar incompletos o no alcanzar la profundidad del conocimiento necesario. Eso no es menospreciar el arduo trabajo que implica la creación de esos programas. Pero decir que al igual que en el entorno escolar, diferentes personas aprenden de manera diferente. Y a menos que tenga un programa de educación continua para desarrolladores, será difícil comunicarse "use consultas parametrizadas, y aquí le indicamos cómo hacerlo en PHP, Java, Python, Ruby, Scala, NodeJS, ...". Es un trabajo arduo desarrollar, entregar y mantener programas para desarrolladores que lleguen de manera efectiva a la audiencia.
Churn del desarrollador
Arriba, una de las cosas a las que aludí fue llegar a la audiencia de manera efectiva para diferentes tipos de aprendizaje. Una de las razones de esto es que muchas empresas tienen una alta tasa de deserción para los desarrolladores, porque los desarrolladores son contratistas que cambian de proyecto a proyecto en diferentes compañías. Y las empresas no siempre están en la misma madurez de seguridad. Es posible que una empresa no tenga un programa de seguridad, mientras que otra puede tener un excelente programa de seguridad y el desarrollador es repentinamente bombardeado con nueva información que se les solicitará durante los seis meses antes de mudarse a otra compañía. Es triste, pero sucede.
Entrega de proyectos
Entrega del proyecto a tiempo, o incluso antes de lo previsto. Lamentablemente, el camino más rápido para completar el proyecto no es completar el proyecto con controles de seguridad. Se está haciendo de la manera más rota que todavía funciona. Sabemos que causará más trabajo, más tiempo y más dinero más adelante cuando llegue el momento de mantener el proyecto y solucionar los problemas, pero la administración solo quiere que el proyecto salga.
Otro tema que mencioné es el desarrollo de programas de capacitación en seguridad para una gran variedad de lenguajes de programación. Muchas empresas no tienen uno o dos idiomas establecidos. Así que a los desarrolladores les gusta (o se les anima) probar el nuevo hotness. Eso incluye lenguajes y marcos. Esto significa que los programas de seguridad deben evolucionar continuamente.
buy-in de la administración
Y aquí estamos en la gestión. Cada vez, parece que en una brecha pública, hubo controles que podrían haberse implementado, que no son tan difíciles, pero que se pasaron por alto. Empuja a entregar productos primero y luego a preocuparse siempre, a pesar de lección tras lección tras lección, las compañías de productos regresan. La administración debe empujar desde la parte superior para tomarse el tiempo de construir seguridad al principio. Deben comprender que se gastará más trabajo, más tiempo y más dinero para solucionar problemas, mantener el producto y pagar multas. Pero los análisis de costo-beneficio apuntan a que el problema es la entrega del producto, no las multas o el trabajo de mantenimiento requerido. Esas ecuaciones deben cambiar, y eso se debe, en parte, a la educación (wooo, círculo completo) a nivel de MBA. Se debe enseñar a los gerentes de negocios que para tener éxito en un panorama de infracciones cada vez mayores, la seguridad debe estar al frente y en el centro.
Conclusión
El por qué, a pesar de que SQLi tiene casi 20 años, está lleno de varias razones. Como profesionales de la seguridad, solo podemos hacer mucho para educar y crear conciencia de lo que sucede cuando la seguridad no se considera parte integral del SDLC.