Articulo de referencia

Garantía de seguridad del software

La garantía de seguridad del software es un proceso que ayuda a diseñar e implementar software que proteja los datos y recursos que contiene y controla. El software es en sí mis...

La garantía de seguridad del software es un proceso que ayuda a diseñar e implementar software que proteja los datos y recursos que contiene y controla. El software es en sí mismo un recurso y, por lo tanto, debe contar con la seguridad adecuada .

¿Qué es la garantía de seguridad del software?

La garantía de seguridad del software (SSA, por sus siglas en inglés) es el proceso de asegurar que el software esté diseñado para operar con un nivel de seguridad que sea coherente con el daño potencial que podría resultar de la pérdida, inexactitud, alteración, indisponibilidad o mal uso de los datos y recursos que utiliza, controla y protege. [ 1 ]

El proceso de garantía de seguridad del software comienza con la identificación y categorización de la información que contendrá o utilizará el software. Esta información debe clasificarse según su nivel de sensibilidad . Por ejemplo, en la categoría más baja, el impacto de una violación de seguridad es mínimo (es decir, el impacto en la misión, las funciones o la reputación del propietario del software es insignificante). En cambio, en la categoría más alta, el impacto puede representar una amenaza para la vida humana; puede tener un impacto irreparable en la misión, las funciones, la imagen o la reputación del propietario del software; o puede resultar en la pérdida de activos o recursos importantes.

Una vez categorizada la información, se pueden definir los requisitos de seguridad. Estos requisitos deben abarcar el control de acceso , incluyendo el acceso a la red y el acceso físico; la gestión y el acceso a los datos; los controles ambientales (alimentación eléctrica, aire acondicionado, etc.) y el almacenamiento fuera de línea ; la seguridad de los recursos humanos; y los registros de auditoría y de uso.

¿Qué causa los problemas de seguridad del software?

Todas las vulnerabilidades de seguridad en el software son el resultado de errores o defectos de seguridad dentro del software. En la mayoría de los casos, estos defectos se originan por dos causas principales: (1) el incumplimiento de los requisitos; y (2) un error u omisión en los requisitos del software.

Incumplimiento o falta de cumplimiento de los requisitos

Una no conformidad puede ser simple ( lo más común es un error o defecto de codificación) o más compleja (por ejemplo, un error sutil de sincronización o un error de validación de entrada). Lo importante sobre las no conformidades es que las técnicas de verificación y validación están diseñadas para detectarlas, mientras que las técnicas de garantía de seguridad están diseñadas para prevenirlas. Las mejoras en estos métodos, mediante un programa de garantía de seguridad de software, pueden mejorar la seguridad del software.

Errores u omisiones en los requisitos del software

Los problemas de seguridad más graves en los sistemas basados ​​en software surgen cuando los requisitos del software son incorrectos, inapropiados o incompletos para la situación del sistema. Desafortunadamente, los errores u omisiones en los requisitos son más difíciles de identificar. Por ejemplo, el software puede funcionar exactamente como se requiere en condiciones normales de uso, pero los requisitos pueden no contemplar correctamente algún estado del sistema . Cuando el sistema entra en este estado problemático, puede producirse un comportamiento inesperado e indeseable. Este tipo de problema no puede resolverse dentro de la disciplina del software; es consecuencia de un fallo en los procesos de ingeniería de sistemas y software que desarrollaron y asignaron los requisitos del sistema al software.

actividades de garantía de seguridad del software

Existen dos tipos básicos de actividades de garantía de seguridad del software.

  1. Algunos se centran en garantizar que la información procesada por un sistema de información tenga asignada una categoría de sensibilidad adecuada, y que se hayan desarrollado y cumplido los requisitos de protección apropiados en el sistema.
  2. Otros se centran en garantizar el control y la protección del software, así como de las herramientas de soporte y los datos relacionados.

Como mínimo, un programa de garantía de seguridad de software debe asegurar que:

  1. Se ha realizado una evaluación de seguridad del software.
  2. Se han establecido requisitos de seguridad para el software.
  3. Se han establecido requisitos de seguridad para los procesos de desarrollo de software y/o de operación y mantenimiento (O&M).
  4. Cada revisión o auditoría de software incluye una evaluación de los requisitos de seguridad.
  5. Se ha implementado un proceso de gestión de la configuración y de acciones correctivas para brindar seguridad al software existente y garantizar que cualquier cambio propuesto no cree inadvertidamente violaciones de seguridad o vulnerabilidades .
  6. La seguridad física del software es adecuada.

Construcción en seguridad

Mejorar el proceso de desarrollo de software y crear software de mayor calidad son formas de mejorar la seguridad del software , al producir software con menos defectos y vulnerabilidades. Un enfoque fundamental consiste en identificar los componentes críticos del software que controlan las funciones relacionadas con la seguridad y prestarles especial atención durante todo el proceso de desarrollo y pruebas. Este enfoque ayuda a concentrar los escasos recursos de seguridad en las áreas más críticas.

Herramientas y técnicas

Existen numerosos paquetes de software comerciales listos para usar (COTS, por sus siglas en inglés) disponibles para respaldar las actividades de garantía de seguridad del software. Sin embargo, antes de utilizarlos, estas herramientas deben evaluarse cuidadosamente y debe garantizarse su eficacia.

