Exploits Kernel: Como funcionan y por que hay pocos - PSNeo.com
>

Exploits Kernel: Como funcionan y por que hay pocos

Empezando con el lanzamiento de las consolas pre-IPL, los exploits Kernel se han vuelto algo indispensable para poder ejecutar un CFW en nuestras amadas PSP. Este hecho pasó ha la Vita de la misma forma, pero ¿Están los exploits Kernel destinados a la extinción?

Para entender mas del problema, profundizaremos un poco mas en como se encuentran los exploits Kernel al contrario de los exploits Usermode. Antes que nada, el método de exploitear es completamente distinto, para los exploits Usermode simplemente usas técnicas como el overflow de buffer o la inyección de «basura» para tomar el control de registros que serán usados para saltar a nuestro código sin firmar, normalmente este registro es $ra, pero puede ser cualquiera si el código está bien. Los exploits Kernel no funcionan de esta manera. Primero necesitas desmontar todos los módulos flash0, después tienes que mirar en todas las funciones una por una para comprobar si pueden ser exploiteadas o no.

Exploits Kernel

Lo segundo es el medio en el que los exploits ocurren. Para los Usermode los exploits se encuentran en los juegos de la PSP, para el modo Kernel se encuentran en las funciones Kernel.

Esto es simple: hay cientos de juegos de PSP, una gran cantidad de ellos están en la Store de la PS Vita, de esos, muchos son exploiteables, y los nuevos minis que salen con bastante frecuencia, pero por otra parte solo hay unas pocas funciones Kernel, solo unas pocas de ellas se pueden llamar siendo el usuario (esto significa que se puedan llamar desde el espacio del usuario), y la mayoría de ellas tienen comprobaciones arg y k1 (las comprobaciones que hace Sony para asegurar esas funciones), y lo que es mas importante, Sony no hace nuevas funciones muy a menudo ya que generalmente no es necesario, y otras veces hacen exactamente lo contrario, inutilizan funciones innecesarias para devolver un «ok» genérico. Esto significa que mientras el número de exploits usermode y los posibles exploits usermode crece, el número de exploits Kernel va a menos.

Sabiendo esto, podemos volver atrás en la historia de los exploits en modo Kernel a la era de la 6.XX.

El primer exploit Kernel encontrado en esta era fue lanzado por Total_Noob, poco después salió el 0xFFFFFFFFailSploit para la 6.3X de some1, y para terminar el exploit kermit_wlan por frostegator. He pasado intencionalmente otros ya que quería centrarme en estos para que podáis entender cuanta suerte tuvimos al tener estos. Los exploits Kernel no es algo que podamos buscar ya que no sabemos donde mirar, no sabemos que funciones contendrá, y nunca sabremos si el exploit funcionará si no miramos muy bien. La mayoría de exploits kernel son por fallos de Sony, fallos que son enormes si te pones a mirarlo desde la perspectiva de una compañía con miles de ingenieros a su disposición. Sabiendo esto, vamos a analizar estos 3 exploits para que podáis ver por que tuvimos tanta suerte y fuimos ayudados mayormente por la incompetencia de Sony.

El exploit de Total_Noob 6.20 trataba de un fallo hecho en la comprobación de k1 que lo cambiaba dos veces, espera ¿Qué? Si, lo se, estoy yendo un poco rápido, así que mejor nos pausamos un momento para entender lo que es la comprobación k1. Cuando una función Kernel es llamada desde el espacio del usuario el gerente de interrupción pone el registro k1 a 0x100000. Esto es debido a que la mayoría de funciones cambiarán este valor por 11 bits, así que el k1 se vuelve 0x80000000. Este valor es generalmente se usa con las operaciones y/o (and/or) para que si alguno de esos argumentos contiene una dirección kernel (ejemplo: 0x80FFAA22) entonces el resultado sea 0x80000000, esto se comprueba por negatividad, normalmente comprobado si el valor es menor que 0. La representación en binario de 0x8 es 1000, en dos comprobaciones cualquier número que empiece por 1 es negativo, así que 0x80000000 es negativo y el sistema negará aceptar los argumentos que le has propuesto. Ahora volvamos al exploit de TN, este exploit reside en una función que cambia k1 por 11 bits, todo va bien hasta aqui, ya hemos aprendido que este es el método que el sistema comprueba los valores Kernel, el problema viene cuando esta función llama otra función antes de hacer cualquier comprobación de argumento, y esta otra función cambia el k1 de nuevo, de forma que se vuelve 0x40000000000, pero el registro del k1 solo tiene 32 bits, así que se desborda, volviendose 0x00000000, con el k1 teniendo este valor todo los argumentos pasan la comprobación (por que un calculo «y» entre 0x00000000 y cualquier otro valor siempre devolverá 0x00000000), y después de todo este lio, el sistema pasa a un loc_ donde hay instrucciones para escribir en la memoria, dejándonos hacer mayormente lo que queramos.

Después de este, el segundo mayor error de Sony reside en el exploit de some1. Esta función no tenía ninguna comprobación k1 pero comprobaba los argumentos, el problema está en que en lugar de devolver un error cuando detectaba los argumentos incorrectos, continuaba ejecutando otro código, uno que estaba en una palabra guardada, que nos permitía escribir -1 en cualquier lugar de la memoria. (podéis leer mas explicaciones de este exploit por el mismo some1 aquí).

Esto nos lleva al último de los 3, el exploit de frostegater. Este era incluso mas simple que  los otros, se basaba en una función que no tenía comprobación alguna de k1 o argumentos, y usaba directamente un comando sw que podía usar directamente.

Todos esos errores son los que nos han permitido ejecutar nuestros backups y homebrews con la mayor compatibilidad. Pero como podéis comprobar es díficil para una compañía como Sony realizar estos errores, y mas díficil aún para cometerlos dos veces.

Para terminar con todo esto, tenemos funciones Kernel ya parcheadas, y ninguna que parezca que vaya a salir, y si saliera alguna, seguramente ya tendría comprobaciones Kernel.

Todos hemos disfrutado ya nuestros eCFW, pero ahora son tan escasos como para que nadie crea que queda aún uno solo. Y aún si hubiera mas, llegará un momento en el que Sony haya parcheado efectivamente todas las funciones, posiblemente antes de que hayamos llegado hasta ellos.

Mientras tanto, disfrutad del VHBL, ya que es lo único que veréis por un tiempo, y yo personalmente creo que es lo mejor, ya que para los pies a la piratería.

Fuente: wololo


Publicado por para PSNeo.com el a las 15:12

Comentarios