openSIL, la nueva iniciativa de AMD para impulsar un firmware más abierto

La Cumbre Regional de la Open Compute Project Foundation (OCP) celebrada los días 19 y 20 de abril en Praga (República Checa) ha dejado una noticia muy importante en torno a AMD: el anuncio de que reemplazará el clásico AGESA por openSIL tanto a nivel de servidor como cliente, si bien ya empezó a mostrar ciertos detalles el mes anterior.

AGESA, que son las iniciales de AMD Generic Encapsulated Software Architecture, es una biblioteca de procedimientos desarrollada por el gigante rojo de los procesadores que es utilizada para la Inicialización de la Plataforma (PI) en placas base para la arquitectura AMD64. Como pare de la BIOS de las placase base en la que es implementada, es la responsable de la inicialización de los núcleos del procesador, el chipset, la memoria principal y del controlador HyperTransport.

AGESA fue de código abierto a principios de 2011 con el objetivo de contribuir al desarrollo de Coreboot. Sin embargo, dichos lanzamientos nunca contribuyeron al desarrollo de Coreboot más allá de la familia de procesadores Bulldozer (Bulldozer, Pledriver, Steamroller y Excavator), ya que las publicaciones para generaciones posteriores se detuvieron.

Aparentemente openSIL, que es el acrónimo de Open-Source Silicon Initialization Library, viene a recuperar la senda que AGESA perdió hace tiempo. Entre los proveedores de firmware involucrados en openSIL están 9elements y AMI, mientras que AMD hizo en el evento de Praga una demostración con UEFI y Coreboot.

Además de aperturismo (esperemos que como verdadero Open Source), el gigante rojo de los procesadores pretende que openSIL sea una solución liviana, simple, transparente, segura y fácil de incrementar, cosa que en estos momentos no se puede decir un AGESA que, al menos en el sector doméstico, empieza a ser cuestionado. La compañía ha programado el comienzo del despliegue de openSIL para el año 2026.

Raj Kapoor, arquitecto jefe de firmware de AMD, comentó durante la presentación de openSIL sobre los desafíos que han tenido que afrontar con AGESA para adaptarlo a Coreboot en los dispositivos Ryzen dirigidos a ser Chromebooks, los ordenadores personales que emplean Chrome OS como sistema operativo.

Esto parece reforzar dos cosas: su llegada a equipos de consumo y que puede ayudar a facilitarle las cosas a Linux en algunos frentes, pero veremos si al final openSIL llega de verdad a equipos con Windows (los cuales muchas veces son comprados para instalarles Linux), equipos sin sistema operativo (que son cada vez más comunes) y a placas base sueltas que son compradas para montar equipos de sobremesa. Kapoor dijo durante la sesión de preguntas y respuestas que “AGESA llegará al final de su vida útil y openSIL lo reemplazará” en todos los productos. Por otro lado, se espera que el código de la prueba de concepto de openSIL para AMD Genoa llegue pronto.

AMD anunció durante la prsentación que openSIL será de código abierto y que su especificación también será abierta, por lo que la compañía aprovechó el evento para invitar a todos los proveedores de silicio a participar en su desarrollo, mejora y evolución. Sin embargo, hay que tener en cuenta que AMD es toda una experta a la hora de hacer las cosas a medias, así que sería mejor mantener la prudencia mientras no haya resultados reales que sean de verdad desplegados en el mercado de masas.

Como vemos, openSIL tiene muy buena pinta, pero viendo que todavía es un proyecto de cara al futuro y el precedente de AGESA, por ahora sería mejor mantener la prudencia y contener la euforia. Además de las intenciones, habrá que ver si a Intel y Microsoft no les molesta la nueva iniciativa del gigante rojo, porque de ser así, posiblemente hagan uso de sus poderosos puños monopolísticos para hacer que AMD limite sus objetivos.

Fuente: www.muylinux.com

Hardware Hacking: introducción al análisis de un firmware

Una introducción al hardware hacking donde explicamos qué es, cómo se utiliza en ciberseguridad y cuáles son las técnicas que podemos utilizar para extraer el firmware de un dispositivo.

Tabla de contenidos:

—El hardware hacking: qué es y para qué se utiliza
—Para qué extraer y analizar el firmware de un dispositivo
—Técnicas para extraer el firmware de un dispositivo
—Extracción de firmware de dispositivos usando JTAG:
—Cómo funciona la interfaz JTAG
—Qué podemos hacer en la práctica con JTAG
—Cómo extraemos un firmware utilizando JTAG
—Conclusión

El hardware hacking: qué es y para qué se utiliza

Si bien hace un tiempo hablamos de los gadgets más utilizados en el hardware hacking, es importante destacar que en el mundo de la ciberseguridad el hardware hacking no se limita al uso de dispositivos electrónicos para realizar pruebas ofensivas sobre distintos sistemas. También está vinculado con el uso de técnicas para explotar fallos de seguridad y manipular el hardware de un dispositivo electrónico para alterar su funcionamiento, agregar nuevas funcionalidades, obtener información del equipo o vulnerar su seguridad.

Las técnicas de hardware hacking sirven para realizar ingeniería inversa y manipular el dispositivo que se quiere analizar. Pueden ser utilizadas por investigadores de seguridad para descubrir vulnerabilidades en dispositivos electrónicos y mejorar su seguridad, pero también por atacantes para acceder a sistemas o información protegida.

El hardware hacking puede involucrar la manipulación física de componentes electrónicos, la ingeniería inversa de circuitos y dispositivos, la soldadura de componentes, la creación de interfaces personalizadas y la extracción de datos de dispositivos de almacenamiento. Todas estas técnicas requieren conocimientos especializados en electrónica y programación, y pueden ser peligrosas si no se realizan con cuidado, ya que pueden dañar los dispositivos que se deseen analizar o poner en peligro la seguridad de la persona que lo realiza.

En el hardware hacking también se utilizan técnicas asociadas al hardware forense como parte del proceso de ingeniera inversa sobre componentes electrónicos de un dispositivo. Esto significa que se utilizan herramientas y técnicas especializadas para recuperar, analizar y preservar datos de dispositivos electrónicos. Esto puede incluir la extracción de datos de discos duros, el análisis de datos en la memoria RAM y la recuperación de datos eliminados.

Sin lugar a dudas, estas técnicas más específicas son importantes a la hora de investigar delitos informáticos. Por ejemplo, en casos donde es necesario obtener datos de un dispositivo para la investigación, para recuperar de datos perdidos debido a fallos de hardware o software, o cuando la utilización de las técnicas del hardware forense deben seguir las normas y procedimientos adecuados para garantizar la integridad y autenticidad de los datos recuperados, y evitar la alteración de la evidencia digital.

A la hora de analizar un dispositivo electrónico es necesario estudiar su funcionamiento y cada una de las partes que lo componen, pero es un hecho que cada dispositivo electrónico tiene su propia naturaleza y estructura de funcionamiento. Si bien el objetivo de este artículo no es abordar todas las posibles variantes tecnológicas que existen y sus técnicas de análisis asociadas, es un hecho que hoy día la mayor parte de dispositivos electrónicos contienen componentes comunes. Un ejemplo de estos componentes comunes son los microcontroladores, que a través del firmware se encargan de controlar y administrar la operabilidad de los dispositivos electrónicos y también gran parte de sus funciones.

Siguiendo en esta línea, a continuación veremos algunas cuestiones vinculadas al análisis del firmware de microcontroladores que son fundamentales a la hora de aplicar hardware hacking.

Para qué extraer y analizar el firmware de un dispositivo

Un firmware es un programa que se ejecuta de manera dedicada y con un propósito específico en un microcontrolador o microprocesador. Generalmente, se almacena en un dispositivo de memoria persistente, como una NAND/NOR flash o EEPROM, y el proceso de extracción implicara leer y copiar la imagen del firmware almacenada en la memoria del dispositivo a un archivo en nuestra computadora.

Este proceso de extracción de la imagen del firmware también se denomina dumping o snarfing y es de vital importancia para comprender cómo funciona un dispositivo, ya sea un disco duro, un router, una cámara IP o cualquier otro dispositivo que utilice microcontroladores (algo que ocurre en la mayoría de dispositivos electrónicos).