Enumeración de debilidades comunes

Una forma de mejorar la seguridad del software es comprender mejor las vulnerabilidades más comunes que pueden afectarla. Con esto en mente, existe un programa comunitario actual llamado Proyecto de Enumeración de Vulnerabilidades Comunes [ 2 ] , patrocinado por The Mitre Corporation, para identificar y describir dichas vulnerabilidades. La lista, que actualmente se encuentra en una fase muy preliminar, contiene descripciones de vulnerabilidades, fallos y defectos comunes del software.

Análisis de arquitectura/diseño de seguridad

El análisis de arquitectura /diseño de seguridad verifica que el diseño del software implemente correctamente los requisitos de seguridad. En términos generales, existen cuatro técnicas básicas que se utilizan para el análisis de arquitectura/diseño de seguridad. [ 3 ] [ 4 ]

Análisis lógico

El análisis lógico evalúa las ecuaciones , los algoritmos y la lógica de control del diseño del software.

Análisis de datos

El análisis de datos evalúa la descripción y el uso previsto de cada elemento de datos utilizado en el diseño del componente de software . Se debe prestar especial atención al uso de interrupciones y su efecto en los datos para garantizar que las rutinas de manejo de interrupciones no alteren datos críticos utilizados por otras rutinas.

Análisis de interfaz

El análisis de interfaces verifica el diseño adecuado de las interfaces de un componente de software con otros componentes del sistema, incluidos el hardware , el software y los usuarios finales .

Análisis de restricciones

El análisis de restricciones evalúa el diseño de un componente de software en función de las limitaciones impuestas por los requisitos y las condiciones del mundo real. El diseño debe ser compatible con todas las restricciones conocidas o previstas del componente. Estas restricciones pueden incluir limitaciones de tiempo, tamaño y rendimiento, limitaciones de datos de entrada y salida, limitaciones de ecuaciones y algoritmos, y otras limitaciones de diseño.

Revisiones de código, inspecciones y recorridos seguros.

El análisis de código verifica que el código fuente del software esté escrito correctamente, implemente el diseño deseado y no infrinja ningún requisito de seguridad. En general, las técnicas utilizadas en el análisis de código son similares a las empleadas en el análisis de diseño.

Las revisiones de código seguro se realizan durante y al final de la fase de desarrollo para determinar si se han cumplido los requisitos de seguridad, los conceptos de diseño de seguridad y las especificaciones relacionadas con la seguridad. Estas revisiones suelen consistir en la presentación de material a un grupo de revisión. Las revisiones de código seguro son más efectivas cuando las lleva a cabo personal que no ha participado directamente en el desarrollo del software que se está revisando.

Reseñas informales

Las revisiones informales de código seguro pueden realizarse según sea necesario. Para llevar a cabo una revisión informal, el desarrollador simplemente selecciona a uno o más revisores y proporciona o presenta el material a revisar. Este material puede ser tan informal como pseudocódigo o documentación manuscrita.

Revisiones formales

Las revisiones formales de seguridad del código se realizan al final de la fase de desarrollo de cada componente de software. El cliente del software designa al grupo de revisión formal, que puede tomar o influir en la decisión de "seguir adelante/no seguir adelante" para pasar a la siguiente etapa del ciclo de vida del desarrollo del software .

Inspecciones y recorridos

Una inspección o revisión de código seguro consiste en un examen detallado de un producto paso a paso o línea por línea (del código fuente ). El objetivo de estas inspecciones es detectar errores. Por lo general, el equipo que realiza la inspección está compuesto por profesionales de desarrollo, ingeniería de seguridad y control de calidad .

Pruebas de seguridad

Las pruebas de seguridad de software , que incluyen pruebas de penetración , confirman los resultados del análisis de diseño y código, investigan el comportamiento del software y verifican que cumpla con los requisitos de seguridad. Las pruebas de seguridad especiales, realizadas de acuerdo con un plan y procedimientos de pruebas de seguridad, establecen el cumplimiento del software con dichos requisitos. Estas pruebas se centran en localizar vulnerabilidades del software e identificar situaciones extremas o inesperadas que podrían provocar fallos que infrinjan los requisitos de seguridad. Los esfuerzos de las pruebas de seguridad suelen limitarse a los requisitos de software clasificados como elementos de seguridad "críticos".

Véase también

Referencias

  1. Goertzel, Karen M.; Winograd, Theodore; McKinley, Holly L.; Oh, Lyndon J.; Colon, Michael; McGibbon, Thomas; Fedchak, Elaine; Vienneau, Robert (31 de julio de 2007). "Garantía de seguridad del software: un informe sobre el estado del arte (SAR)" . Fort Belvoir, VA. doi : 10.21236/ada472363 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  2. "Proyecto de enumeración de debilidades comunes" . Consultado el 26 de agosto de 2010 .
  3. Pruebas de seguridad de aplicaciones web
  4. "Un catálogo de debilidades en la arquitectura de seguridad". Conferencia Internacional IEEE de Arquitectura de Software (ICSA) de 2017. doi:10.1109/ICSAW.2017.25.