GitHubで、TheFloW氏が11.0までのPlayStation 4でリモートで任意のコードを実行することができるPPPwnを公開していました。
先日Hackeroneで詳細が公表されたTheFloW氏が1万2500万ドルの報奨金を得た脆弱性CVE-2006-4304を利用したカーネルexploitです。このPPPwnはPS4とPPPoEサーバーの通信でヒープバッファの上書きとオーバーリードを引き起こしカーネル環境でリモートコードの実行する脆弱性を利用しています。PS4では11.0までのファームウェアに対応しています。
Decided to publish PPPwn early. The first PlayStation 4 Kernel RCE. Supporting FWs upto 11.00.https://t.co/INayQSp8fL pic.twitter.com/xhj2jepsY7
— Andy Nguyen (@theflow0) April 30, 2024
ただ、今のPPPwnはコードを実行することができることを実証するためのものでしかなく、画面にPPPwnedと表示するだけのプログラムになっています。どうもTheFloW氏自身ではJailbreakするようなところまではやらないつもりのようです。ここまでやったておいたから後はPS4シーンに任せる、というところでしょう。MiraやHENを実行するにはstage2.binペーロードをPPPwnに適合させる必要があるとTheFloW氏は述べています。
PPPwnはイーサネットポートがあるPC(LANケーブルをUSBコネクタに接続し、LANポートを搭載していない機器に有線接続することができる有線LANアダプタでも動作可能)とLANケーブルでPS4と接続します。
PS4側で動作が確認できているファームウェアのバージョンは9.00と11.00のみです。これについては今後確認が取れ次第追加していくそうです。
PCはLinuxが必要ですが、VirtualBoxを利用してWindows上で仮想Linuxマシンを稼働させたものでも利用できます。Linux上ではPython3とgccが必要です。
PPPoE含むネットワークの設定をした上でPC側はpppwn.pyを実行し、PS4側では[設定]>[ネットワーク]>[インターネット接続を診断する]を実行することでexploitが発動します。
exploitがうまく動作しなかったりPS4がクラッシュした場合には、インターネットの設定をスキップして[インターネット接続を診断する]だけをクリックします。pppwn.pyのPythonスクリプトが固まってしまった場合は、一旦スクリプトを中断してコンピュータ上で実行しなおしてください。PS4で[インターネット接続を診断する]を実行します。
成功するとPS4ではネットワークに接続できない旨表示された後にPPPwnedと表示されます。今のPPPwnだけではできるのはここまでですが、カーネル環境でコードを実行しているのでJailbreak可能です。
[追記]
specterdev氏によると、同じ脆弱性はPS5にもあるもののPS5に適用するのは簡単にはいかない、としています。不可能とまではいかないが、何らかの新たなやり方を考える必要があるためすぐに実用化できる状況にはないようです。
https://twitter.com/specterdev/status/1785384126322757640