En este sentido, extraer y analizar la imagen del firmware del microcontrolador de un dispositivo electrónico nos permite comprender su funcionamiento y por lo tanto, nos ayuda en nuestro objetivo de estudio que, como dijimos anteriormente, puede ser desde detectar vulnerabilidades, mejorar o cambiar el comportamiento del dispositivo, entre otras.

Técnicas para extraer el firmware de un dispositivo

Para la extracción del firmware de un dispositivo electrónico se pueden utilizar varias técnicas. Antes de decidir que vía tomar para comenzar este proceso, uno de los puntos esenciales es asegúrese de que la imagen del firmware no esté disponible en el sitio web del fabricante.

Muchos fabricantes de dispositivos publican imágenes de firmware actualizadas en sus sitios web para que los clientes puedan descargar y actualizar el dispositivo. En este caso, el esfuerzo para extraer el firmware es nulo, ya que no tendremos que hacer otra cosa que descargarlo del sitio web del fabricante.

Ahora bien, una vez que tenemos acceso físico al dispositivo, una técnica para extraer el firmware es leer directamente la memoria de almacenamiento del dispositivo. Para ello podemos identificar el chip de memoria de la placa, retirarlo, soldarlo en otra placa y extraer el firmware. Si bien funciona, puede ser bastante engorroso y quizás un poco arriesgado, ya que existe la posibilidad de quemar el chip de memoria durante el proceso de extracción.

Una técnica menos riesgosa es leer la memoria de almacenamiento del dispositivo a través de una conexión al gestor de arranque o al sistema operativo del dispositivo. Por ejemplo, con acceso al gestor de arranque (a través de una conexión serie), podemos intentar leer la memoria del dispositivo y enviar los datos a nuestra máquina. Asimismo, con acceso a una terminal de línea de comandos en el sistema operativo (serial, ssh, etc.) y con privilegios, podemos intentar volcar la memoria de almacenamiento del dispositivo y enviarla a nuestra máquina.

Como podemos observar, dependiendo de la situación se pueden utilizar diferentes técnicas para extraer el firmware de un dispositivo. Si ninguna de estas técnicas es viable, la interfaz JTAG puede ser nuestra mejor aliada. A continuación explicamos qué es esta interfaz.

Extracción de firmware de dispositivos usando JTAG:

JTAG (Joint Test Action Group) es una interfaz de hardware físico que permite, entre otras cosas, extraer la imagen del firmware de los dispositivos electrónicos. Fue creada en 1985 para reemplazar a los antiguos sistemas de testing para las placas de circuitos impresos (PCB), conocidos como bed-of-nails, y es parte del estándar IEEE 1149.1 para probar las placas de circuito impreso durante el proceso de fabricación.

Con el tiempo, JTAG se ha convertido en una de las interfaces más populares para probar circuitos electrónicos. También fue añadiendo otras funciones, como la depuración y la grabación de dispositivos flash. Actualmente, esta interfaz está disponible en la mayoría de los procesadores y microcontroladores de diferentes arquitecturas, como ARM, x86, MIPS y PowerPC.

Cómo funciona la interfaz JTAG

Ahora bien, veamos a continuación un poco más en detalle cómo funciona la interfaz JTAG a bajo nivel .

Aunque hay algunas variaciones del estándar, los fabricantes de los chips suelen implementar la interfaz JTAG a través de cuatro pines obligatorios (TDI , TDO , TCK , TMS) y un pin opcional (TRST):

  • TDI (Entrada de datos de prueba): entrada de datos.
  • TDO (Test Data Out): salida de datos.
  • TCK (Test Clock): reloj cuya frecuencia máxima depende del chip (normalmente de 10MHz a 100MHz).
  • TMS (Test Mode Select): pin para controlar la máquina de estado JTAG.
  • TRST (Test Reset): pin opcional para resetear la máquina de estados JTAG.

Los pines de la interfaz JTAG están conectados internamente al chip a través de un módulo llamado TAP (Test Access Port).

