Scene de PlayStation 3

En construcción.png

Este artículo está en construcción.

Por esta razón, seguramente habrá lagunas en el contenido o en el formato. Por favor, antes de cambiar el contenido, consulta la página de discusión del artículo.


Contenido

Homebrew

Sony permite instalar otros sistema operativos en los primeros modelos de PlayStation 3, existiendo versiones de Linux para PS3 con lo que tenemos disponible un inmenso abanico de aplicaciones de todo tipo, además de poder desarrollar nuestros propios programas fácilmente. Aun así Linux no tiene acceso a todo el hardware de la consola y por tanto no podemos obtener todo su rendimiento.

El nuevo modelo de PS3 Slim no permite instalar otro sistema operativo.

La opción de instalar y ejecutar otros sistema operativos desaparece a partir de la actualización 3.21 del sistema


Ver también: Linux en PlayStation 3

BD-J

Hasta el firmware 2.42 era posible ejecutar pequeñas aplicaciones Java, creando en una tarjeta de memoria, CD/DVD o en USB una estructura de datos similar a la de un Bluray (los cuales pueden incluir aplicaciones Java) Estas aplicaciones no tenían acceso completo al sistema y se ejecutaban en una máquina virtual Java con las limitaciones impuestas por el estándar Bluray.

En las versiones de firmware actuales se pueden seguir ejecutando programas caseros en BD-J, pero esta operación solo se permite desde discos BluRay (tanto grabables como regrabables). Ni siquiera se permite la ejecución de BD-J en CD o DVD grabados en UDF con la misma estructura de un BR.

Juegos de importación

Actualmente los de PlayStation 3 no incluyen restricciones regionales por lo que podemos utilizar sin problemas juegos adquiridos en Estados Unidos o Japón. La compatibilidad con juegos de PlayStation 2 y PSOne sin embargo sí mantiene las restricciones regionales.


Copias de seguridad

Existen dispositivos USB como PSJailbreak, PSGroove o alguno de sus multiples clones que permiten ejecutar código sin firmar y la carga de copias de seguridad desde discos duros internos y externos.

