Muestreo de detección de errores de memoria de montón en la naturaleza


Los errores de seguridad de la memoria, como el uso después de las liberaciones y las lecturas / escrituras fuera de los límites, son una fuente principal de vulnerabilidades en las aplicaciones C / C ++. A pesar de las inversiones para prevenir y detectar estos errores en Chrome, más del 60% de las vulnerabilidades de alta gravedad en Chrome son errores de seguridad de la memoria. Algunos errores de seguridad de la memoria no conducen a vulnerabilidades de seguridad, sino que simplemente provocan bloqueos e inestabilidad.

Chrome utiliza técnicas de vanguardia para evitar estos errores, que incluyen:

  • Cobertura guiada fuzzing con AddressSanitizer (ASan)
  • Pruebas de unidad e integración con ASan
  • Programación defensiva, como bibliotecas personalizadas para realizar operaciones matemáticas seguras o proporcionar contenedores controlados
  • Revisión obligatoria del código

Chrome también utiliza sandboxing y mitigaciones de explotación para complicar la explotación de los errores de memoria que no se detectan con los métodos anteriores.

AddressSanitizer es una instrumentación del compilador que encuentra errores de memoria que ocurren en el montón, la pila o en los globales. ASan es altamente eficaz y una de las instrumentaciones de gastos generales más bajas disponibles que detecta los errores que hace sin embargo, aún incurre en un rendimiento promedio de 2-3x y sobrecarga de memoria. Esto lo hace adecuado para su uso con pruebas unitarias o fuzzing, pero no para la implementación a usuarios finales. Chrome solía desplegarse Binarios instrumentados de SyzyASAN para detectar errores de memoria. SyzyASAN tenía una sobrecarga very similar, por lo que solo se implementó en un pequeño subconjunto de usuarios en el canal canario. Se suspendió después de que la cadena de herramientas de Windows cambiara a LLVM.

GWP-ASan, también conocido por su backronym recursivo, GWP-ASan proporcionará cordura de asignación, es una herramienta de asignación de muestreo diseñada para detectar errores de memoria de montón que ocurren en la producción con una sobrecarga insignificante. Debido a su sobrecarga insignificante, podemos implementar GWP-ASan en toda la base de usuarios de Chrome para encontrar errores de memoria que suceden en el mundo authentic y que no son detectados por el borrado o las pruebas con ASan. A diferencia de ASan, GWP-ASan no puede encontrar errores de memoria en la pila o en los globales.

Actualmente, GWP-ASan está habilitado para todos los usuarios de Home windows y macOS para las asignaciones realizadas con malloc () y PartitionAlloc. Solo está habilitado para una pequeña fracción de asignaciones y procesos para reducir el rendimiento y la sobrecarga de memoria a una cantidad insignificante. Al momento de escribir esto ha encontrado más de sesenta errores (Muchos todavía tienen vista restringida). Alrededor del 90% de los problemas que GWP-ASan ha encontrado son de uso libre. El resto son lecturas y escrituras fuera de los límites.

Para obtener más información, consulte nuestra redacción completa sobre GWP-ASan aquí.




Resource url

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*