Dos consolas, dos cajas de control remoto y un interruptor que pulsa el encendido
El 18 de octubre de 2026, el desarrollador pepsipu publicó ns2jb: el primer jailbreak puramente por software para el firmware 23.0.1, la versión más reciente de la Nintendo Switch 2. Sin desmontar la consola, sin soldaduras y sin chips adicionales: toda la secuencia de explotación, desde el encendido hasta el control total, se ejecuta estrictamente en la capa de software. El código que corre en este entorno opera con privilegios de módulo del sistema, lo que permite ejecutar aplicaciones caseras (homebrew), realizar copias de seguridad de partidas guardadas, modificar juegos y acceder directamente a la mayoría de los periféricos.
Lo que realmente desconcertó a la comunidad no fue solo el exploit, sino la forma en que se descubrió. Todo el proceso de ingeniería inversa fue ejecutado por el agente Codex de OpenAI, cuyas «manos» fueron un bucle de automatización construido con dispositivos comerciales al alcance de cualquiera.
Figura: El bucle automatizado de ingeniería inversa: la Switch 1 y la Switch 2 colocadas una al lado de la otra, dos cajas JetKVM para capturar vídeo HDMI y reenviar órdenes de control, y un interruptor basculante Bluetooth modificado. Fuente: blog de pepsipu
Si el sistema se cuelga, el interruptor pulsa el botón de encendido
Este dispositivo merece una mención especial por ser asombrosamente económico: una Switch 1, una Switch 2, dos unidades JetKVM —pequeñas cajas de red capaces de enviar pulsaciones USB y retransmitir vídeo HDMI— y un interruptor basculante Bluetooth comprado en Amazon y adaptado para la ocasión.
La Switch 2 incluye un comportamiento frustrante para los investigadores de vulnerabilidades: cuando el sistema sufre un bloqueo o un kernel panic, no se reinicia automáticamente, sino que requiere presionar físicamente el botón de encendido. En el pasado, esto obligaba a los investigadores a permanecer sentados junto a la máquina: lanzar una prueba, esperar el cuelgue, pulsar el botón y esperar el arranque. Con el interruptor Bluetooth, esa tarea se delegó por completo a la mecánica: una palanca desciende para presionar el botón de encendido y, una vez completado el recorrido, el par motor residual devuelve el mecanismo a su posición inicial, funcionando como un dedo mecánico que jamás se cansa.
Así se cerró el ciclo de retroalimentación: Codex examinaba la salida de vídeo, enviaba combinaciones de botones, monitorizaba el comportamiento y, al detectar un bloqueo, activaba el interruptor mecánico para reiniciar y continuar con las pruebas. En el pie de foto original, el autor escribió: «set a goal to jailbreak the switch 2. make no mistakes». Más tarde aclaró en los comentarios que se trataba de una simple broma: conseguir el exploit requirió unas dos semanas de ejecución automatizada continua e ininterrumpida. Las máquinas trabajaron día y noche sin fatiga; la intervención humana se limitó a montar el circuito.
La vía del navegador terminó en un callejón sin salida
En un primer momento, Codex apostó por el camino más directo: cargar una vulnerabilidad n-day conocida de WebKit en el navegador integrado de Switch 2 a través de un portal cautivo Wi-Fi personalizado. Según los registros del agente, logró secuestrar el flujo de control nativo (Control Flow Hijacking), tomando el control efectivo del contador de programa.
Sin embargo, Nintendo blindó la Switch 2 con defensas de última generación: XOM (Execute-Only Memory) impide la lectura y escritura de segmentos de código ejecutable, PAC (Pointer Authentication Codes) firma criptográficamente los punteros y CFI (Control Flow Integrity) restringe los destinos de saltos indirectos. Aunque el flujo de control estaba secuestrado, resultaba imposible extrapolarlo a llamadas al sistema arbitrarias. El agente abandonó esta vía a mitad del intento.
Figura: Registro de Codex confirmando el secuestro del flujo de control nativo mediante una vulnerabilidad n-day de WebKit, punto donde se detuvo el ataque. Fuente: blog de pepsipu
En otra consola el resultado podría haber sido distinto, pero esa es la historia de otra máquina.
La vulnerabilidad se ocultaba en un intérprete de BASIC
El verdadero punto de ruptura llegó a través de la Switch 1 en el banco de pruebas. La Switch 1 carece de protecciones PAC, su raíz de confianza (Root of Trust) fue vulnerada hace años por la comunidad y el código de sus juegos puede desencriptarse y analizarse sin prisas. Codex seleccionó como objetivo SmileBASIC, un título comercial que permite a los usuarios programar pequeños juegos en BASIC.
El fallo residía en la función encargada de eliminar elementos de un array: el programa comprobaba si position + count superaba la longitud del array. Sin embargo, al tratarse de enteros de 32 bits con signo, la suma producía un desbordamiento que pasaba a valores negativos, esquivando la comprobación de límites por completo. La posterior copia de memoria se ejecutaba con un tamaño de (length - position) * 8 bytes, provocando una copia fuera de límites (Out-of-bounds copy). Un desbordamiento de enteros de manual, oculto en un título comercial lanzado al mercado hace años.
Dado que ambas generaciones de consolas comparten componentes arquitectónicos esenciales y fundamentos del sistema operativo, enlazar la brecha inicial de Switch 1 con los privilegios de ejecución en Switch 2 abrió el camino definitivo.
Modificar Mario Kart fue una simple diversión
La demostración posterior al jailbreak fue de lo más desenfadada: Codex manipuló el título exclusivo de Switch 2 Mario Kart World, insertando en la parrilla de salida una variada colección de personajes personalizados: Cinnamoroll de Sanrio, Reze de Chainsaw Man, Steve de Minecraft, Walter White de Breaking Bad y Hatsune Miku, todos compitiendo en el mismo circuito.
Figura: Pantalla de clasificación en Mario Kart World tras inyectar modelos personalizados, mostrando a Walter White y Hatsune Miku en la misma carrera. Fuente: blog de pepsipu
El autor aclaró que la modificación de Mario Kart fue puro «vibe coding», improvisado en una sola tarde por mera diversión; el exploit del jailbreak, en cambio, se desarrolló con absoluta rigurosidad técnica. En la sección de comentarios, otros desarrolladores compartieron configuraciones parecidas: desde usar capturadoras y enchufes inteligentes para que Claude adaptara juegos antiguos a DOS, hasta emplear dos microcontroladores ESP con servomotores para pulsar el botón de reinicio en placas x86. La conclusión unánime fue idéntica: la gran ventaja de estos bucles cerrados reside en su capacidad de paralelización y en su funcionamiento ininterrumpido las 24 horas del día.
El cuello de botella nunca estuvo en el intelecto
Volviendo al interruptor Bluetooth que pulsaba una y otra vez el botón de encendido: la ingeniería inversa de hardware se ha visto frenada históricamente por la monotonía de «ejecutar, colgar, reiniciar y volver a probar». En cuanto cámaras, tarjetas capturadoras y relés mecánicos asumen esas tareas repetitivas, el problema deja de ser la falta de mano de obra humana y se convierte en una cuestión de rendimiento y capacidad de procesamiento (Throughput). Los humanos diseñan el bucle, las máquinas asumen la repetición y dos semanas de tiempo de máquina condensan meses de ensayos y errores humanos.
Nintendo difícilmente se quedará de brazos cruzados. El autor reflexiona en una nota al pie sobre la posible respuesta: si Nintendo restringe el código de los juegos para que se descifre únicamente dentro del espacio del kernel, desaparecerán los mapeos ejecutables en el espacio de usuario (Userland). Incluso el cargador de aplicaciones tendría que solicitar el código a anillos de mayor privilegio, a costa de impedir que los juegos inspeccionen su propio código en tiempo de ejecución. Nintendo ya viene reduciendo de forma sistemática las funciones de código dinámico, y esta dirección encaja con su política.
Sin embargo, las reglas de este enfrentamiento han cambiado para siempre. Antes, las defensas solo necesitaban agotar la paciencia de los investigadores de seguridad; hoy, esa paciencia descansa sobre relés mecánicos. Cuando aparezca el próximo 23.0.1, no serán dedos humanos los que pulsen el botón de encendido.
Enlaces de referencia:
- Artículo original en el blog de pepsipu: ns2jb
- Debate en Hacker News (item?id=50192536)