SlideShare ist ein Scribd-Unternehmen logo
1 von 20
CONDICIONES DE
CARRERA
RACE CONDITION
Lic. Maribel Jiménez G.
Contenido
1. Introducción
2. Descripción del problema
3. Formas en que es susceptible de ser explotado.
4. Medidas preventivas, detección, correctivas.
Introducción
Una condición de carrera se produce cuando dos subprocesos
tienen acceso a una variable compartida al mismo tiempo.
Una condición de carrera es cuando dos diferentes contextos de
ejecución (hilos, procesos o tareas), pueden cambiar un recurso o
interferir con otro.
El primer subproceso lee la variable, y el segundo subproceso lee el
mismo valor de la variable. El primer y segundo subproceso realizan
sus operaciones en el valor y se ejecutan para ver qué subproceso
puede escribir el ultimo valor en la variable compartida.
4
Usuario A
Usuario B
Deposito
$100
Retiro
$200
Cuent
a
Saldo
Final
$1100
Saldo
Inicial
$1000
Vista Inicial
1. Inicia pero se
interrumpe
2. Inicia y
concluye la
operación
3. Usuario
A concluye
operación
Saldo no registrado
$800
Descripción
5
Descripción
Se asigna a cada subproceso un período predefinido de tiempo de
ejecución en un procesador.
Cuando caduca el tiempo asignado para el subproceso, se guarda el
contexto del subproceso hasta su próximo turno en el procesador y
el procesador comienza la ejecución del subproceso siguiente.
Es posible que el subproceso 1 complete su ejecución antes de que
su tiempo caduque en el procesador, a continuación, el subproceso
2 puede comenzar su ejecución, en esta caso no se produce la
condición de carrera.
Error aleatorio
En la ejecución del subproceso no se puede controlar el tiempo o el
orden de ejecución.
Los subprocesos se ejecutan de forma aleatoria haciendo que estos
errores sean mucho más difíciles de encontrar, depurar y
6
Descripción
Propiedades necesarias para que pueda existir una condición de
carrera:
1. Concurrencia de propiedades.
Debe haber por lo menos dos flujos de control de ejecución al
mismo tiempo.
2. Objeto compartido.
Un objeto con la propiedad de ser compartido debe ser visitado
por flujos concurrentes.
3. Cambie la propiedad del Estado.
Al menos uno de los flujos de control deben alterar el estado del
objeto. Más de un subproceso o proceso debe escribir al mismo
recurso.
7
Afectación
Cuando se presenta una condición de carrera, existe un intervalo de
tiempo durante el que un atacante puede obtener privilegios, leer y
escribir archivos protegidos, y vulnerar las políticas de seguridad del
sistema.
8
Afectación
9
Afectación
10
Afectación
11
Afectación
12
Identificación
Se pueden realizar diferentes pruebas. El tiempo de ejecución es la métrica
más usada para la generación de informes.
Estrategias de pruebas
Las pruebas de una aplicación simultánea incluyen pruebas de:
 Corrección,
 Confiabilidad,
 Rendimiento
La corrección de la aplicación se comprueba mediante técnicas como:
 El análisis estático, analizan el código sin ejecutar el programa. se lleva a
cabo mediante la observación de los metadatos desde una aplicación
compilada o un código fuente anotado.
13
Identificación
El rendimiento y la confiabilidad se prueban mediante el estudio de las
sobrecargas introducidas mediante el paralelismo y las pruebas de esfuerzo.
La escalabilidad se prueba mediante el análisis del rendimiento de la
aplicación en sistemas de diferentes tamaños.
Prefix y Prefast son dos de las herramientas de análisis estático más conocidas
para las aplicaciones nativas, mientras que FxCop es muy popular para trabajar
con código administrado.
 El análisis dinámico. Los errores se detectan al observar las superficies de
ejecución. Hay dos tipos de análisis dinámicos: con conexión y sin conexión.
Las herramientas que usan el análisis dinámico analizan un programa
mientras se ejecuta.
Algunas herramientas sólo pueden detectar una condición carrera si se produce
en la ejecución.
14
Identificación
 La comprobación de modelos. El método para comprobar la corrección de