La interfaz TAP implementa el protocolo de comunicación JTAG básico y varios TAP se pueden conectar simultáneamente en una arquitectura de tipo Daisy Chain.

Diagrama basico de la arquitectura JTAG. Fuente: Corelis

La interfaz TAP implementa una máquina de estados finitos (16 estados) que permiten acceder a un grupo de registros (IR, DR) para instrumentar el chip. El control de esta máquina de estados se realiza a través de los pines TMS y TCK. A través de esta máquina de estados, es posible seleccionar una operación a través del registro IR (Registro de Instrucciones) y pasar parámetros o verificar el resultado a través del registro DR (Registro de Datos).

Diagrama de estados en la arquitectura JTAG. Fuente: Corelis

Normalmente el fabricante del chip define el tamaño del registro IR y el número de instrucciones admitidas. Por ejemplo, un registro IR de 5 bits admitirá hasta 32 instrucciones.

Cada instrucción tiene su propio DR (Data Register), que tiene un tamaño variable. Tres instrucciones están definidas por el estándar JTAG y deben ser implementadas por el fabricante (BYPASS, EXTEST, SAMPLE/PRELOAD). Otras instrucciones son opcionales, pero también suelen implementarse (p. ej., IDCODE).

  • BYPASS: instrucción que selecciona un registro de 1 bit que rota de TDI a TDO. Muy útil para probar la interfaz JTAG.
  • EXTEST: instrucción que selecciona el BSR (Boundary Scan Register) para leer y cambiar el estado de los pines.
  • SAMPLE/PRELOAD: instrucción que selecciona el registro BSR (Boundary Scan Register) para leer el estado de los pines.
  • IDCODE: instrucción que selecciona el registro de identificación del dispositivo (32 bits) que contiene la identificación del chip.

Además de las instrucciones definidas por el estándar, el fabricante del chip puede implementar otras instrucciones según sea necesario. De esta forma, muchos fabricantes amplían la interfaz JTAG con funciones de depuración y acceso a memoria.

La información sobre las instrucciones JTAG admitidas y los pines en un chip generalmente se documentan en un archivo llamado BSDL (Lenguaje de descripción de exploración de límites), y también en un subconjunto llamado VHDL (Lenguaje de descripción de hardware).

Qué podemos hacer en la práctica con JTAG

Veamos que podemos hacer en la práctica con esta interfaz sobre el firmware de un dispositivo.

Si bien con JTAG podemos controlar la ejecución del firmware (detener la ejecución, inspeccionar la memoria, configurar puntos de interrupción, ejecutar el código paso a paso, etc). También podemos inspeccionar el estado del procesador y sus registros, leer y escribir en la memoria y acceder a cualquier dispositivo de E/S conectado al procesador.

A través de una función llamada Boundary Scan, la interfaz JTAG permite el acceso a todos los pines del chip y de esta forma podemos leer y escribir individualmente en cada pin y en consecuencia manipular los periféricos conectados al procesador/microcontrolador (GPIO, memoria, flash, etc.).

Concretamente, en la práctica con la interfaz JTAG podemos:

  • Identificar información sobre el hardware (procesador, memoria, etc).
  • Realizar volcado de la memoria RAM y obtener acceso a datos confidenciales, como contraseñas y claves criptográficas.
  • Cambiar el comportamiento de los programas en tiempo de ejecución para obtener acceso privilegiado al sistema.
  • Capturar datos confidenciales de dispositivos de hardware, como información almacenada en una EEPROM.
  • Activar los periféricos y cambiar su comportamiento, como establecer o restablecer un pin de E/S.
  • Y el punto central: volcar la memoria flash para extraer el firmware del dispositivo

Como vemos, la interfaz JTAG es perfecta para inspeccionar la ejecución del firmware, encontrar vulnerabilidades y explotar el dispositivo.

Y si a estas alturas te estas preguntando ¿por qué muchos fabricantes de hardware no eliminan o deshabilitan el acceso a ella si es tan insegura? La respuesta es concreta: porque es muy útil en la etapa de desarrollo y producción de hardware, ya que con este tipo de interfaz los desarrolladores pueden depurar el firmware que se ejecuta en el dispositivo de una manera práctica y sencilla y también pueden utilizarla como herramienta para programar y probar el dispositivos en producción.

