Estoy trabajando en un proyecto basado en .NET MVC que involucra una aplicación con más de 50,000 puntos de entrada únicos.
Al utilizar nuestro propio análisis de código estático personalizado creado con las bibliotecas de reflexión .NET, hemos podido identificar un número significativo de puntos finales de alto riesgo de seguridad marcados (según los atributos de autorización de seguridad). El uso de herramientas como Fortify proporciona demasiados falsos positivos debido a que el modelo AAA (Auth) está completamente construido a medida y sigue un camino muy diferente a las recomendaciones de MS.
Para nuestro enfoque principal a corto plazo, actualmente lo hemos limitado a algunos puntos de entrada de cara al público que tienen un alto uso (como inicio de sesión, servicios de administración de cuentas). Solo estos servicios tienen aproximadamente 100 puntos de entrada, muchos de los cuales son redirecciones obsoletas al servicio correcto.
En términos de gestión de aplicaciones en el SDLC (en particular para pruebas de cumplimiento, demostrando que son seguros), ¿cómo se pueden monitorear y administrar estos puntos? Nuestro análisis de código estático los ha marcado, pero no hace nada más.
Mi opinión es que estos puntos de entrada deben eliminarse y administrarse mediante redirecciones de alguna otra manera en IIS, pero se me ha informado que esta no es una opción de compatibilidad entre las aplicaciones más antiguas que usan estos servicios (un problema para otro día).
Las únicas otras cosas en las que puedo pensar es:
-
Crear servicios de auditoría en estos servicios para registrar cuándo se llama a los servicios obsoletos.
-
Coloque la prueba de la unidad en los servicios (posiblemente verifique que se produjo una redirección).
-
Agregue banderas negras en el control de origen para alertar que un ingeniero de seguridad debe realizar una revisión del código si algo cambia en estos servicios.
- Agregar un archivo de clase parcial con solo los métodos obsoletos y poner un bloqueo al cambiar el archivo.
Lo más importante con lo que estoy teniendo problemas es convencerme (y cumplir) de que estos procesos realmente están ocurriendo. Tenemos más de 300 desarrolladores en el proyecto, no un equipo fácil de administrar. ¿Cómo confirma que se están cumpliendo todos los procesos (es decir, cómo confirma que una prueba de unidad está en todos los servicios)?
¿Alguien ha estado en situaciones similares? ¿Cómo confirmó que se están llevando a cabo estas medidas de mitigación para sistemas grandes?
Gracias,