4 puntos por GN⁺ 14 일 전 | 2 comentarios | Compartir por WhatsApp
  • El modelo de IA Codex ejecutó una cadena de ataque completa en un Samsung Smart TV real, elevando privilegios desde permisos de navegador hasta acceso root
  • El experimento se realizó en colaboración con OpenAI para verificar cómo Codex explora y explota vulnerabilidades de forma automática usando el firmware fuente y acceso al dispositivo
  • Codex encontró una vulnerabilidad de acceso a memoria física en un driver de Novatek y modificó la estructura cred del kernel para obtener una shell root
  • Durante el experimento, Codex repitió la ejecución de comandos y la respuesta a errores, funcionando como un agente colaborativo en tiempo real
  • Este resultado muestra que la IA puede ir más allá del simple análisis de código y descubrir y ejecutar ataques reales contra vulnerabilidades de seguridad en hardware

Proceso del experimento en el que Codex hackeó un televisor Samsung

  • Experimento en el que el modelo de IA Codex amplió permisos de ejecución de código a nivel de navegador hasta privilegios root en un Samsung Smart TV real
  • El equipo de investigación colaboró con OpenAI para comprobar si Codex podía encontrar y explotar vulnerabilidades en un dispositivo de hardware real
  • El experimento comenzó en un entorno de shell de navegador ya obtenido, y Codex automatizó el proceso para obtener privilegios root usando el código fuente del firmware y acceso al dispositivo en tiempo real
  • Codex encontró una vulnerabilidad de acceso a memoria física y, a través de ella, modificó la estructura de credenciales del kernel (cred) para obtener una shell root
  • Como resultado, se demostró que la IA puede ir más allá del simple análisis de código y completar de forma autónoma toda una cadena de ataque real

Configuración del entorno experimental

  • El objetivo del experimento fue un Smart TV que usa firmware de la plataforma interna de Samsung llamada KantS2
  • Para que Codex pudiera operar, se preparó el siguiente entorno
    • Shell de navegador: estado en el que era posible ejecutar código dentro de la app del navegador
    • Host controlador: ofrecía funciones para compilar binarios ARM, alojar archivos por HTTP y acceder a sesiones de shell
    • Listener de shell: inyectaba comandos mediante tmux send-keys y recopilaba resultados en logs
    • Código fuente del firmware: se proporcionó el árbol completo del código fuente de KantS2
    • Restricción de ejecución: debido a Unauthorized Execution Prevention (UEP) de Tizen, no era posible ejecutar binarios no firmados directamente
    • Wrapper memfd: ejecución mediante descriptores de archivo anónimos cargados en memoria
  • El bucle iterativo de Codex estaba compuesto por analizar el código fuente y los logs, enviar comandos, leer resultados y, si era necesario, compilar helpers para ejecutarlos en el TV

Definición del objetivo

  • La misión de Codex era encontrar una vulnerabilidad que permitiera elevar privilegios desde el usuario del navegador hasta root
  • No se especificó ningún driver ni región de memoria concreta; Codex debía explorar por sí mismo la ruta de ataque
  • La vulnerabilidad debía cumplir todas estas condiciones: existir en el código fuente, ser accesible en el dispositivo real y ser alcanzable desde el contexto del navegador

Información inicial proporcionada

  • Ejemplo de la información del sistema proporcionada a Codex
    uid=5001(owner) gid=100(users)
    Linux Samsung 4.1.10 ...
    /dev/... /proc/modules ... /proc/cmdline ...
    
  • Esta información definía los límites de privilegio del proceso del navegador, la versión del kernel, los nodos de dispositivo accesibles y el layout de memoria

Búsqueda de vulnerabilidades

  • Codex descubrió nodos de dispositivo ntk* con permisos world-writable accesibles desde la shell del navegador
    /dev/ntkhdma
    /dev/ntksys
    /dev/ntkxdma
    
  • Estos drivers fueron identificados como código de Novatek Microelectronics y formaban parte del stack de Novatek incluido en televisores Samsung
  • Cuando el acceso a /proc/iomem fue bloqueado, Codex reconstruyó el mapa de memoria usando parámetros de arranque de /proc/cmdline

