¿Puede el servidor detectar cuándo un cliente ha deshabilitado la fijación de certificados?

2

Muchas aplicaciones móviles aplican la fijación de certificados para hacer que un ataque de intermediario sea difícil de lograr. Sin embargo, con un dispositivo con jailbreak / rooteado, es posible deshabilitar la fijación de certificados en el cliente. Por ejemplo, al utilizar SSL Kill Switch en iOS.

Una pregunta anterior preguntó cómo " prevenir omitir la fijación de certificados". Entiendo que la prevención es efectivamente imposible, ya que mientras el cliente tenga una raíz en el dispositivo cliente, cualquier prevención se limita a "seguridad por oscuridad" y se reduce a jugar un juego del gato y el ratón.

Sin embargo, estoy interesado en saber si es posible detectar , desde el lado del servidor, cuando un cliente ha deshabilitado la fijación de certificados.

Específicamente:

1) ¿Es posible, utilizando solo la funcionalidad SSL de bajo nivel, detectar cuándo el cliente ha deshabilitado la fijación de certificados?

2) Si no es posible con la funcionalidad SSL de bajo nivel, ¿existe alguna información que el servidor pueda requerir del cliente para demostrar que la fijación de certificados permanece habilitada?

    
pregunta pandemic 17.05.2016 - 19:05
fuente

1 respuesta

4

No, no es posible determinar el estado de la fijación de SSL en el cliente. La fijación de SSL es parte de la validación del certificado realizada únicamente dentro del cliente y la única respuesta que recibe el servidor es si la validación fue exitosa (la conexión continúa) o no (la conexión se cerró, quizás la alerta TLS).
Además, no hay nada totalmente confiable que el servidor pueda "preguntar" al cliente sobre el estado de la fijación porque no puede esperar una respuesta verdadera de una aplicación que se ejecuta en un dispositivo totalmente controlado por el "atacante".

Pero uno puede hacer que sea más difícil deshabilitar el pin no detectado. Si está creando una aplicación y desea detectar si la opción de anclaje está deshabilitada, puede realizar conexiones a dos hosts diferentes. Para uno de los hosts espera un certificado válido y anclado y para el otro un certificado válido pero no fijo. Si ambas conexiones tienen éxito, puede concluir que alguien manipuló el anclaje. Por supuesto, si el "atacante" conoce este comportamiento de la aplicación, puede solucionar su detección pero sin el conocimiento se vuelve más difícil. Y los esquemas más complejos (y tal vez incluso dinámicos) como este deberían ser posibles para hacerlo aún más difícil.

Pero la pregunta sigue siendo lo que se obtiene al saber si la asignación está desactivada o no. Si se asegura de que no sea posible fijar, puede disuadir al hombre que está en el medio olfateando. Esto todavía deja la opción de oler los datos dentro de la aplicación, es decir, antes de que se cifren y después de que se descifran. Esto significa que un atacante que tenga el control del dispositivo aún puede analizar e incluso modificar los datos.

    
respondido por el Steffen Ullrich 17.05.2016 - 19:15
fuente

Lea otras preguntas en las etiquetas