un sistema simultáneo de estado finito. Intenta simular las condiciones de
carrera y de bloqueo.
Este método ofrece una confianza superior en el diseño y en la arquitectura.
La comprobación de modelos puede demostrar que el diseño no tiene errores,
pero la implementación puede ser incorrecta.
Sólo resulta útil para secciones pequeñas y esenciales de un producto.
15
Identificación
Herramientas de pruebas de simultaneidad
o CHESS Creada por Microsoft Research, es una nueva combinación de la
Comprobación de modelos y del Análisis dinámico.
o El Comprobador de subprocesos de Intel Se trata de una herramienta de
análisis dinámico para encontrar bloqueos, carreras de datos y usos
incorrectos de las API de sincronización nativas de Windows
o RacerX. Herramienta de análisis estático que distingue el flujo, se usa para
detectar carreras y bloqueos.
o Chord. Herramienta de análisis estático para Java que no distingue el flujo
pero sí el contexto. Al no distinguir el flujo puede ser más escalable que
otras herramientas estáticas, pero el precio es una pérdida de precisión.
16
Identificación
o KISS. Desarrollada por Microsoft Research, es una herramienta de
Comprobación de modelos diseñada para los programas C simultáneos.
o Zing Esta herramienta es un comprobador de modelos puro pensado
para la comprobación de diseños de programas simultáneos
17
Pruebas de rendimiento
Las pruebas de rendimiento son una parte integral y esencial del proceso
de prueba de simultaneidad.
En el caso de los escenarios de pruebas paralelas, se pueden usar las
siguientes variables como criterios de aceptación.
 Variación en los resultados de la prueba. Indica que se trata de una
aplicación inestable.
 Uso de CPU. Un uso bajo de la CPU podría ser señal de errores de
simultaneidad, como bloqueos y sobrecargas de sincronización.
 Uso total de memoria.
 El tiempo de ejecución total del subproceso.
Identificación
18
Las soluciones para evitar la condición de carrera implican el uso de semáforos
y objetos de exclusión mutua (mutex) para proteger la sección crítica.
Métodos de sincronización para controlar las interacciones de subprocesos:
 Operaciones de bloqueo. Por ejemplo bloquear las variables compartidas,
por lo que sólo un subproceso tenga acceso a la variable compartida.
 Señalización. La manera más sencilla de esperar una señal de otro
subproceso es llamar un función, que lo pueda bloquear hasta que se
complete el otro subproceso.
 Interbloqueo. Dos subprocesos intentan bloquear un recurso que ya ha
bloqueado uno de estos subprocesos. Ninguno de los subprocesos puede
avanzar.
Hacer el código relevante (sección crítica) atómico con respecto a los
datos necesario, (atómico, el código se ejecuta como si fuera una sola
operación, sin interrupción), considerando que el código que ha de ser
atómico sea lo más pequeño posible.
Medidas preventivas
19
Ejemplos de Riesgos de condición de carrera que se deben evitar en .NET:
 Condiciones de carrera en Método Dispose (libera todos los recursos que
posee, liberando memoria). Si el método Dispose no está sincronizado, es
posible que el código de limpieza de Dispose se ejecute más de una vez.
 Condiciones de carrera en constructores. En algunas aplicaciones, es
posible que otros subprocesos tengan acceso a miembros de clase antes de
que finalice la ejecución de sus constructores por lo que es necesario
sincronizar los subprocesos.
 Condiciones de carrera con objetos en caché. El código que almacena en
caché la información relacionada con la seguridad puede ser vulnerable a
condiciones de carrera si otras partes de la clase no están sincronizadas
correctamente.
 Condiciones de carrera en finalizadores. Si hay varios objetos que
comparten un recurso que se manipula en un finalizador de la clase, se deben
sincronizar los accesos a ese recurso en todos los objetos.
Medidas preventivas
20
Referencias
Microsoft. (27 de Noviembre de 2013). Support. Obtenido de Description of race conditions and
deadlocks: http://support.microsoft.com/kb/317723
Microsoft (15 de enero de 2014) Seguridad y condiciones de carrera,
http://msdn.microsoft.com/es-es/library/1az4z7cb(v=vs.110).aspx?cs-save-lang=1&cs-
lang=vb#code-snippet-1
Microsoft (15 de enero de 2014) Información general sobre los primitivos de sincronización
http://msdn.microsoft.com/es-es/library/ms228964(v=vs.110).aspx
NIST, Vulnerabilidades y Exposiciones Comunes, (15 de enero de 2014)
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-1284
CWE-362: Ejecución simultánea utilizando recursos compartidos con sincronización inadecuada
("condición de carrera"), (15 de enero de 2014)
http://cwe.mitre.org/data/definitions/362.html&usg=ALkJrhjfMpwH2n1lQJ2CBX_p-xDIrGying
Intenco, (15 de enero de 2014)
http://cert.inteco.es/vulnDetail/Actualidad/Actualidad_Vulnerabilidades/detalle_vulnerabilidad/
MSDN Magazine, Herramientas y técnicas para identificar los problemas de simultaneidad (15 de
enero de 2014), http://msdn.microsoft.com/es-es/magazine/cc546569.aspx

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013
 
