diferencia entre el control de flujo de información, la integridad del flujo de datos y la contaminación

1

Las tres técnicas / conceptos se mencionan con frecuencia en documentos académicos de seguridad recientes.

Pero, ¿cuáles son la similitud, la diferencia y la relación entre ellos?

Abajo está mi entendimiento muy superficial:

Todos ellos implican etiquetas, que se utilizan para indicar las fuentes o los tipos de información.

La contaminación es una forma simple de control de flujo de información. Solo tiene 1 bit de información para cada byte / palabra: contaminada o no contaminada.

¿Podría alguien proporcionar más información sobre la pregunta?

    
pregunta Infinite 03.06.2016 - 16:53
fuente

2 respuestas

1

El control del flujo de información es un concepto amplio, pero el punto crucial es que uno puede intentar aumentar la seguridad de un proceso identificando qué partes de la memoria debería modificar legítimamente, y luego comparando eso con qué partes de la memoria realmente Intenta modificar. Puede ser tan amplio o granular como desee: podría considerar Code Access Security como un formulario muy completo de la IFC, o Incluso algo tan simple como permisos de archivos y auditorías. Sin embargo, más comúnmente, IFC se aplica al código en tiempo de compilación / enlace y se aplica en el ensamblado generado (o en el tiempo de ejecución de idioma si el programa está basado en JIT). Esto también puede, de manera más general, aplicarse a casos como la fuga de información, donde desea comprender cómo una información confidencial se abre paso a través del sistema.

El análisis de contaminación es un mecanismo mediante el cual se pueden implementar algunos aspectos de la CFI. Para generar la lista blanca de secciones de memoria legítimas que se espera que una operación toque, el compilador evalúa el código de las variables que se leen / escriben, las funciones que se llaman y las rutas de código que se deben seguir (por ejemplo, si un método se llama con un valor estático, puede inferir que ciertas ramas siempre deben tomarse / no tomarse). Esta lista puede considerarse como una lista de entidades que están contaminadas por la operación. En un caso más amplio, la verificación de la contaminación también se puede utilizar como parte de las técnicas de análisis de código donde las fuentes (es decir, las ubicaciones de donde proviene la entrada no confiable) se pueden mapear contra los drenajes (es decir, las ubicaciones donde ocurren operaciones relevantes para la seguridad), de manera que cada fuente tiene una lista de drenajes contaminados, y cada drenaje tiene una lista de fuentes desde las cuales puede potencialmente contaminarse; esto se demuestra comúnmente al considerar un caso en el que el valor de URL (fuente) puede alcanzar una consulta SQL (drenaje), lo que resulta en una inyección de SQL.

La integridad del flujo de datos es simplemente un término usado para describir si una aplicación bajo protección IFC se ha desviado fuera del flujo esperado. Cuando se ejecuta el programa, está instrumentado de alguna manera para garantizar que cada instrucción o conjunto de instrucciones no viole la integridad del flujo de datos, es decir, los valores que se esperaba que no se contuvieran con la operación se mantuvieron así.

    
respondido por el Polynomial 03.06.2016 - 17:27
fuente
0

Control de flujo de información

La forma en que lo entiendo es que Information Flow Control es un superconjunto de medidas para proteger el control y el flujo de datos de los programas contra interferencias maliciosas.

Integridad del flujo de datos

Asegure la integridad de sus datos asegurándose de que ningún dato no confiable (por ejemplo, la entrada del usuario) pueda influir en partes cruciales de su cálculo. De alguna manera, está conectado para controlar la integridad del flujo donde desea asegurarse de que un atacante no pueda desviar el flujo de control, por ejemplo. sin desbordamientos de búfer, programación orientada al retorno y similares, pero no tengo una distinción clara para usted. Algunos podrían argumentar que la Integridad del flujo de datos también cubre ataques de solo datos donde no se ejecuta código irregular pero la entrada maliciosa solo cambia los datos en los que opera el programa, pero no estoy completamente seguro de la definición exacta.

Seguimiento de contaminación

Un mecanismo de control de flujo de información que asigna etiquetas a los datos de interés. Las etiquetas pueden ser más que un simple valor lógico, por ejemplo, los datos pueden estar etiquetados por su origen. Cada vez que se usan datos etiquetados / contaminados en un cálculo, la corrupción se transfiere y tan pronto como los datos contaminados están a punto de filtrarse (escritos en archivo / registros / red / ...). Taint Tracking es una medida bien estudiada en el campo del control de flujo de información. Lucha por dar garantías duras, pero a menudo se usa en la práctica. Taint Tracking puede implementarse como análisis dinámico o estático.

    
respondido por el user3363866 03.06.2016 - 17:21
fuente

Lea otras preguntas en las etiquetas