Aunque también es un hecho que algunos fabricantes pueden adoptar contramedidas para dificultar el uso de la interfaz JTAG en el producto final, que incluyen ofuscación (como cortar pistas, quitar resistencias, etc.), reconfiguración de los pines JTAG en software, cifrado y validación de firma de la imagen del firmware, muchos otros fabricantes van más allá y deshabilitan por completo la interfaz JTAG a través de unos fusibles (bits internos del chip que, una vez programados, ya no se pueden cambiar). Pese a todas estas medidas, aun así es posible volver a habilitar la interfaz JTAG con técnicas como silicon die attack, lo cual demuestra que la seguridad es siempre una cuestión que está atada al tiempo, conocimiento y los recursos disponibles.

Cómo extraemos un firmware utilizando JTAG

En cuanto a los requisitos para la extracción del firmware utilizando JTAG, en la práctica es importante que tengamos algunos puntos presentes. Si bien esta publicación no incluye una prueba de concepto real, veamos los cuatro principales pasos que debemos tener en cuenta para extraer el firmware de un dispositivo usando JTAG:

  1. Identifica los pines de conexión JTAG.
  2. Prueba la conexión con un adaptador JTAG.
  3. Recopila información sobre el mapeo de memoria del chip.
  4. Extrae el firmware de la memoria flash.

Conclusión

Luego de esta introducción al hardware hacking creo que nos queda claro que estamos hablando de un universo amplio que involucra conocimientos interdisciplinarios entre electrónica, programación y otras áreas de conocimiento a fines. También queda claro que está lejos de limitarse al uso de dispositivos electrónicos para llevar a cabo ciberataques.

Si te gustó esta introducción, te alentamos a profundizar en el tema y por qué no, a llevar a la práctica esta información y extraer el firmware.

Fuente:  www.welivesecurity.com

 

 

Android 5.0 Key Lime Pie utilizará Linux Kernel 3.8

El nuevo firmware Android 5.0 Key Lime Pie probablemente no vea la luz hasta el mes de mayo, momento en el que se celebra el Google I/O -el congreso de desarrolladores web organizado por Google- y que quizá sea aprovechado para presentar la nueva versión, que según parece podría basarse en el Kernel 3.8 de Linux.

Las últimas informaciones que llegan a este respecto, es que la compañía de Mountain View ha hecho público un repositorio experimental de Linux Kernel 3.8. Este, se basaría en un Kernel estándar de Linux en el que Google habría hecho algunas modificaciones. Estos nuevos datos, que provienen de la web Phoronix, podrían confirmar que Android 5.0 Key Lime Pie vendría con el Kernel de Linux 3.8, lo cual acallaría aquellas voces que indicaban que no sería así.

De confirmarse, será una buena noticia para fabricantes y desarrolladores

Además, este Kernel 3.8 incluiría algunas mejoras bastante destacables en la comunidad Android, ya que es el soporte para procesadores Nvidia Tegra y Samsung Exynos. Por tanto, si finalmente se confirman estas informaciones, sin duda se trata de una buena noticia para fabricantes y desarrolladores que, de cara a temas de compatibilidades, les evitará trabajo extra para poder soportar estos procesadores. También traería consigo un menor uso de la memoria RAM, lo que implica una mayor eficiencia y rendimiento.

No cabe duda de que Google está apostando fuerte por la nueva versión deandroid Android 5.0 Kie Lime Pie, y se habla de que se está gestando algo grande dentro de la compañía de Mountain View (incluso parece que incluirá más cosas), para posicionarse frente a los nuevos sistemas operativos que se han presentado últimamente como Ubuntu y Firefox OS, que vienen pisando fuerte.

En definitiva, este tema ya está en marcha y los desarrolladores que así lo deseen pueden empezar a empaparse con el código antes de la salida al mercado de Android 5.0 Key Lime Pie. Las novedades parece que serán grandes.

Fuente: movilzona.es


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home1/uiolibre/public_html/wp-content/plugins/simple-lightbox/includes/class.utilities.php on line 545