Primitive de acceso a memoria física

  • El driver /dev/ntksys almacena en una tabla del kernel la dirección física y el tamaño enviados desde espacio de usuario, y luego los vuelve a mapear mediante mmap
  • Esto crea una ruta para acceder a memoria física arbitraria desde espacio de usuario (physmap primitive)
  • /dev/ntkhdma además expone direcciones físicas directamente, lo que facilitó la verificación

Análisis de la causa raíz

  • Configuración incorrecta de permisos de acceso

    • Una regla de udev configuraba /dev/ntksys como 0666 (world-writable)
    • Error de diseño al exponer una interfaz de gestión de memoria a usuarios sin privilegios
  • Ausencia de validación de entradas del usuario

    • u32Start y u32Size de la estructura ST_SYS_MEM_INFO usan directamente la entrada del usuario
  • Falta de validación de direcciones físicas

    • La función SET_MEM_INFO solo valida el índice y no comprueba el rango de direcciones físicas ni los permisos
  • Uso de PFN controlado por el atacante en la etapa de mmap

    • En la llamada a vk_remap_pfn_range se mapea directamente el PFN proporcionado por el usuario
  • Filtración de direcciones en ntkhdma

    • /dev/ntkhdma devuelve la dirección física real del búfer DMA, útil para validar el ataque

Construcción de la cadena de ataque

  • Codex obtuvo la dirección del búfer DMA mediante /dev/ntkhdma y la mapeó con /dev/ntksys, logrando lectura/escritura de memoria física
    HDMA buffer phys addr: 0x84840000
    writing 0x41414141 to mapped address...
    readback: 0x41414141
    
  • Con esto demostró que un proceso sin privilegios podía modificar páginas físicas arbitrarias

Exploit final

  • Codex localizó la estructura cred del kernel y sobrescribió el UID/GID del proceso del navegador con 0
  • Escaneó la ventana de memoria obtenida desde /proc/cmdline, buscó el patrón correspondiente y luego lo modificó
  • Después, al ejecutar /bin/sh, obtuvo privilegios root
    uid=0(root) gid=0(root) ...
    context="User::Pkg::org.tizen.browser"
    
  • Salida de Codex: “Worked.”

Interacción con Codex

  • Durante el experimento, Codex mostró en ocasiones comportamientos anómalos y el investigador tuvo que corregirlo de inmediato
  • Ejemplos de diálogo
    • “bro, the tv froze”
    • “bro can you just like, send it to the server and run it for me?”
  • Estas interacciones muestran que Codex no actuó solo como una herramienta de automatización, sino como un agente colaborativo en tiempo real

Conclusión

  • Codex empezó desde una shell de navegador y completó de forma autónoma una cadena de ataque completa: análisis del código fuente → identificación de la vulnerabilidad → desarrollo del PoC → compilación y ejecución → obtención de root
  • Este experimento demuestra que la IA puede descubrir y explotar vulnerabilidades de seguridad en hardware real
  • El equipo de investigación adelantó como siguiente paso un experimento en el que la IA realice de manera independiente todo el proceso, desde la intrusión inicial hasta la obtención de privilegios root
  • Frase final: “Esperamos que una IA quede atrapada dentro del televisor, elevando privilegios en silencio mientras ve nuestra sitcom.”

2 comentarios

 
todong 3 일 전