Aunque la vulnerabilidad explotada está presente entre los firmwares 2.01 y 3.41, la mayoria de dispositivos funcionan solo con la version 3.41 del firmware de PS3. Existen actualizaciones para algunos dispositivos para otras versiones , principalmente la 3.15 (ya que algunos usuarios no ha actualizado apra mantener la opción de instalar otros sistemas operativos.

Estos dispositivos NO FUNCIONAN con versiones superiores a la 3.41, ya que Sony ha corregido el fallo.

George Hotz's silver platter

El 26/01/2010 , George Hotz, conocido por sus modificaciones para liberar el IPhone, publicó una vulnerabilidad que permite acceso total a la memoria del sistema y acceso a nivel de hipervisor al procesador.

La información del proceso se encuentra disponible en el blog de George dedicado a la PS3, en concreto en la entrada del día 26/01/2010 , y consiste en un solución de software y hardware.

La parte software consiste en un módulo del kernel de Linux (por lo tanto el proceso solo puede utilizarse por ahora en los modelos FAT, y no en los nuevos modelos slim, que no tiene opción de OtherOS) que manipula el mapeado de memoria e instala (si la parte HW consigue evitar que ciertas operaciones del HV que impedirian el acceso lleguen a realizarse) 2 nuevas llamadas a nivel de hipervisor (lv1_peek y lv1_poke) que nos permiten acceder a cualquier punto de la memoría física invocándolas desde el kernel .

La parte hardware emite un pulso bajo (conecta a tierra) en el bus de control de memoria durante 40ns. Si el ataque hardware se sincroniza con el software, se gana acceso de lectura/escrituta a toda la memoria física, ya que las peticiones del HV para marcar como inválidas quedan sin realizarse. En caso contrario, el tiempo que el bus está conectado a tierra coincide con otras peticiones y suele provocar un fallo total del sistema (kernel panic o lv1_panic).

La parte software paso a paso

El proceso aquí detallado coincide con el módulo del kernel de linux publicado por George Hotz, pero nada impide que sea implementado sin Linux usando cualquier otra sistema que arranque en el OtherOS , o incluso directamente desde el OtherOS.

Al parecer el exploit tal y como fue publicado por George Hotz , no compila en Fedora ni en Yellow Dog, aunque sí en Ubuntu.

Los pasos son:

  1. Pedir al hipervisor que nos reserve una zona de memoria llamando a lv1_allocate_memory
  2. Crear muchas mapeos que apunten a la zona de memoria anterior llamando 65536 veces al hipervisor con la función lv1_write_htab_entry
  3. En este momento podemos leer y escribir en esa zona de memoria , ya que el hipervisor la ha reservado para nosotros.Además, podemos acceder tanto directamente como con cualquiera de los mapeos.
  4. Pedir al hipervisor que libere la zona de memoria pedida en el paso 1 llamando a lv1_release_memory
    1. Cuando el hipervisor va a liberar la zona de memoria para que se pueda usar de nuevo, ve que primero tiene que liberar los 65536 mapeos que le pedimos, ya que ahora no son validos al apuntar a memoria que ya nos va a pertenecer.
    2. Pero son muchos, y eso le va a llevar algo de tiempo.
    3. Durante este tiempo todo lo que pasa por el bus de memoria son las peticiones del hipervisor para anular los mapeos
  5. Asi que aprovechamos y activamos nuestro HW , que al conectar el bus a tierra , impide que lo que pasa por el bus llegue a la memoria. Con suerte, coincidiremos con alguna de las ordenes para anular un mapeo , y el mapeo quedará activo.
    1. Ojo, que si Sony actualiza el hipervisor para que compruebe que el mapeo se ha anulado despues de mandar la orden por el bus de memoria , adios exploit :-(
    2. Si tenemos la mala suerte de no sincronizar bien el HW con el SW, al poner el bus de memoria a tierra dejaremos sin efecto cualquier otra petición , y esto seguramente provocará que se cuelgue el sistema, bien por un kernel_panic (algo que quería hacer el kernel de linux en memoria no se ha llegado a ejecutar correctamente) , o por un lv1_panic ((algo que quería hacer el hipervisor en memoria no se ha llegado a ejecutar correctamente)
  6. Cuando el HV termina de liberar los mapeos, nos quita también la zona de memoria.
  7. Ahora ya no tenemos la zona de memoria, ya que hemos pedido al hipervisor que la libere, pero de entre todos los mapeos seguimos teniendo alguno disponible, ya que el HV no ha podido anularlos todos, aunque piensa que si, ya que pidió la operación por el bus de memoria.
  8. Pedimos al hipervisor segmentos de memoria virtual hasta que alguno de ellos incluye parte de la memoria liberada en la que tenemos un mapeo con permisos de lectura y escritura
  9. Usamos el mapeo con permiso de lectura y escritura para ganar acceso al segmento principal y con ello acceso a toda la memoria <- COMPLETAR Y EXPLICAR MAS ESTA PARTE
  10. Añadimos 2 llamadas al hipervisor (lv1_peek y lv1_poke) para facilitar manipular la memoria desde el kernel

La parte hardware en detalle

George Hotz usa una FPGA para conectar a tierra durante 40ns el bus de memoria al pulsar un botón manualmente a la vez que inicia el módulo del kernel con la parte software. Es de suponer que puede conseguirse un efecto parecido con hardware más sencillo y barato, pero hasta la fecha nadie ha publicado el esquema de un circuito capaz de manejar pulsos tan cortos. Una modificación interesante del HW sería aquel que permitiese al módulo software dispararlo sin intervención manual de modo que aumenten las posibilidades de que coincidan las peticiones de anulación de mapeos del hipervisor con la actuación del HW para conectar a tierra el bus de memoria.

Enlaces de interés

PSJailbreak

El 19/08/2010 se anunció PSJailbreak, un dispositivo USB que supuestamente pone a la PS3 en modo "debug" y permite ejecutar software casero y cargar copias de seguridad volcadas en el disco duro interno o en uno externo.

PSGroove

El 01/09/2010 Mathieulh libera el código fuente para la clonación de PSJailbreak. Liberado en Open Source bajo el nombre de PSGroove, es el resultado de la investigación de PSJailbreak. Cuenta con la carasterística de no poder cargar backups mediante "Backup Manager", pero ya hay mods del mismo que lo permiten.

PS3 EPIC FAIL

El 28/12/2010 el equipo Fail0verflow (Marcan y otros) anunciaron un fallo tremendo de Sony. Los ficheros se deben firmar con una clave secreta y un número aleatorio. Sony ha firmado todos los ficheros con la clave y el mismo número fijo, por lo que comparando distintos ficheros firmados, han conseguido sacar la clave original de firmado.

A raíz de este descubrimiento han salido publicadas distintas herramientas como:

  • dePKG , publicado por GeoHot y que permite descifrar los firmware de la PS3.
  • fwpkg, publicado por Waninkoko , basado en dePKG pero permitiendo cifrar de nuevo los paquetes.

Más información en:

Bajada de versión (downgrade)

Los mismos dispositivos USB usados para cargar copias de seguridad pueden ser reprogramadas para entrar en modo servicio e instalar una versión anterior del firmware. De este modo , las PS3 con versión 3.50 pueden pasar a la versión 3.41 (y usar copias de seguridad) o la versión 3.15 (y usar Linux/OtherOS) Sony ha cambiado el sistema para bajar de versión y esto no funciona a partir de la versión 3.55. En estas PS3 se puede entrar en modo servicio, pero se ignora como poder bajar de versión.