162 lines
7.8 KiB
Markdown
162 lines
7.8 KiB
Markdown
# 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:
|
||
|
||
```text
|
||
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:
|
||
|
||
```text
|
||
/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:
|
||
|
||
```sh
|
||
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](payload-evidence/README.md).
|
||
- 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.
|