Semana 01 - Sesiones 01-02
Semana 01 - Sesiones 01-02
Semana 01 - Sesiones 01-02
SEGURIDAD DEL
SOFTWARE
Ms.C. Jhosep Valenzuela
Contenido
Umbral de modificación inversa Protección jerárquica Elementos de seguridad Privilegio mínimo Permiso de predicado
minimizados
Confiabilidad autosuficiente Composición distribuida segura Canales de comunicación
confiables
Falla segura y recuperación Seguridad económica Seguridad de rendimiento Seguridad de factores humanos Seguridad aceptable
Es una declaración simple acordada por todas las partes interesadas (desarrolladores,
clientes y administración) que establece el propósito del proyecto, así como los requisitos
generales del sistema.
La definición conceptual es una declaración de propósito de muy alto nivel y no debe tener
más de uno o dos párrafos.
Los requisitos de seguridad desarrollados en esta fase son generalmente de muy alto nivel.
Se refinarán durante la fase de desarrollo de especificaciones de control. En este punto del
proceso, los diseñadores comúnmente identifican la(s) clasificación(es) de datos que serán
procesados por el sistema y los requisitos de manejo aplicables.
En este proceso, que suele ser largo, los diseñadores determinan exactamente cómo
interoperarán las diversas partes del sistema y cómo se diseñará la estructura del sistema
modular.
Durante esta fase, el equipo de gestión de diseño establece tareas específicas para varios
equipos y establece plazos iniciales para completar los hitos de codificación.
Después de que el equipo de diseño complete los documentos de diseño formales, se debe
realizar una reunión de revisión con las partes interesadas para garantizar que todos estén
de acuerdo en que el proceso sigue encaminado para el desarrollo exitoso de un sistema
con la funcionalidad deseada.
Esta reunión de revisión del diseño debe incluir profesionales de seguridad que puedan
validar que el diseño propuesto cumple con las especificaciones de control desarrolladas
en la fase anterior.
Una vez que las partes interesadas han dado su aprobación al diseño del software, es hora
de que los desarrolladores de software comiencen a escribir el código.
Los desarrolladores deben usar los principios de codificación de software seguro para crear
un código que sea consistente con el diseño acordado y cumpla con los requisitos del
usuario.
Inicialmente, la mayoría de las organizaciones realizan las pruebas iniciales del sistema
utilizando personal de desarrollo para buscar errores obvios.
A medida que avanza la prueba, los desarrolladores y los usuarios reales validan el sistema
frente a escenarios predefinidos que modelan actividades de usuario comunes e inusuales.
Estos procedimientos de prueba deben incluir pruebas funcionales que verifiquen que el
software funcione correctamente y pruebas de seguridad que verifiquen que no haya
problemas de seguridad significativos sin resolver.
Una vez que los desarrolladores están satisfechos de que el código funciona
correctamente, el proceso pasa a la prueba de aceptación del usuario (UAT), donde los
usuarios verifican que el código cumple con sus requisitos y lo aceptan formalmente como
listo para pasar al uso de producción.
Una vez que se completa esta fase, el código puede pasar a la implementación.
Una vez que un sistema está operativo, es necesario realizar una variedad de tareas de
mantenimiento para garantizar el funcionamiento continuo frente a los cambiantes
requisitos operativos, de procesamiento de datos, de almacenamiento y ambientales.
Es esencial que cuente con un equipo de soporte calificado para manejar cualquier
mantenimiento de rutina o inesperado.
También es importante que cualquier cambio en el código se maneje a través de un
proceso de gestión de cambios formalizado.
Originalmente desarrollado por Winston Royce en 1970, el modelo de cascada busca ver el
ciclo de vida del desarrollo de sistemas como una serie de actividades secuenciales.
El modelo de cascada tradicional tiene siete etapas secuenciales de desarrollo. A medida
que se completa cada etapa, el proyecto pasa a la siguiente fase.
El modelo de cascada, por necesidad, evolucionó a un modelo más moderno. El modelo
iterativo en cascada permite que el desarrollo regrese a la fase anterior para corregir los
defectos descubiertos durante la fase siguiente.
Esto a menudo se conoce como la característica del circuito de retroalimentación del
modelo de cascada.
En 1988, Barry Boehm de TRW propuso un modelo de ciclo de vida alternativo que permite
múltiples iteraciones de un proceso estilo cascada.
Debido a que el modelo en espiral encapsula una serie de iteraciones de otro modelo (el
modelo en cascada), se lo conoce como metamodelo o "modelo de modelos".
Teóricamente, los desarrolladores de sistemas aplicarían todo el proceso en cascada al
desarrollo de cada prototipo, trabajando así de manera incremental hacia un sistema
maduro que incorpore todos los requisitos funcionales de una manera completamente
validada. El modelo en espiral de Boehm proporciona una solución a la principal crítica del
modelo en cascada: permite a los desarrolladores volver a las etapas de planificación, ya
que las cambiantes demandas técnicas y los requisitos del cliente requieren la evolución de
un sistema.
El modelo en cascada se enfoca en un esfuerzo a gran escala para entregar un sistema
terminado, mientras que el modelo en espiral se enfoca en iterar a través de una serie de
prototipos cada vez más "terminados" que permiten un control de calidad mejorado.
Nivel 4: Gestionado La gestión del proceso de software pasa al siguiente nivel. Las
medidas cuantitativas se utilizan para obtener una comprensión detallada del proceso de
desarrollo.
Procesos clave: Gestión de Procesos Cuantitativos y Gestión de Calidad del Software.
Nivel 5: Optimización En la organización optimizada se produce un proceso de mejora
continua. Se implementan procesos de desarrollo de software sofisticados que aseguran
que la retroalimentación de una fase llegue a la fase anterior para mejorar los resultados
futuros.
Procesos clave: Prevención de defectos, Gestión de cambios tecnológicos y Gestión de
cambios de procesos.
El SEI también desarrolló el modelo IDEAL (con muchos de los atributos de SW-CMM):
1: Initiating Se describen las razones comerciales detrás del cambio, se construye el
soporte para la iniciativa y se establece la infraestructura adecuada.
2: Diagnosis Los ingenieros de diagnóstico analizan el estado actual de la organización y
hacen recomendaciones generales para el cambio.
3: Establishing La organización toma las recomendaciones generales de la fase de
diagnóstico y desarrolla un plan de acción específico que ayude a lograr esos cambios.
4: Acting Es hora de dejar de "hablar por hablar" y "caminar por el camino". La
organización desarrolla soluciones y luego las prueba, las refina y las implementa.
5: Learning La organización debe analizar continuamente sus esfuerzos para determinar si
ha alcanzado las metas deseadas y, cuando sea necesario, proponer nuevas acciones
para volver a encarrilar a la organización.
Gestión de cambios:
1. Control de solicitudes Proporciona un marco organizado dentro del cual los
usuarios pueden solicitar modificaciones, los administradores pueden realizar
análisis de costo/beneficio y los desarrolladores pueden priorizar tareas.
2. Control de cambios Los desarrolladores pueden recrean la situación encontrada
por el usuario y analizar los cambios apropiados para remediar la situación,
involucra crear y probar una solución antes de implementarla en un entorno de
producción.
Incluye: Control de calidad, implementación de actualizaciones o cambios, la
documentación adecuada de cualquier cambio codificado y la seguridad.
3. Control de liberación Verificar que cualquier código insertado como código de
depuración y/o puertas traseras se elimine antes de lanzar el nuevo software a
producción. Garantiza que solo se realicen cambios aprobados en los sistemas de
producción. El control de versiones también debe incluir pruebas de aceptación.
Gestión de configuración:
La gestión de configuración de sistemas centrada en la seguridad implica un conjunto de
actividades que se pueden organizar en cuatro fases principales:
• Planificación
• Identificación e Implementación de Configuraciones
• Control de Cambios de Configuración
• Monitoreo
Respalda la seguridad del sistema y la gestión del riesgo organizacional.
1. Planificación
Incluye el desarrollo de políticas y procedimientos para incorporar SecCM en los programas
de seguridad y TI existentes, y luego difundir la política en toda la organización.
La política aborda áreas tales como la implementación de planes SecCM, la integración en
planes de programas de seguridad existentes, tableros de control de configuración (CCB),
procesos, herramientas y tecnología de control de cambios de configuración, el uso de
configuraciones seguras comunes y configuraciones de referencia, monitoreo y métricas
para el cumplimiento con la política y los procedimientos establecidos de SecCM.
Por lo general, es más rentable desarrollar e implementar un plan SecCM, políticas,
procedimientos y herramientas SecCM asociadas a nivel de gestión de riesgos de la
organización o de la misión/proceso comercial.
4. Monitoreo
Validar que el sistema se adhiere a las políticas y procedimientos de la organización y la
configuración segura aprobada.
Planear e implementar configuraciones seguras y luego controlar el cambio de
configuración generalmente no es suficiente para garantizar que un sistema que alguna vez
fue seguro lo siga siendo.
El monitoreo identifica componentes del sistema no descubiertos/no documentados,
configuraciones incorrectas, vulnerabilidades y cambios no autorizados, todo lo cual, si no
se aborda, puede exponer a las organizaciones a un mayor riesgo.
El uso de herramientas automatizadas ayuda a las organizaciones a identificar de manera
eficiente cuándo el sistema no es coherente con la configuración de referencia aprobada y
cuándo son necesarias acciones correctivas.
El seguimiento de SecCM se realiza a través de actividades de evaluación y elaboración de
informes.
Referencia: NIST, Special Publication 800-128
Resumen
Los datos son el recurso más valioso que poseen muchas organizaciones.
En este punto, sin duda reconoce la importancia de colocar controles de acceso adecuados
y pistas de auditoría en estos valiosos recursos de información.
Finalmente, se pueden implementar varios controles durante el proceso de desarrollo del
sistema y la aplicación para garantizar que el producto final de estos procesos sea
compatible con la operación en un entorno seguro. Dichos controles incluyen aislamiento
de procesos, segmentación de hardware, abstracción y arreglos contractuales como
acuerdos de nivel de servicio (SLA).
La seguridad siempre debe introducirse en las primeras fases de planificación de cualquier
proyecto de desarrollo y monitorearse continuamente a lo largo de las fases de diseño,
desarrollo, implementación y mantenimiento de la producción.
Preguntas de revisión
3. What software development model uses a seven-stage approach with a feedback loop
that allows progress one step backward?
A. Boyce-Codd
B. Iterative waterfall
C. Spiral
D. Agile
Preguntas de revisión
6. In which phase of the SW-CMM does an organization use quantitative measures to gain
a detailed understanding of the development process?
A. Initial
B. Repeatable
C. Defined
D. Managed
Preguntas de revisión
7. Which one of the following is not part of the change management process?
A. Request control
B. Release control
C. Configuration audit
D. Change control