Usuarios de Linux, atención: la nueva Ghidra puede tumbar su sesión gráfica

Usuarios de Linux, atención: la nueva Ghidra puede tumbar su sesión gráfica

Ghidra 12.0 amplía el soporte para procesadores y refuerza las herramientas para análisis colaborativos a gran escala.

image

Ghidra, framework gratuito para ingeniería inversa desarrollado por la división de investigación de la NSA de EE. UU., recibió la versión 12.0 — con aceleraciones, correcciones y un conjunto de cambios notables que afectarán tanto a usuarios habituales como a quienes automatizan el análisis. La plataforma sigue orientada al análisis de código compilado para Windows, macOS y Linux y combina desensamblador, decompilador, depurador, emulación, gráficos y scripts, además de la posibilidad de ampliar el sistema con complementos, cargadores, analizadores y nuevas visualizaciones.

Los desarrolladores subrayan además la compatibilidad: los proyectos de versiones anteriores se abren, pero todo lo que cree o modifique en 12.0 podría no funcionar en versiones antiguas de Ghidra. Al mismo tiempo, la versión exige un entorno concreto: para su ejecución se requiere como mínimo JDK 21, y para usar Debugger o compilar completamente el código fuente será necesario tener instalado Python 3, con soporte para las versiones de la 3.9 a la 3.13.

En las notas de la versión hay también una advertencia importante para usuarios de Linux: se comunicaron cierres del servidor XWindows que se relacionan con una regresión tras corregir CVE-2024-31083 en X.org en abril de 2024. Como orientación se indican las versiones donde, según los desarrolladores, ya se ha resuelto el problema: xwayland 23.2.6 y xorg-server 21.1.13 — si al iniciar Ghidra se produce un cierre de sesión inesperado, conviene comprobar la actualización de X.org a esos niveles.

Una de las novedades más notables de la 12.0 es el soporte ampliamente ampliado para enlaces (link-files) dentro de proyectos y un nuevo formato para almacenar dichos enlaces. Antes se hacía hincapié en los enlaces a carpetas y archivos externos mediante URL de Ghidra; ahora existen enlaces internos a carpetas y archivos, tanto absolutos como relativos, y para ellos se introdujo un nuevo formato ligero basado en un archivo de propiedades sin base de datos. Esto abre escenarios prácticos, por ejemplo una representación más fiel de la estructura real del sistema de archivos con enlaces simbólicos, para evitar que el mismo contenido se importe varias veces por rutas distintas; aun así, los desarrolladores advierten sobre los riesgos de enlaces confusos o cíclicos y aconsejan evitar rutas en conflicto cuando una carpeta y un archivo tengan el mismo nombre.

La misma lógica continúa en la importación: en 12.0 añadieron un modo de «espejado» de la jerarquía local del sistema de archivos al importar programas y bibliotecas, incluyendo enlaces simbólicos, y en el modo headless se agregó el parámetro de línea de comandos -mirror para ello. Paralelamente se actualizó el ecosistema Python: PyGhidra 3.0.0 se declara compatible con Ghidra 12.0+ y aporta nuevos métodos orientados a Python para tareas habituales, y el motor de scripts por defecto cambió de Jython a PyGhidra — los scripts antiguos en Jython seguirán funcionando, pero necesitarán la cabecera # @runtime Jython.

Para quienes usan activamente emulación y depuración, la versión añade un modo concolic experimental basado en Z3, en el que la parte simbólica trabaja junto a la emulación concreta y construye expresiones y restricciones de ramas siguiendo la ruta definida por la ejecución «concreta». El acceso a este modo se ofrece mediante la extensión SymbolicSummaryZ3 y el plugin correspondiente en Debugger/Emulator, pero requerirá Z3 versión 4.13.0, y en entornos concretos se puede encontrar la falta de bibliotecas o incompatibilidades que habrá que instalar o compilar manualmente. Al mismo tiempo se ha revisado notablemente la API de emulación PcodeEmulator hacia composición y callbacks, para facilitar una futura integración de un emulador acelerado por JIT en la interfaz, aunque las extensiones antiguas basadas en herencia pueden seguir funcionando tras una adaptación mínima.

Entre las novedades orientadas al usuario en 12.0 aparecen un nuevo grafo de datos que muestra las relaciones entre elementos de datos en la memoria mediante enlaces y permite expandirlos, así como un conmutador para mostrar las variables de una función justo debajo de la firma en el listado, tanto a nivel global como por función. La versión también incluye la capacidad de abrir objetos mediante una URL GhidraGo desde el navegador, de modo que al hacer clic se inicie Ghidra, se abra el proyecto correspondiente y se vaya directamente a la dirección o símbolo indicado. Por último, se amplió el soporte de hardware: se añadieron los procesadores NDS32 y la variante RISCV AndeStar v5, y se reestructuró RISC‑V para trabajar más precisamente con extensiones personalizadas, sacando las definiciones de registros especiales a un espacio de direcciones separado para poder tratarlos como objetos de memoria «reales».

Las huellas digitales son tu debilidad, y los hackers lo saben

¡Suscríbete y descubre cómo borrarlas!