Ingenieria de sw Junit
Ingenieria de sw JunitIngenieria de sw Junit
Ingenieria de sw Junit
 
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosPROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
 
Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)
 
Junit con netbeans
Junit con netbeansJunit con netbeans
Junit con netbeans
 
UNIDAD II ADMINISTRADOR DE PROCESADOR
UNIDAD II ADMINISTRADOR DE PROCESADORUNIDAD II ADMINISTRADOR DE PROCESADOR
UNIDAD II ADMINISTRADOR DE PROCESADOR
 
Curso de automatización de pruebas
Curso de  automatización de pruebasCurso de  automatización de pruebas
Curso de automatización de pruebas
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
Tests Unitarios con JUnit 4
Tests Unitarios con JUnit 4Tests Unitarios con JUnit 4
Tests Unitarios con JUnit 4
 
01 introducción
01 introducción01 introducción
01 introducción
 
U2T4 - Pruebas del Software
U2T4 - Pruebas del SoftwareU2T4 - Pruebas del Software
U2T4 - Pruebas del Software
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmos
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - Semáforos
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 

Ähnlich wie Presentación rc 1

Sincronización entre procesos
Sincronización entre procesosSincronización entre procesos
Sincronización entre procesosIchinose 11
 
Comunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosComunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosLorena Ramos
 
Sincronización de Procesos
Sincronización de Procesos Sincronización de Procesos
Sincronización de Procesos Cristhian Rosales
 
UNIDAD II SISTEMAS OPERATIVOS
UNIDAD II SISTEMAS OPERATIVOSUNIDAD II SISTEMAS OPERATIVOS
UNIDAD II SISTEMAS OPERATIVOSSelqit Mgw
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 
Unidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosUnidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosCESAR
 
Unidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosUnidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosGUADALUPE
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosFranklin Parrales Bravo
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Unidad 2 Sistemas Operativos
Unidad 2 Sistemas OperativosUnidad 2 Sistemas Operativos
Unidad 2 Sistemas OperativosKim Sorel Rush
 
104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesadorMiguel Joshua Godinez Barbosa
 
Mv unidad 1
Mv unidad 1Mv unidad 1
Mv unidad 1Norerod
 
Descripcion y control de procesos
Descripcion y control de procesosDescripcion y control de procesos
Descripcion y control de procesosLlabajo Baez
 

Ähnlich wie Presentación rc 1 (20)

Sincronización entre procesos
Sincronización entre procesosSincronización entre procesos
Sincronización entre procesos
 
S..O. Unidad 2
S..O. Unidad 2S..O. Unidad 2
S..O. Unidad 2
 
Comunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosComunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de Procesos
 
Sincronización de Procesos
Sincronización de Procesos Sincronización de Procesos
Sincronización de Procesos
 
UNIDAD II SISTEMAS OPERATIVOS
UNIDAD II SISTEMAS OPERATIVOSUNIDAD II SISTEMAS OPERATIVOS
UNIDAD II SISTEMAS OPERATIVOS
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Unidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosUnidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De Procesos
 
Unidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De ProcesosUnidad 2 AdministracióN De Procesos
Unidad 2 AdministracióN De Procesos
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
MECANISMO DE PROTECCION
MECANISMO DE PROTECCIONMECANISMO DE PROTECCION
MECANISMO DE PROTECCION
 
Unidad2
Unidad2Unidad2
Unidad2
 
Unidad 2 Sistemas Operativos
Unidad 2 Sistemas OperativosUnidad 2 Sistemas Operativos
Unidad 2 Sistemas Operativos
 
104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador
 
:)Resumen
:)Resumen:)Resumen
:)Resumen
 
Las funciones de los sistemas operativos
Las funciones de los sistemas operativosLas funciones de los sistemas operativos
Las funciones de los sistemas operativos
 
Mv unidad 1
Mv unidad 1Mv unidad 1
Mv unidad 1
 
Descripcion y control de procesos
Descripcion y control de procesosDescripcion y control de procesos
Descripcion y control de procesos
 