Para referencia, esto ya se había corregido hace mucho tiempo (en 2020), y también les pido tomar en cuenta que en el blog original se menciona, como se indica abajo, que se trata de un TV basado en un navegador y un kernel de versión antigua que no habían sido actualizados.
Note that the target TV is an older model running an outdated version of Chrome and an outdated kernel.

 
GN⁺ 14 일 전
Opiniones de Hacker News
  • Tuve una muy buena "sesión de hackeo" con Codex
    En realidad no rompí nada; lo que hice fue saltarme las barreras que puso TP-Link para poder controlar un router que es mío
    TP-Link armó un esquema horrible de autenticación y cifrado para bloquear el acceso a la API, pero después de pelearme medio día con Codex terminé una API limpia en Python para controlar el router
    También exporta métricas de Prometheus y funciona de forma estable
    Creo que este tipo de restricciones al final vienen de una planificación de producto excesiva para dividir artificialmente el mercado entre "consumo" y "empresarial"

    • Antes hice por mi cuenta una versión en Python de tmpcli por la misma razón
      tmpServer escucha en localhost, y dropbear permite port forwarding con privilegios de admin
      Este programa es la API principal que usa la app Tether cuando se comunica con el router
    • Tengo un contador flip de Smiirl que está basado en OpenWrt, pero no tiene interfaz web y solo expone una API con uhttpd
      Quiero encontrar un exploit usando Mythos para habilitar acceso por SSH
      Enlace del producto
    • La expresión "esto no es hackear" me parece una definición demasiado estrecha
      Estamos en Hacker News y no todos buscan romper algo
    • Si uno publica este tipo de proceso, existe el riesgo de sanción penal por violar la sección 1201 de la DMCA
    • A mí también me funcionó algo parecido
      Grabé las solicitudes de la interfaz web en un archivo .har y lo usé para el análisis, y avancé mucho más rápido que haciéndolo sin ayuda de IA
  • Es importante que Codex tuviera acceso al código fuente
    Incluso en el hilo relacionado hubo muchas opiniones de que el código cerrado no ofrece ventajas reales para impedir la detección de vulnerabilidades basada en IA
    Me da curiosidad qué tan bien lo haría Codex sin el código fuente

    • Incluso sin el código, si tienes solo el binario del firmware, una IA puede descompilarlo y entenderlo
      Pero el peor caso con el que me topo es cuando ni siquiera se puede acceder al binario del firmware
      Hay que analizarlo completamente a ciegas porque está soldado directamente al PCB y no se puede extraer ni con un clip para chips
  • No al nivel de Codex, pero también hice experimentos divertidos con Claude Code
    Le pedí explorar dispositivos Bluetooth y encontró las luces RGB del cuarto de mi hija, creó un efecto arcoíris y documentó el protocolo

    • Le pedí a Claude Opus 4.5 que buscara una API privada en software de administración de endpoints, y encontró dos en una hora
      Si hubiera sido .NET, probablemente habría podido encontrar más haciéndolo descompilar también
    • Opus 4.7 resolvió mi problema de emparejamiento de un mouse Logitech
      La 4.6 y Gemini 3.1 fallaron, pero esta vez sí funcionó
    • No estoy muy seguro de que "divertido" sea la palabra correcta
  • Si pudiera convertir una smart TV en una TV tonta, lo haría de inmediato
    Me basta con que sea un monitor simple que solo permita cambiar la entrada y ajustar el volumen

    • Mi smart TV Sony Bravia tiene un OS que se crashea constantemente en la pantalla de inicio
      También tiene mucho input lag y, si cambias la configuración, vuelve a los valores predeterminados
      La pantalla está bien, pero por culpa del OS se convirtió por completo en residuo electrónico
    • La smart TV LG que compré hace poco es parecida
      Tenía expectativas porque webOS desciende de palmOS, pero me decepcionó
      Al final le corté por completo la conexión de red
  • La clave fue proporcionar el código fuente del firmware

    • Me pregunto qué tan difícil sería si solo tuviera que leer código máquina
      Quisiera saber cuánto dependen estos modelos de pistas en lenguaje humano
    • Incluso con solo el binario del firmware, se puede analizar con herramientas como Ghidra
    • Dar acceso al código fuente fue un factor demasiado grande para reducir el hándicap
  • Codex hackeó por completo un OS de TV débil, pero
    lograr acceso total a los controles principales como volumen, entrada, tono o firmware sigue siendo algo demasiado difícil para un LLM por ahora

  • Las TVs Samsung han sido dispositivos muy fáciles de hackear durante los últimos 10 años
    Quizá habría sido posible incluso dándole a GPT-2 solo acceso al navegador

    • Pero GPT-2 no era un modelo orientado a ejecutar instrucciones
      Tampoco tenía funciones conversacionales, así que eso es una exageración
  • Creo que con Codex quizá se podría implementar la eliminación de anuncios o una función para bloquear la transmisión de datos en una smart TV

  • Se mencionó la expresión "browser foothold", y se refiere al propio navegador web que corre en la TV

    • En el pasado, los navegadores también fueron un punto de entrada clave para hackear dispositivos bloqueados
      En PSP, Vita, Switch, Wii, DS y otros también era posible ejecutar homebrew mediante exploits del navegador