Files
relapse-exploit-docker/docs/Y2JB_TEST_2026-10-02.md
T

7.8 KiB
Raw Blame History

Teste YouTube → Y2JB → Relapse (2026-10-02)

Resultado: Y2JB e Relapse completaram o arranque em PS5 Pro firmware 13.20; o ELF loader na porta TCP 9021 ficou acessível. O teste não mede estabilidade prolongada nem segurança ao fechar a app neste firmware.

Ambiente

  • PS5 Pro: 192.168.40.14, firmware 13.20.
  • Servidor: net-utils01, 192.168.20.30.
  • DNS normal: gateway local restritivo neste repositório.
  • Conta de teste: PLAYER1, utilizador local slot 2, separada da conta PSN pessoal.
  • Não houve alterações ao submódulo ou ao runtime Docker.

Ativação offline

ActRemoteLink identificou o slot 2 como utilizador atual, com account ID zero, tipo vazio e flags 0x10000. Com autorização explícita, foi executado SETID apenas no slot 2, com ID fictício, tipo np, flags 0x1002 e Remote Play ativado para o utilizador e globalmente. Retornos de escrita e releitura foram zero/sucesso. O ID não foi associado à conta PSN pessoal.

Não foi executado fake sign-in. A revisão do código mostrou escritas de estado de registo base para além das chaves por slot; não ficou provado que o efeito fosse isolado da conta principal. Y2JB arrancou sem fake sign-in. Remote Play está habilitado no registo, mas não foi emparelhado nem testado. O agente de controlo foi terminado com QUIT.

PKG YouTube e localização do ficheiro

O PKG analisado em Linux foi YouTube.app.PPSA01652.version.EUR.01.000.030.pkg. Strings de metadados confirmaram:

Title ID:      PPSA01652
Content ID:    JA0004-PPSA01652_00-YOUTUBESIEJA0000
ContentVersion: 01.000.030

Apesar de EUR no nome, o prefixo do Content ID é JA; não inferir a região apenas pelo nome. O ecrã Informações da PS5 confirmou versão 1.000.030. Não foi feito hash do PKG instalado nem comprovada a sua proveniência Sony.

O Y2JB 1.6 foi primeiro colocado em /user/download/PPSA01650/, diretório incorreto para este Title ID. Surgiu um loop de avisos PSN/DNS (NW-102312-9). Trocar temporariamente o DNS primário para 127.0.0.2, sem secundário, mudou o erro para NW-102249-8, mas o loop permaneceu. O DNS local foi reposto; a consola nunca foi ligada à PSN para este diagnóstico.

Depois de confirmar o suporte a Title IDs regionais no autoloader upstream, foi corrigido para /user/download/PPSA01652/download0.dat. Esse diretório já continha um ficheiro diferente; foi preservado antes da cópia:

/user/download/PPSA01652/download0.dat.before-y2jb-20261002T150112Z
SHA-256: dc553ea85aab9da884316c0fe9bb222da3e8d384ddf2c1fd119779b11c8a79c1

O ficheiro final tinha 336789504 bytes. A cópia de origem e a releitura FTP no destino coincidiram com SHA-256 946fb64427d340a1a302d260e0cc448b50fe15cfcff8ea167a0d33d3aa76f39d. O ficheiro em PPSA01650 ficou intacto. Não apagar a cópia de segurança sem autorização. Como o caminho e o ficheiro anterior diferiam, não foi isolado qual alteração resolveu o loop.

Depois de reinício normal, sem executar o exploit do Manual no mesmo boot, YouTube mostrou Y2JB 1.6, FW 13.20, Title ID PPSA01652, AppVer 01.000.030, popups desativados e Remote JS Loader em 192.168.40.14:50000.

Relapse

Release edisnord v1.0.0, asset relapse.js, 261458 bytes, SHA-256 f85129b861f43a19f6810be5182aecdcf82a25e59ee5fbcd0604e4a4e2a40d69. O digest correspondeu ao publicado na release. O binário/script foi enviado uma vez à porta 50000, depois de confirmada a ligação. Uma sondagem TCP anterior sem conteúdo gerou No valid data received, esperado para uma ligação vazia.

Saída do teste confirmou offsets FW 13.20, self-test de workers, kernel read/write, privilégios prontos, kexp de 18912 bytes com retorno zero, descritores eboot restaurados e ambos os buffers reais dos pipes restaurados com 10/10 escritas verificadas. O teardown terminou, apareceu relapse complete e o ELF loader ficou à escuta na 9021. Uma sondagem TCP posterior à porta 9021 teve sucesso. O utilizador enviou foto que confirma Executed successfully e Awaiting connection na porta JS.

