En este momento, no existe un método estandarizado para calcular el tamaño (inventario) de la deuda técnica. He estado trabajando con un equipo de investigación formado por investigadores de doctorado de la Universidad de Glasgow y el MIT para comenzar a crear un marco para abordar esto. Estamos combinando el Análisis de Procesos Teóricos de Sistemas para la Seguridad del MIT ) y los conceptos de la arquitectura naval, conocidos como Diseño de vulnerabilidad . Si bien las técnicas están destinadas a analizar una organización y cualquier subproceso, también es adecuada para una sola aplicación como objetivo de análisis.
Lo siguiente está bajo desarrollo y pruebas. Sin embargo, los conceptos son útiles.
Ingeniería de vulnerabilidad de teoría de sistemas
Para mi equipo, el cálculo de la "Deuda de seguridad de la aplicación" es solo otra forma de "Ingeniería de vulnerabilidad de sistemas-teoría". Esto es diferente de la administración de vulnerabilidades típica que puede tratarse con escáneres y parches automatizados y configuración. En su lugar, analiza el "sistema" en cuestión (su aplicación, en este caso) en su contexto completo de personas, procesos y tecnología a medida que se conecta con otros sistemas. Desde esta perspectiva de la teoría de sistemas, usted determina dónde están las vulnerabilidades y las debilidades (vulnerabilidades de futuro cercano).
Estas vulnerabilidades pueden estar en todo el espectro de:
- SQLi oculto detrás de las mitigaciones (las vulnerabilidades de SQLi desnudas y expuestas son un problema , no una deuda )
- subsistemas no parcheados
- procesos de parcheo manual que requieren la intervención humana para activar y completar
- falta de auditoría
Todas estas cosas representan una "deuda de seguridad" o una "vulnerabilidad de los sistemas".
Tenga en cuenta que este enfoque no tiene que ver con amenazas , aunque las vulnerabilidades se pueden definir mediante la comprensión de las amenazas. Este no es un proceso de modelado de amenazas (consulte la última sección).
Paso 1: Análisis de vulnerabilidad (forma hipercondensada)
- Defina el problema de seguridad (¿qué le preocupa?)
- Identifique tipos de control no seguro (por ejemplo, lógica del programa, mantenimiento del sistema, garantía)
- Identifique causas de tipos de control no seguros (por ejemplo, procesos, tecnología, recursos, conocimiento, cultura, etc.)
- Determine si esas causas existen actualmente (estado constante o intermitente)
Terminas con un análisis sistémico de las vulnerabilidades actuales de tu sistema.
Pero ahora todavía debe determinar si necesita hacer algo al respecto.
Paso 2: Análisis de control de respuesta (forma hipercondensada)
- Determine los controles de respuesta / recuperación alrededor de cada vulnerabilidad identificada (¿podemos detectar y responder a eventos inseguros?)
- Determine qué controles de respuesta / recuperación no pueden contener suficientemente cualquier incidente que explote o esté causado por las vulnerabilidades
- Determine si los controles de respuesta / recuperación suficientes sufren las vulnerabilidades actuales que podrían resultar en un control insuficiente.
Usted termina con una lista de vulnerabilidades de seguridad con mitigaciones insuficientes. Esta es tu deuda.
Tenga en cuenta que no todos los elementos que resultan de este proceso son tecnológicos (de hecho, de nuestros estudios de caso iniciales, pocos elementos son tecnológicos). Podría encontrar que su problema de SQLi es en realidad una debilidad en los procesos de revisión de código que son el resultado de una cultura de desarrollo de enfoque de características y no de enfoque de calidad de código. La deuda, en este caso, es cultural.
Paso 3: Alineación de riesgos
Aquí es donde comienza a diseñar las compensaciones entre 1) reducir las vulnerabilidades de varias maneras (personas o procesos o tecnología) y 2) mejorar los controles de respuesta para que los objetivos del sistema puedan apoyarse .
Al igual que con cualquier proceso de mitigación de riesgos, debe mantener los costos de mitigación por debajo de las pérdidas esperadas y todo debe completarse para respaldar los objetivos del sistema.
Modelado de vulnerabilidad frente a modelado de amenazas
Al adoptar un enfoque centrado en la teoría de sistemas y la vulnerabilidad, hemos descubierto que este proceso promueve soluciones que son rentables y se dirigen a la causa raíz de los problemas, no a los efectos de los problemas. También identificará las áreas que deben ser eliminadas para reducir las vulnerabilidades (un proceso sustractivo).
Los enfoques centrados en la amenaza tienden a ser reactivos, caros, tecnológicos y aditivos (hay una nueva amenaza, ¡necesitamos más cosas!). Esto tiene el efecto de crear más deuda, no de reducirla.