[ES] En los últimos años las técnicas de análisis dinámico como el fuzzing
han demostrado ser maneras efectivas de descubrir fallos
críticos en los sistemas software modernos. La implementación de estas técnicas
requiere ...[+]
[ES] En los últimos años las técnicas de análisis dinámico como el fuzzing
han demostrado ser maneras efectivas de descubrir fallos
críticos en los sistemas software modernos. La implementación de estas técnicas
requiere de mecanismos de instrumentación, que permitan analizar el comportamineto
de programas así como modificarlos para realizar experimentos.
El presente trabajo expondrá las técnicas de instrumentación de software existentes
y hará un breve estudio del estado del arte sobre su aplicación en el descubrimiento
de fallos de seguridad en sistemas software. Se hará incapié en la importancia
de QEMU para la instrumentación de software de sistema (SO, firmware...)
en oposición a la instrumentación de procesos comunes en un sistema operativo.
A modo de ejercicio práctico, se modificará el código del emulador de sistema
completo QEMU para implementar una técnica \textit{inline} de instrumentación
del flujo de código y de los accesos a memoria, que servirá a modo de prueba de concepto
para demostrar el tipo de instrumentación requerido para aplicar técnicas de análisis
dinámico al software de sistema.
Las modificaciones realizadas se explicarán detalladamente, así como aquellos detalles
internos de implementación de una versión reciente de QEMU que son
necesarios para su compresión. Estos detalles no están documentados, y se han obtenido
mediante el estudio del código fuente de {QEMU, pues es un proyecto de código abierto.
[-]
[EN] In recent years, dynamic program analysis techniques like fuzzing
have proven to be effective for discovering critical security flaws
in modern software systems. The implementation of these techniques require ...[+]
[EN] In recent years, dynamic program analysis techniques like fuzzing
have proven to be effective for discovering critical security flaws
in modern software systems. The implementation of these techniques require software
instrumentation mechanisms for the analysis and modification of software behaviour.
This paper outlines current software instrumentation techniques and performs a brief
state of the art analysis of their application in the discovery of security-critical
software flaws. It is also the aim of this paper to highlight the importance of
the QEMU emulator in the instrumentation of system software (OS, firmware...),
as opposed to that of common processes running on top of an operating system.
As a practical exercise, the QEMU full system emulator is patched in order
to implement inline instrumentation of the execution flow and memory accesses.
This serves as a proof of concept for how to implement the instrumentation required
for full-system dynamic binary analysis.
The modifications performed to a recent verstion of the QEMU codebase
(v 4.2.0) are explained in detail, together with the required background knowledge
about QEMU internal implementation details, most of which are undocumented.
[-]
[CA] En els últims anys les tècniques d’anàlisi dinàmica com el fuzzing han demostrat ser maneres
efectives de descobrir fallades crítiques en els sistemes programari moderns. La implementació
d’estes tècniques requerix ...[+]
[CA] En els últims anys les tècniques d’anàlisi dinàmica com el fuzzing han demostrat ser maneres
efectives de descobrir fallades crítiques en els sistemes programari moderns. La implementació
d’estes tècniques requerix de mecanismes d’instrumentació, que permeten analitzar el comportamineto de programes així com modificar-los per a realitzar experiments.
El present treball exposarà les tècniques d’instrumentació de programari existents i farà un
breu estudi de l’estat de l’art sobre la seua aplicació en el descobriment de fallades de seguretat
en sistemes programari. Es recalcarà en la importància de QEMU per a la instrumentació de programari de sistema (SOTA, firmware... ) en oposició a la instrumentació de processos comuns en
un sistema operatiu.
A manera d’exercici pràctic, es modificarà el codi de l’emulador de sistema complet QEMU
per a implementar una tècnica d’instrumentació del flux de codi i dels accessos a memòria, que
servirà a manera de prova de concepte per a demostrar el tipus d’instrumentació requerit per a
aplicar tècniques d’anàlisi dinàmica al programari de sistema.
Les modificacions realitzades s’explicaran detalladament, així com aquells detalls interns d’implementació d’una versió recent de QEMU que són necessaris per a la seua compressió. Estos
detalls no estan documentats, i s’han obtenidomediante l’estudi del codi font de QEMU, perquè
és un projecte de codi obert.
[-]
|