cross_fuzz es increíblemente eficaz, pero molesto notoriamente entre documentos fuzzer DOM vinculante que ayudó a identificar un centenar de errores en todos los navegadores en el mercado - muchos de dichos errores de explotación - y sigue siendo la búsqueda de más.
El fuzzer debe mucho de su eficacia para la generación dinámica de muy largo liquidación secuencias de las operaciones de DOM en varios documentos, la inspección de los objetos devueltos, recursivamente en ellos, y crear referencias circulares nodo que las pruebas de tensión mecanismos de recolección de basura.
El algoritmo de cross_fuzz fuzzing:
1. Abrir dos ventanas con documentos de cualquier tipo (DOM-habilitado). Simple documentos HTML, XHTML, SVG, y son seleccionados al azar como objetivos por defecto - a pesar de cualquier otro, posiblemente en formato plug-in-compatibles podrían ser objeto en su lugar.
2. Rastrear jerarquía DOM del primer documento, recogiendo encontrado referencias a objetos para su uso posterior. Objetos visitadas y las referencias conseguidas etiquetados con una propiedad de inyección para evitar la repetición infinita, una lista negra de secundaria se utiliza para evitar que navegar fuera o descendente en la ventana principal. Crítico, arrastrando los pies al azar y el control fanout recursividad se utilizan para asegurar una buena cobertura.
3. Repita el rastreo DOM, al azar ajustar encontrado propiedades de los objetos estableciendo su valor a una de las referencias previamente grabado (o, con cierta probabilidad, a uno de un puñado de codificado "interesante" valores).
4. Repita el rastreo DOM, llamando al azar encontrado métodos del objeto. Parámetros de llamada son sintetizados utilizando referencias conseguidas y los valores "interesantes", como se señaló anteriormente. Si un método devuelve un objeto, su salida es posteriormente arrastrado y ajustado de manera similar.
5. Destruye aleatoriamente primer documento usando uno de los varios métodos posibles, la recolección de elementos de conmutación.
6. Realice el mismo conjunto de operaciones de rastreo y ajustar para el segundo documento, pero las referencias recogidas de utilizar el primer documento para sobrescribir propiedades y llamar a métodos en el segundo.
7. Al azar destruir las ventanas de documentos, realizar más de un porcentaje de las referencias recogidas en el ciclo fuzzing siguiente.
Este diseño puede hacer que inesperadamente difícil conseguir limpiar, determinista repro, en este sentido, en las versiones actuales de todos los navegadores afectados, todavía estamos viendo una colección de problemas difícil de alcanzar cuando se ejecuta la herramienta - y algunos no tan difícil de alcanzar. Creo que en este momento, una participación de la comunidad más amplia puede ser útil para localizar y resolver estos errores.
También creo que al menos una de las vulnerabilidades descubiertas por cross_fuzz puede ser conocida por terceros - que hace que obtener esta herramienta una prioridad.
Pueden descargar desde aca:
cross_fuzz
Mas informacion ACA.