
<= 4.51FW의 PS5를 위한 실험적 webkit 기반 커널 익스플로잇 (Arb. R/W)
이 저장소는 HackerOne에 보고된 TheFlow의 IPV6 Use-After-Free (UAF) 기반 PS5 커널 익스플로잇의 실험적인 WebKit ROP 구현을 포함합니다. 익스플로잇 전략은 대부분 TheFlow의 BSD/PS4 PoC를 기반으로 하며, 성가신 PS5 메모리 레이아웃을 수용하기 위한 몇 가지 변경 사항이 있습니다 (자세한 내용은 연구 노트 섹션 참조). 임의 읽기 / (반임의) 쓰기 프리미티브를 구축합니다. 이 익스플로잇과 그 기능에는 많은 제한이 있으며, 따라서 주로 개발자가 시스템의 일부를 리버스 엔지니어링하기 위해 가지고 놀도록 의도되었습니다.
최신 안정성 개선으로 신뢰성은 약 80%입니다. 이 문서는 PS5에 대한 연구 정보를 포함할 것이며, 이 익스플로잇은 시간이 지남에 따라 지속적으로 개발되고 개선될 것입니다.
PS5 연구/개발에 기여하는 데 관심이 있는 분들은 제가 만든 디스코드에 참여할 수 있습니다 여기.
익스플로잇은 이제 다음 펌웨어를 지원합니다:
dns.conf를 통해 fakedns를 구성하여 manuals.playstation.net이 PC의 IP 주소를 가리키도록 하세요python fakedns.py -c dns.confpython host.py0.0.0.0으로 두세요
ELF 로더를 사용하려면 익스플로잇이 완료될 때까지 실행하세요. 완료되면 :9020 포트에서 서버가 실행됩니다. 해당 포트를 통해 PS5에 연결하여 ELF를 보내면 실행됩니다. ELF가 브라우저를 충돌시키지 않는 한, 계속해서 ELF를 실행할 수 있습니다.
이 익스플로잇은 5단계로 작동하며, 대부분 theflow의 poc와 동일한 익스플로잇 전략을 따릅니다.
ip6_pktopts에서 초기 UAF를 트리거하고 두 소켓이 동일한 pktopts를 가리키도록 / 겹치도록 만듭니다 (마스터 소켓 <-> 오버랩 스프레이 소켓)pktopts를 해제하고 태그된 tclass 오버랩을 포함하는 ip6_rthdr 스프레이로 위조합니다.pktopts/rthdr 오버랩을 사용하여 0x200 슬래브에서 kqueue를, 0x100 슬래브에서 pktopts를 누출합니다.pktopts를 다시 위조하고 오버랩 소켓을 찾아 IPV6_RTHDR을 읽기/쓰기 프리미티브로 사용합니다.이 익스플로잇의 안정성은 약 30% 80-90%이며, 두 가지 잠재적 실패 지점이 있습니다. 관찰된 확률이 높은 순서대로:
읽기 프리미티브를 사용한 다양한 테스트와 덤프에 따르면, PS5는 PS4의 0x4000과 비교하여 0x1000 페이지 크기로 되돌아간 것으로 보입니다.
또한 PS5에서는 인접한 페이지가 같은 슬래브에 속하는 경우가 드물어 보입니다. 인접한 페이지에서 완전히 다른 데이터를 얻게 되기 때문입니다. 메모리 레이아웃이 더 흩어져 있는 것 같습니다.
PS5가 패닉할 때(적어도 WebKit 컨텍스트에서) 오디오 버퍼가 어떤 식으로든 손상되면서 끔찍한 오디오 출력이 발생하는 경우가 많습니다.
때때로 이 오디오 손상이 다음 부팅 때까지 지속됩니다. 이유는 확실하지 않습니다.
PS4와 유사하게, PS5는 패닉 후 재시작하려면 콘솔의 전원 버튼을 수동으로 두 번 눌러야 합니다.
PS5가 인터넷에서 분리된 경우 패닉 후 재부팅하는 데 터무니없이 오랜 시간이 걸리는 것이 정상입니다(불행하게도). 부팅에 3-4분이 걸릴 것으로 예상하세요.