Aller au contenu


Photo

[PS4] La Team fail0verflow libère le code source du lancement de Linux


  • Veuillez vous connecter pour répondre
13 réponses à ce sujet

Posté 03 mars 2016 - 06:31

#1
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 12 497 messages
  • Sexe:Male
La célèbre team FailowerFlow vient de libérer son code source de l'exécutable permettant de lancer le kernel Linux à partir d'Orbis OS. Le PS4 kexec-style proposé par la team fail0verflow permet de lancer l'exploit, mais ce dernier n'est pas intégré.
 
Cette libération intervient quelques heures après celle du leak du travail de CTurt, mais là il s'agit bien d'une communication de la team fail0verflow.
 

PS4 kexec implementation
This repo implements a kexec()-style system call for the PS4 Orbis kernel (FreeBSD derivative). This is designed to boot a Linux kernel directly from FreeBSD.
 
This is not an exploit. It is useless without some mechanism of injecting code into the PS4 OS kernel.

 

 

 
 
Comme le précise Marcan, l'un des développeurs de la team, il s'agit d'un point d'entrée au kernel PS4 Orbis, pour booter le kernel Linux directement à partir de FreeBSD. Il faut en plus disposer de quelques mécanismes supplémentaires pour pouvoir l'injecter, et ceci n'est en rien un exploit du kernel PS4. 
 
 

 

 
Building
 
To build a kexec.bin relocatable binary using the supplied Makefile, just type make. This will also build a kexec.a archive. You can either use the binary directly, or link the archive into your own project.
 
If you link kexec.a with your own code, you need to supply the two symbols _start and _end in your linker script, as kernel_init() will try to remap all pages covered by that range as RWX (to make global variable accesses work). Alternatively, you can add -DDO_NOT_REMAP_RWX to CFLAGS to disable this feature, if you have already taken care of page permissions for the code.
 
Usage
 
The code is designed to be completely standalone. There is a single entry point:
 
int kexec_init(void *early_printf, sys_kexec_t *sys_kexec_ptr);
Simply call kexec_init(NULL, NULL). This will locate all the required kernel symbols and install the sys_kexec system call. The syscall is registered as number 153 by default (you can change this in kexec.h). The return value is 0 on success, or negative on error.
 
You may pass something other than NULL as early_printf. In that case, that function will be used for debug output during early symbol resolution, before printf is available.
 
If you do not want to call the syscall from userspace, you can pass the address of a function pointer as sys_kexec_ptr. kexec_init will write to it the address of sys_kexec, so you can invoke it manually (see kexec.h for its prototype and how the arguments are passed). Note that the data buffers still need to be userspace pointers in this case, unless you modify kexec.c to use different copy functions.
 
If you are using the standalone kexec.bin blob, then the kexec_init function is always located at offset 0, so simply call the base address of the blob. Don't forget to pass two NULL arguments (or the appropriate pointers).
 
The injected sys_kexec system call takes (userspace) pointers to the kernel and initramfs blobs, their sizes, and a pointer to the (null-terminated) command line string. From userspace, this looks like this:
 
int kexec(void *kernel_image, size_t image_size,
          void *initramfs, size_t initramfs_size,
          const char *cmdline);
 
// syscall() usage:
syscall(153, kernel_image, image_size, initramfs, initramfs_size, cmdline);
kexec() will load the kernel and initramfs into memory, but will not directly boot them. To boot the loaded kernel, shut down the system. This can be accomplished by pressing the power button, but can also be done more quickly and reliably from userspace with the following sequence of system calls (this kills userspace quickly but still does a controlled filesystem unmount):
 
int evf = syscall(540, "SceSysCoreReboot");
syscall(546, evf, 0x4000, 0);
syscall(541, evf);
// should be syscall(37, 1, 30) but only tested via kill symbol
kill(1, 30);
Note that this software should be loaded into kernel memory space. If you are running kernel code from userland mappings, you should either switch to kernel mappings or separately copy kexec.bin to a location in kernel address space. While syscalls or exploit code may run properly from userland, the shutdown hook will not, as it will be called from a different process context.
 
Features
 
kernel_init() will automatically find the Orbis OS kernel and resolve all necessary symbols to work. There are no static symbol dependencies. If DO_NOT_REMAP_RWX is not defined (the default), it will also patch pmap_protect to disable the W^X restriction.
 
In addition to loading the user-supplied initramfs, kexec will locate the Radeon firmware blobs inside Orbis OS, extract them, convert them to a format suitable for Linux, and append them as an additional initramfs cpio image to the existing initramfs. This avoids the need to distribute the Radeon firmware blobs. The radeon module, when compiled into the kernel, will automatically load this firmware on boot. Note however that most typical initramfs scripts will wipe the initramfs contents while pivoting to the real system, so if you compile radeon as a module you may not be able to access the firmware after boot. To cover that case, add some code to your initramfs /init script to copy the firmware to a tmpfs mounted on the real filesystem:
 
# assuming real root FS is mounted on /mnt
 