Presentación rc 1

  • 2. Contenido 1. Introducción 2. Descripción del problema 3. Formas en que es susceptible de ser explotado. 4. Medidas preventivas, detección, correctivas.
  • 3. Introducción Una condición de carrera se produce cuando dos subprocesos tienen acceso a una variable compartida al mismo tiempo. Una condición de carrera es cuando dos diferentes contextos de ejecución (hilos, procesos o tareas), pueden cambiar un recurso o interferir con otro. El primer subproceso lee la variable, y el segundo subproceso lee el mismo valor de la variable. El primer y segundo subproceso realizan sus operaciones en el valor y se ejecutan para ver qué subproceso puede escribir el ultimo valor en la variable compartida.
  • 4. 4 Usuario A Usuario B Deposito $100 Retiro $200 Cuent a Saldo Final $1100 Saldo Inicial $1000 Vista Inicial 1. Inicia pero se interrumpe 2. Inicia y concluye la operación 3. Usuario A concluye operación Saldo no registrado $800 Descripción
  • 5. 5 Descripción Se asigna a cada subproceso un período predefinido de tiempo de ejecución en un procesador. Cuando caduca el tiempo asignado para el subproceso, se guarda el contexto del subproceso hasta su próximo turno en el procesador y el procesador comienza la ejecución del subproceso siguiente. Es posible que el subproceso 1 complete su ejecución antes de que su tiempo caduque en el procesador, a continuación, el subproceso 2 puede comenzar su ejecución, en esta caso no se produce la condición de carrera. Error aleatorio En la ejecución del subproceso no se puede controlar el tiempo o el orden de ejecución. Los subprocesos se ejecutan de forma aleatoria haciendo que estos errores sean mucho más difíciles de encontrar, depurar y
  • 6. 6 Descripción Propiedades necesarias para que pueda existir una condición de carrera: 1. Concurrencia de propiedades. Debe haber por lo menos dos flujos de control de ejecución al mismo tiempo. 2. Objeto compartido. Un objeto con la propiedad de ser compartido debe ser visitado por flujos concurrentes. 3. Cambie la propiedad del Estado. Al menos uno de los flujos de control deben alterar el estado del objeto. Más de un subproceso o proceso debe escribir al mismo recurso.
  • 7. 7 Afectación Cuando se presenta una condición de carrera, existe un intervalo de tiempo durante el que un atacante puede obtener privilegios, leer y escribir archivos protegidos, y vulnerar las políticas de seguridad del sistema.
  • 12. 12 Identificación Se pueden realizar diferentes pruebas. El tiempo de ejecución es la métrica más usada para la generación de informes. Estrategias de pruebas Las pruebas de una aplicación simultánea incluyen pruebas de:  Corrección,  Confiabilidad,  Rendimiento La corrección de la aplicación se comprueba mediante técnicas como:  El análisis estático, analizan el código sin ejecutar el programa. se lleva a cabo mediante la observación de los metadatos desde una aplicación compilada o un código fuente anotado.
  • 13. 13 Identificación El rendimiento y la confiabilidad se prueban mediante el estudio de las sobrecargas introducidas mediante el paralelismo y las pruebas de esfuerzo. La escalabilidad se prueba mediante el análisis del rendimiento de la aplicación en sistemas de diferentes tamaños. Prefix y Prefast son dos de las herramientas de análisis estático más conocidas para las aplicaciones nativas, mientras que FxCop es muy popular para trabajar con código administrado.  El análisis dinámico. Los errores se detectan al observar las superficies de ejecución. Hay dos tipos de análisis dinámicos: con conexión y sin conexión. Las herramientas que usan el análisis dinámico analizan un programa mientras se ejecuta. Algunas herramientas sólo pueden detectar una condición carrera si se produce en la ejecución.
  • 14. 14 Identificación  La comprobación de modelos. El método para comprobar la corrección de un sistema simultáneo de estado finito. Intenta simular las condiciones de carrera y de bloqueo. Este método ofrece una confianza superior en el diseño y en la arquitectura. La comprobación de modelos puede demostrar que el diseño no tiene errores, pero la implementación puede ser incorrecta. Sólo resulta útil para secciones pequeñas y esenciales de un producto.
  • 15. 15 Identificación Herramientas de pruebas de simultaneidad o CHESS Creada por Microsoft Research, es una nueva combinación de la Comprobación de modelos y del Análisis dinámico. o El Comprobador de subprocesos de Intel Se trata de una herramienta de análisis dinámico para encontrar bloqueos, carreras de datos y usos incorrectos de las API de sincronización nativas de Windows o RacerX. Herramienta de análisis estático que distingue el flujo, se usa para detectar carreras y bloqueos. o Chord. Herramienta de análisis estático para Java que no distingue el flujo pero sí el contexto. Al no distinguir el flujo puede ser más escalable que otras herramientas estáticas, pero el precio es una pérdida de precisión.
  • 16. 16 Identificación o KISS. Desarrollada por Microsoft Research, es una herramienta de Comprobación de modelos diseñada para los programas C simultáneos. o Zing Esta herramienta es un comprobador de modelos puro pensado para la comprobación de diseños de programas simultáneos
  • 17. 17 Pruebas de rendimiento Las pruebas de rendimiento son una parte integral y esencial del proceso de prueba de simultaneidad. En el caso de los escenarios de pruebas paralelas, se pueden usar las siguientes variables como criterios de aceptación.  Variación en los resultados de la prueba. Indica que se trata de una aplicación inestable.  Uso de CPU. Un uso bajo de la CPU podría ser señal de errores de simultaneidad, como bloqueos y sobrecargas de sincronización.  Uso total de memoria.  El tiempo de ejecución total del subproceso. Identificación
  • 18. 18 Las soluciones para evitar la condición de carrera implican el uso de semáforos y objetos de exclusión mutua (mutex) para proteger la sección crítica. Métodos de sincronización para controlar las interacciones de subprocesos:  Operaciones de bloqueo. Por ejemplo bloquear las variables compartidas, por lo que sólo un subproceso tenga acceso a la variable compartida.  Señalización. La manera más sencilla de esperar una señal de otro subproceso es llamar un función, que lo pueda bloquear hasta que se complete el otro subproceso.  Interbloqueo. Dos subprocesos intentan bloquear un recurso que ya ha bloqueado uno de estos subprocesos. Ninguno de los subprocesos puede avanzar. Hacer el código relevante (sección crítica) atómico con respecto a los datos necesario, (atómico, el código se ejecuta como si fuera una sola operación, sin interrupción), considerando que el código que ha de ser atómico sea lo más pequeño posible. Medidas preventivas
  • 19. 19 Ejemplos de Riesgos de condición de carrera que se deben evitar en .NET:  Condiciones de carrera en Método Dispose (libera todos los recursos que posee, liberando memoria). Si el método Dispose no está sincronizado, es posible que el código de limpieza de Dispose se ejecute más de una vez.  Condiciones de carrera en constructores. En algunas aplicaciones, es posible que otros subprocesos tengan acceso a miembros de clase antes de que finalice la ejecución de sus constructores por lo que es necesario sincronizar los subprocesos.  Condiciones de carrera con objetos en caché. El código que almacena en caché la información relacionada con la seguridad puede ser vulnerable a condiciones de carrera si otras partes de la clase no están sincronizadas correctamente.  Condiciones de carrera en finalizadores. Si hay varios objetos que comparten un recurso que se manipula en un finalizador de la clase, se deben sincronizar los accesos a ese recurso en todos los objetos. Medidas preventivas
  • 20. 20 Referencias Microsoft. (27 de Noviembre de 2013). Support. Obtenido de Description of race conditions and deadlocks: http://support.microsoft.com/kb/317723 Microsoft (15 de enero de 2014) Seguridad y condiciones de carrera, http://msdn.microsoft.com/es-es/library/1az4z7cb(v=vs.110).aspx?cs-save-lang=1&cs- lang=vb#code-snippet-1 Microsoft (15 de enero de 2014) Información general sobre los primitivos de sincronización http://msdn.microsoft.com/es-es/library/ms228964(v=vs.110).aspx NIST, Vulnerabilidades y Exposiciones Comunes, (15 de enero de 2014) http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-1284 CWE-362: Ejecución simultánea utilizando recursos compartidos con sincronización inadecuada ("condición de carrera"), (15 de enero de 2014) http://cwe.mitre.org/data/definitions/362.html&usg=ALkJrhjfMpwH2n1lQJ2CBX_p-xDIrGying Intenco, (15 de enero de 2014) http://cert.inteco.es/vulnDetail/Actualidad/Actualidad_Vulnerabilidades/detalle_vulnerabilidad/ MSDN Magazine, Herramientas y técnicas para identificar los problemas de simultaneidad (15 de enero de 2014), http://msdn.microsoft.com/es-es/magazine/cc546569.aspx