¿Cómo puede un sistema de Windows / Linux moderno verse comprometido por un desbordamiento de pila en Chrome?

3

El artículo de Wikipedia sobre Desbordamiento de montón indica:

  

hay principalmente tres formas de protegerse contra los desbordamientos de pilas.   Varios sistemas operativos modernos como Windows y Linux proporcionan   alguna implementación de los tres.

     
  • Evite la ejecución de la carga útil separando el código y los datos,   Por lo general, con características de hardware como NX-bit en sistemas modernos.
  •   
  • Introduzca la aleatorización de modo que el montón no se encuentre en un lugar fijo   desplazamiento.
  •   
  • Introduzca controles de cordura en el administrador del montón.
  •   

Con estas protecciones implementadas, ¿cómo podría ocurrir una explotación recientemente descubierta a través del desbordamiento del montón en el lector de PDF de Chrome?

  

Simplemente viendo un documento PDF que incluye un jpeg2000 incrustado   imagen, el atacante puede lograr la ejecución de código arbitrario en el   sistema de la víctima

Fuente: Vulnerabilidad de PDFium en el navegador web Google Chrome

    
pregunta Protector one 13.06.2016 - 11:00
fuente

1 respuesta

1

Aquí, la vulnerabilidad no habla de algún programa que se ejecuta en su máquina. El problema es que los datos se sobrescriben en el lugar equivocado. Puede encontrar los detalles de la vulnerabilidad aquí: enlace

Como se menciona en la página web:

  

Si en la llamada anterior a opj_calloc , que es un envoltorio calloc , el valor de numcomps es cero, calloc devolverá un puntero único que se puede pasar posteriormente a free (esto es depende de la implementación, pero es así en los sistemas operativos Linux modernos). El puntero único devuelto por calloc generalmente será una asignación pequeña (0x20 bytes en caso de código x64). Esto puede llevar a un desbordamiento del búfer de pila más adelante en el código cuando se usa este búfer.

     

En el código anterior, el puntero l_tccp apuntará al área previamente asignada erróneamente. La misma estructura está anulada en escrituras fuera de límites en el siguiente código.

Dado que escribir en la memoria que es propiedad de un programa es un proceso válido, un sistema operativo no puede bloquear el proceso mencionado anteriormente.

  
  • Evite la ejecución de la carga útil separando el código y los datos, generalmente con características de hardware como NX-bit en sistemas modernos.
  •   

Esto no funciona porque aquí no se ejecuta ninguna carga útil.

  
  • Introduzca la aleatorización de modo que el montón no se encuentre en un lugar fijo   desplazamiento.
  •   
  • Introduzca controles de cordura en el gestor de almacenamiento dinámico.
  •   

Estamos obteniendo explícitamente la ubicación para ser leída / escrita y por lo tanto la aleatorización no funcionará aquí. Este es un caso simple de un chequeo de sanidad perdido.

Además, como se mencionó en la página web, el sistema de compilación de Chrome ya tenía una solución, pero no en la compilación correcta. El error se ha solucionado ahora.

    
respondido por el Limit 13.06.2016 - 11:45
fuente

Lea otras preguntas en las etiquetas