mkdir -p /mnt/lib/firmware/radeon
mount -t tmpfs none /mnt/lib/firmware/radeon
cp /lib/firmware/radeon/* /mnt/lib/firmware/radeon/
 
# now switch_root to /mnt
This avoids having to permanently store copies of the Radeon firmware, which isn't really necessary for most use cases.
 
There is significant debug logging available, which will appear on the system UART. Most of the code relies on the kernel printf implementation, and therefore you should patch out the UART output blanker to see it. The final code that runs on the boot CPU before booting the kernel uses direct UART writes and is not affected by the blanking feature of Orbis OS.

 

 

 

 

 
Le pack est disponible ici : ps4-kexec

  • Retour en haut

Posté 03 mars 2016 - 06:40

#2
Sansors

Sansors

    ♥ Catin des Bois ♥

  • Shining VIP
  • 3 101 messages
  • Sexe:Female
  • Lieu:Strasbourg
  • Passions:Pass_Code :D

Là ont peut dire que ça avance =) 


  • Retour en haut

Posté 03 mars 2016 - 06:41

#3
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 12 497 messages
  • Sexe:Male
oui :)
  • Retour en haut

Posté 03 mars 2016 - 06:55

#4
crazycrazy

crazycrazy

    Sunriseur elite

  • Members
  • PipPipPipPip
  • 1 370 messages
  • Sexe:Male
Oui ça avance ...mais si y'a pas d'exploit y'a pas de hack.....
  • Retour en haut

Posté 03 mars 2016 - 08:26

#5
seb6719

seb6719

    Sunriseur

  • Members
  • PipPip
  • 152 messages
  • Sexe:Male
Merci de vous connecter pour poster un commentaire

Oui ça avance ...mais si y a pas d'exploit y a pas de hack.....

Peut être mais le lancement de linux depuis la ps4 permettra sans doute de fouiller un peu plus pour justement trouver un exploit exploitable.

Et le lancement de Linux et un hack.
  • Retour en haut

Posté 03 mars 2016 - 08:53

#6
hideki2011

hideki2011

    Technicien

  • Technicien
  • 627 messages
  • Sexe:Male
  • Lieu:Compiègne
  • Passions:Jeu vidéo, modding tuning, infographie 2D & 3D, cinéma...
bientot une sorte de EID root key pour un DEX lol

Consoles:
 

- PS4 PRO Noire | OFW 5.01 | HDD 2To

- PS3 DECR 2*400Go

 

PCs:

 

- Intel Core i7 3930K @ 4,2Ghz 12 Cores | 64Go DDR3 1600Mhz | Pny GTX 1080 8Go @ 2164/11600Mhz | SSD Samsung 960 Evo Nvme Pci-E 4x 250Go + SSD Toshiba 512Go + SSD 128Go + 21To (stockage) Win10 64 Bits.

- Intel Pentium D @ 3Ghz  2 Cores | 3Go DDR2 400Mhz | Geforce 9500 GTS 1Go | HDD 160Go SATA  | Win 7 Titan 32 Bits.

 

Auto:

 

- Opel Omega Elite Grise 3.2L V6 240Chx

 

Fiche technicien:

Xbox 360 || PS3

  • Retour en haut

Posté 03 mars 2016 - 09:30

#7
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 12 497 messages
  • Sexe:Male

Merci de vous connecter pour poster un commentaire

Oui ça avance ...mais si y a pas d'exploit y a pas de hack.....

Peut être mais le lancement de linux depuis la ps4 permettra sans doute de fouiller un peu plus pour justement trouver un exploit exploitable.

Et le lancement de Linux et un hack.


c'est exactement ça :)
  • Retour en haut

Posté 03 mars 2016 - 10:14

#8
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 12 497 messages
  • Sexe:Male
Y a ca aussi qui a été mis à jour :

Linux kernel fork with PS4 support (work in progress)

https://github.com/fail0verflow

https://github.com/f...nux/commits/ps4
  • Retour en haut

Posté 03 mars 2016 - 10:23

#9
chronoss

chronoss

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 6 689 messages
  • Sexe:Male
  • Lieu:Afrique mon beau continent...
  • Passions:Hacker...
Merci à eux et j'espère que cela aboutira à quelque chose demain ;)
  • Retour en haut

Posté 03 mars 2016 - 10:45

#10
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 12 497 messages
  • Sexe:Male
maintenant que c'est public ca "devrait" progresser
  • Retour en haut

Posté 03 mars 2016 - 12:35

#11
cav

cav

    Sunriseur

  • Members
  • PipPip
  • 15 messages
Question : ça fonctionne avec quel firmware ?
  • Retour en haut

Posté 04 mars 2016 - 08:58

#12
Injection2Javel

Injection2Javel

    Sunriseur

  • Members
  • PipPip
  • 19 messages
  • Sexe:Not Telling
https://twitter.com/...431354943660033
  • Retour en haut

Posté 04 mars 2016 - 09:29

#13
lisalove

lisalove

    Sunriseur

  • Members
  • PipPip
  • 151 messages
Avec l'exploit maintenant en libre service de Cturt et le linux de la teamoverflow, y'a plus qu'a compiler et on aura une beau petit PC et espérons le maybe un futur jailbreak.
Merci a l'anonyme qui a publié l'exploit de Cturt.
  • Retour en haut

Posté 04 mars 2016 - 12:03

#14
davidcampbelle

davidcampbelle

    Sunriseur avancé

  • Members
  • PipPipPip
  • 497 messages
Salut,
Moi aussi je voudrait bien savoir quels firmwares est supporté.
  • Retour en haut




0 utilisateur(s) li(sen)t ce sujet

0 invité(s) et 0 utilisateur(s) anonyme(s)