O payload deixa OIDs de sysctl alterados até reboot; kern.smp.cpus devolve um endereço de kernel em vez do número de CPUs. O texto do payload indica que a app pode fechar com os pipes restaurados, mas essa segurança foi medida upstream em 12.60, não nesta consola 13.20. Não houve teste de estabilidade prolongada, fecho da app, Remote Play ou homebrew neste boot. Não executar outro exploit de kernel nesta sessão. Reiniciar normalmente antes de repetir o teste.

Artefactos verificados

Ficheiro Origem/versão SHA-256
actremotelink_agent.elf commit e61a46eed4832ae563b65810685401ddadee2f9b 201ba90445e1ca1210237318f106724de238a2c629e16a0f190096319d263c4f
pkg-manager_v1.4.1.elf itsPLK v1.4.1 09adaff13b858bb3db519faaea673ee3fa67298081e608d32f6501ed6e9f706e
ftpsrv-ps5.elf v0.21.1 7d4b31c83eae4e056580482a3a074e1db25922efc74ac1e439473b45d71a5938
Y2JB_download0_1.6.zip Gezine 1.6 d032954033c17acda47c41179a22fa09016ddd40a274f4e9afbb051e5d08d3bd
download0.dat extraído do ZIP 946fb64427d340a1a302d260e0cc448b50fe15cfcff8ea167a0d33d3aa76f39d
relapse.js edisnord v1.0.0 f85129b861f43a19f6810be5182aecdcf82a25e59ee5fbcd0604e4a4e2a40d69

Hash confirma identidade/integridade face à fonte indicada, não segurança intrínseca. Não foi provado build reproduzível do agente nem reconstruído o JS byte a byte nesta sessão.

Rede e FTP

Regras foram limitadas a origem/destino nas VLANs, sem NAT, acima dos bloqueios:

Origem → destino TCP Finalidade
net-utils01 → PS5 9021 ELF loader, regra habitual
net-utils01 → PS5 31337 ActRemoteLink temporário, sem autenticação
net-utils01 → PS5 2121 controlo FTP temporário
net-utils01 → PS5 49152–65535 dados FTP passivos temporários
PS5 → net-utils01 20212 tentativa FTP ativo; obsoleta
net-utils01 → PS5 50000 loader JavaScript deste arranque
net-utils01 → PS5 8844, 18842 PKG Manager e Direct Install

ftpsrv v0.21.1 em modo ativo aceitou PORT, mas falhou com 550 Bad file descriptor; revisão do código encontrou socket fechado antes de connect. Modo passivo foi funcional e cada porta anunciada foi validada no intervalo aberto. FTP foi encerrado com KILL. Desativar regras temporárias 31337, 2121, 49152–65535, 20212 e 50000 quando já não necessárias; o estado final do pfSense não foi verificado remotamente.

Memória do net-utils01

O host tem aproximadamente 1.9 GiB RAM, sem swap; /tmp é tmpfs. Guardar ZIP mais ficheiro extraído (cerca de 622 MiB) causou pressão severa de memória, SSH sem banner e HTTP sem resposta. PSI memory full chegou a ~54%. Apagar os dois downloads recuperou SSH. Não foi observado OOM kill confirmado.

Os testes seguintes usaram /var/tmp, verificado em ext4 /dev/sda1, com ~70 GiB disponíveis. Antes de staging grande, verificar:

findmnt -T /var/tmp
df -h /var/tmp
free -h

Não limpar /tmp indiscriminadamente: diretórios privados de serviços systemd foram preservados. Os ficheiros exatos dos testes foram removidos após uso.

Pendentes

  • Fecho controlado do YouTube em FW 13.20 e confirmação de que 9021 persiste.
  • Teste homebrew neste boot; evidências anteriores de kstuff-lite/ShadowMount+ estão em payload-evidence.
  • Teste Remote Play, após rever uma forma de fake sign-in que não afete slot 1.
  • Autoloader itsPLK v0.9.1 não tem kernel exploit para 13.20. v1.0.0-dev integra Relapse 10.20–13.60 mas é experimental, não instalado; rever hash, cadeia automática e elfldr loopback-only antes de o testar.
  • PKG Manager corre em memória (8844 UI, 18842 Direct Install) e precisa de reenvio depois de reboot. A UI respondeu HTTP 200 antes do reboot deste teste.

Este registo é documental; não exigiu rebuild nem deployment do runtime Docker.