stringtranslate.com

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 contenidos en dicho software y controlados por él. El software es en sí mismo un recurso y, por lo tanto, se le debe brindar la seguridad adecuada .

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

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

El proceso de garantía de seguridad del software comienza identificando y categorizando la información que debe estar contenida en el software o que este debe utilizar. La información debe categorizarse de acuerdo con su 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). Sin embargo, en una categoría superior, el impacto puede representar una amenaza para la vida humana; puede tener un impacto irreparable en las misiones, las funciones, la imagen o la reputación del propietario del software; o puede resultar en la pérdida de activos o recursos significativos.

Una vez que se ha clasificado la información, se pueden desarrollar los requisitos de seguridad. Los requisitos de seguridad deben abordar el control de acceso , incluido el acceso a la red y el acceso físico; la gestión de datos y el acceso a los mismos; los controles ambientales (energía, 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 de seguridad o defectos dentro del software. En la mayoría de los casos, estos defectos se crean por dos causas principales: (1) incumplimiento o no cumplimiento de los requisitos; y (2) un error u omisión en los requisitos del software.

No conformidad o incumplimiento de los requisitos

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

Errores u omisiones en los requisitos del software

Los problemas de seguridad más graves con los sistemas basados ​​en software son aquellos que se desarrollan 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 bajo un uso normal, pero los requisitos pueden no manejar correctamente algún estado del sistema . Cuando el sistema entra en este estado problemático, puede resultar en un comportamiento inesperado e indeseable. Este tipo de problema no se puede manejar dentro de la disciplina del software; es el resultado de un fallo del sistema y de los procesos de ingeniería de software que desarrollaron y asignaron los requisitos del sistema al software.

Actividades de garantía de seguridad del software

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

  1. Algunos se centran en garantizar que a la información procesada por un sistema de información se le asigne 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 del software y de los datos.

Como mínimo, un programa de garantía de seguridad de software debe garantizar 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 operaciones y mantenimiento (O&M).
  4. Cada revisión o auditoría de software incluye una evaluación de los requisitos de seguridad.
  5. Existe un proceso de gestión de configuración y de acciones correctivas para brindar seguridad al software existente y garantizar que cualquier cambio propuesto no cree inadvertidamente violaciones o vulnerabilidades de seguridad .
  6. La seguridad física del software es adecuada.

Construyendo seguridad

Mejorar el proceso de desarrollo de software y crear un software mejor son formas de mejorar la seguridad del software , al producir software con menos defectos y vulnerabilidades. Un enfoque de primer orden 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 prueba. Este enfoque ayuda a concentrar los escasos recursos de seguridad en las áreas más críticas.

Herramientas y técnicas

Existen muchos paquetes de software comercialmente disponibles (COTS) que respaldan las actividades de garantía de seguridad del software. Sin embargo, antes de utilizarlos, estas herramientas deben evaluarse cuidadosamente y debe asegurarse su eficacia.

Enumeración de debilidades comunes

Una forma de mejorar la seguridad del software es comprender mejor las debilidades más comunes que pueden afectar la seguridad del software. Teniendo esto en cuenta, existe un programa comunitario en curso llamado Common Weaknesses Enumeration project [2] , que está patrocinado por The Mitre Corporation para identificar y describir dichas debilidades. La lista, que actualmente se encuentra en una forma muy preliminar, contiene descripciones de debilidades, fallas y defectos comunes del software.

Análisis de diseño/arquitectura de seguridad

El análisis de la arquitectura y el 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 la arquitectura y el 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 . El uso de interrupciones y su efecto sobre los datos deben recibir especial atención para garantizar que las rutinas de manejo de interrupciones no alteren los datos críticos utilizados por otras rutinas.

Análisis de interfaz

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

Análisis de restricciones

El análisis de restricciones evalúa el diseño de un componente de software en función de las restricciones impuestas por los requisitos y las limitaciones del mundo real. El diseño debe responder a todas las restricciones conocidas o previstas del componente de software. 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, inspecciones y recorridos de código 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 viole ningún requisito de seguridad. En términos generales, las técnicas que se utilizan en el análisis de código son similares a las que se utilizan en el análisis de diseño.

Las revisiones de código seguro se llevan a cabo durante y al final de la fase de desarrollo para determinar si se han satisfecho los requisitos de seguridad establecidos, 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 eficaces cuando las llevan a cabo personal que no ha participado directamente en el desarrollo del software que se está revisando.

Reseñas informales

Se pueden realizar revisiones informales de código seguro según sea necesario. Para realizar una revisión informal, el desarrollador simplemente selecciona uno o más revisores y proporciona y/o presenta el material que se va a revisar. El material puede ser tan informal como pseudocódigo o documentación escrita a mano.

Revisiones formales

Las revisiones formales de código seguro se llevan a cabo 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 afectar una decisión de "seguir adelante o no" para continuar con el siguiente paso del ciclo de vida del desarrollo del software .

Inspecciones y recorridos

Una inspección o un recorrido de código seguro es un examen detallado de un producto paso a paso o línea por línea (del código fuente ). El propósito de realizar inspecciones o recorridos de código seguro es encontrar errores. Por lo general, el grupo que realiza una inspección o un recorrido está compuesto por pares de desarrollo, ingeniería de seguridad y control de calidad .

Pruebas de seguridad

Las pruebas de seguridad del software , que incluyen pruebas de penetración , confirman los resultados del diseño y el análisis de código, investigan el comportamiento del software y verifican que el software cumple 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 los requisitos de seguridad. Las pruebas de seguridad se centran en localizar las debilidades del software e identificar situaciones extremas o inesperadas que podrían hacer que el software falle de maneras que causarían una violación de los requisitos de seguridad. Los esfuerzos de pruebas de seguridad a menudo se limitan a los requisitos del software que se clasifican 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 de última generación (SAR)". Fort Belvoir, VA. doi :10.21236/ada472363. {{cite journal}}: Requiere citar revista |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 de la arquitectura de seguridad". Conferencia internacional IEEE sobre arquitectura de software (ICSA) de 2017. doi:10.1109/ICSAW.2017.25.