PSP Hack一覧

PSPのmp3クラッシュバグはファジングで発見〜exploitの見つけ方をwololo氏が指南

wololo氏が、自身のブログでPSPのexploitを発見する方法についての興味深い記事を掲載していました。wololo氏はexploitにはならないことは分かっていながらもmp3ファイルでクラッシュするバグを発見したことを公表していましたが(ゲーム最新情報 2009年9月11日のニュース参照)、それをどのように発見したのかを説明しています。【情報源:Wagic, Magic the Gathering, and PSP homebrews

翻訳のみでお伝えします。


PSPのexploit – ファジング手法でクラッシュを探す

今まで何度かお話ししていますが、クラッシュを見つけることがPSPのexploitを発見する第一歩です。(他の機器でも同様なのですが、PSPの場合そのためのツールが充実しているので非常に簡単です)。

そういったクラッシュは通常は偶然の産物(セーブするのを忘れてしまったりという最悪の事態だったりしますが)なのですが、”強制的に”生み出す方法もあります。その一つがファジングです。最近その手法でMP3ファイルでクラッシュすることを発見しましたが(exploitにはならなかったですけどね)、ソフトウェアのテスト手法としては古典的ではありますがクラッシュを発見するためのこの”革命的な”方法は非常にすばらしいと思います。

ウィキペディアでは以下のように書いてあります:

ファジングとは、ソフトウェアの不具合(とくに脆弱性を意図することが多い)を発見するためのテスト手法の一つである。ファズ(英:fuzz)(予測不可能な入力データ)を与えることで意図的に例外を発生させ、その例外の挙動を確認するという方法を用いる。ファズテストと呼ばれることもある。

とても分かりやすいですね。これはプログラムにランダムなデータを投入しクラッシュするかどうかを確かめる方法です。私の場合”プログラムはPSPのmp3プレーヤーでランダムデータというのがmp3の破損ファイルでした。

YouTube:MP3 Crash PSP OFW 6.00.

テストだけならこれで十分なのですが、問題はこの方法でクラッシュを見つけるのは運以外の何ものでもないということです。ただ、PSPのmp3プレーヤーはプレイリストを使えば何千ものファイルを素早くテストをすることが可能なのです。

以下は私がmp3ファイルで実行したことです: 最初は極端に短いmp3ファイルを作りました。音楽の中身を弄くるソフトウエアはオープンソースのものが多いのでそれを用いました。それで1ビットづつファイルの中身を変えて何千ものファイルを作りました。もちろん1つ1つ手入力でなんてやっていません。スクリプトを使いました。私はRubyを使いましたがスクリプト言語であれば何でも構いません。(perl、php、python…その他Linuxのシェルで作ってもいいですし、CやC++でもいいです)。私のスクリプトはこんな感じでした。

ruby

スクリプトの内容はこのようになっています: “a.mp3″ というファイル(作成した普通のmp3ファイルです)を開き、iを0から200まで変えながらiに当たる場所をjの値に変更していきます。jは0から255までの値です。つまりファイルの中の全バイトを1バイトずつ変えてみようとしたわけです。これだけで何千ものファイルが出来上がります。iの値ごとにディレクトリを作成すると1フォルダごとに255個のファイルが出来上がります。ちなみに使った1GBのメモリースティックがすぐいっぱいになってしまうので変更したのはファイルの最初から200バイトだけです。もちろんもっとたくさん作ることは可能です。(ただしmp3プレーヤーがmp3のディレクトリで255個以上のサブフォルダを使えるかどうかは確認の必要があります)。この200バイトを変更した分までテストし終えたら次は201から400まで…というように順に実行しました。

files.png

これが完了してしまえば、そのファイル(各々のフォルダに入ったままですが、PSPのmp3プレーヤーはフォルダごとに999個のファイルが限界です)をコピーしてあとはすべて再生してみるだけです。

再生には時間がかかります。とはいっても再生中ずっとPSPを見ている必要はありません。たまに見た時にPSPの電源が落ちていたらそれはクラッシュが起きていたということになります。その場合次にファイルを半分に減らし、どのファイルが犯人かが分かるまで再び再生を続けます。

以上がこの手法の全てです。今回はmp3ファイルで実施しましたがもちろん動画ファイルや画像ファイル(スライドショーが使えますね)でも構いません。ただプレイリストの扱いがどうなのかよく分かりませんのでお試しになった方は結果を是非教えてください。この手法のポイントは莫大な数のファイルを短時間でテストすることが出来ることです。数千ものファイル(今回のmp3の場合は50万個ものファイル) をテストとはいってもソフトウェアが実行しうる組み合わせとしてはほんの一部分なのです。(1バイトではなく2バイト変えたら、ベースとなるmp3ファイルを変えたら、mp3ではなくwmaだったら、など考えだしたらきりがありません)。みなさんがこの手法で各自違った組み合わせを試してみることが大切ですが、例えば10個のファイル程度で結果が出るなどという甘い期待は抱かないほうがいいでしょう。

exploitを見つける方法は当然他にもありますが、今回のファジングに関しては利用するメリットがあります: それはプログラムの知識がないと出来ないようなものではなく比較的簡単に取り組める、ということです(もっとも多少スクリプトの知識は必要になりますが、mp3ファイルのどこがどうなるとクラッシュするといった知識は不要です)。時間もそんなにかかりません(大量にファイルをテストしてもシステム的にはちゃんと処理してくれます)。

このファジングの手法でPSPのmp3ライブラリにバグを発見したことで実は私も驚いています。当然ソニーも同じような方法でファームウェアをテストをしているだろうと思っていたからです。

今回の記事がソフトウェア側のセキュリティを設ける側の方々と、それを破ってDRMの悪夢から世界を解放しようとする方々に次のきっかけを与えることが出来れば、と思います。ハッキング万歳!


exploitを発見することが手柄のような風潮があり、その手法を公開するようなケースはまれだと思っていましたがさすがwololo氏はちょっと違いますね。
彼自身も普段からクラッシュバグを探していると思いますが公開されている数も少ない上に本当のexploitにまで至っていません。そのことは如何にexploitにつながるPSPシステムの脆弱性の発見が困難かを物語っているのではないでしょうか。とはいえ、多くのユーザーがバグ発見に取り組めばexploitが見つかる確率は確実に上がります。wololo氏の狙いもそこにあります。

FreePlay氏が、PSP goのeLoader(Homebrewローダー)を準備中(ゲーム最新情報 2009年11月8日のニュース参照)だそうですので、これを機にPSP goのハッキングが盛り上がるといいですね。



CFW5.03GEN-B for HENリリース〜5.03GEN-Bの紹介からインストール方法記事まで全訳

PSPGENで、PSP-3000とPSP-2000v3でCFW5.50GEN-D2と同等の機能を実現するカスタムファームウェア5.03GEN-B for HENをリリースしたことを伝えていました。【情報源:PSPGEN

ブログの字数制限のため翻訳のみでお伝えします。5.03GEN-B for HENの紹介記事3ページ分とインストール方法ページの全訳です。


カスタムファームウェア 5.03GEN for HEN-B (PSP-3000)

カスタムファームウェア 5.03GEN for HEN-B (PSP-3000)がついに完成です。これで目標をクリアしたとは考えていませんが、要求ファーム5.55以上のゲームやプロテクトがかけられたゲームはプレイ可能になりました。

1 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): 内容説明

ついにCFW 5.03GEN for HEN-B (PSP-3000)の公開に至りました。皆さんにもお試しいただけることは喜ばしい限りです。
CFW 5.03GEN-Bはシステムバージョンが5.03までの、CFW対策基板となっているPSP-3000とPSP-2000v3で使用するためのCFWです。Davee氏のChikHEN R2を利用してCFW 5.03GEN-Aが(そして今回のGEN-Bも)起動できるようになりました。

5-03gen-b-1

5.03GEN-Bの中心となる機能は、カスタムファームウェア対策のためにプロテクトが施されたゲーム(ヱヴァンゲリヲン:序鋼の錬金術師)を含む要求ファームウェアが5.03より後のゲームの起動サポートです。Yoshihiro氏がCFW 5.03GEN-D2と同等の機能を盛り込むべく仕上げてくれました。
PSP-3000(PSP-2000v3も)のユーザーの皆さんは今まで放置されていたかのように感じていたかもしれませんが、こちらの動画を見て喜びを噛みしめていることでしょう。

ビデオ:Daily Motion Custom Firmware 5.03GEN-B for HEN (PSP-3000)

残念ながら、我々GENチームとしては目的を100%達成したとは思っていません。完璧とは言えない状況が残っているのです。

2 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): 機能説明と既知の不具合

何が出来ないのかをご説明する前に、PSP-3000でのカスタムファームウェアとは何かというのを確認しておきたいと思います。

主要機能の内容について:
・ 公式ファームウェア5.03のPSP-3000とPSP-2000v3に対応
・ 要求ファームウェアが5.03より上のゲーム(6.xx含む)のバックアップ起動
・ 要求ファームウェアが5.03より上のゲーム(6.xx含む)のUMD起動
・ カスタムファームウェア対策を施されプレイ不可能だったUMD/やバックアップISOの起動
・ PS1ゲームの起動
・ SELECTボタンでGEN VSH MENUを起動
・ VSHでリカバリー機能有効
・ Homebrew起動
・ その他…

次に我々が解決に至っていない問題点についてです。

既知の不具合について:
・ メタルギア ソリッド ピースウォーカーのデモ版が起動しない
いろいろ手は尽くしましたが、5.50GEN-D2で動作している物が5.03GEN-Bでは起動しません。残念…

・ リカバリーは”混合”で
5.02GEN-AのリカバリーモードをPSP-3000で動作するようパッチしました。通常の機能には何ら支障はありませんが、VSHリカバリーにだけ問題があり修正しきれませんでした。実際メニューの行表示がおかしかったり正常に動作しなかったりします。PSP-3000に関してはリカバリーメニューは使用不可ですので、Total_Noob氏のUltimate VSH menuをインストールしておくことをおすすめします。

リカバリーのメニュー一覧と動作状況については以下です:

– Toggle USB = ok
– Configuration = ok
– Skip Sony logo: 動作不可 (しなくても問題なし)
 - Hide corrupt icons = 動作せずSonyロゴがスキップ
 - Game folder homebrew ok
 - Autorun program at /PSP/GAME/BOOT/EBOOT.PBP ok
 - Fake region ok
 - Use vsh menu ok
 - XMB USB Device ok
 - Charge device with usb ok
 - Use M33 network update ok
 - Use version.txt ok
 - Hide MAC address ok
– Use game categories = ok
– Reboot in official firmware > 動作不可
– Run program at = Menu Advanced
– Advanced = CPU SPEED
– CPU SPEED = Plugins
– Plugins = registry hack
– Registry hack = suspend device
– Suspend device = reboot in official firmware
– Reset system = quit

3 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): インストール方法

CFW 5.03GEN-Bリリースの準備がようやく整いました。起動に必要な条件は以下です:
・ 公式ファームウェア5.03のPSP-3000とPSP-2000v3であること
・ メモリースティックにChickHEN R2が入っており起動できること

注意点:

HENとはHomebrew Enablerのことです。PSPの公式ファームウェア上でHomebrewを起動させることができるようになります。作者のDavee氏はChickHENでシステムの2つの脆弱性を利用しています:一つはMatiaz氏らが発見したexploit、もう一つは彼自身が発見した、ハードウェア本体(UMDやWiFiなど)の機能にアクセスすることができるカーネルモードexploitです。CFW 5.03GEN-Bを起動させるためには彼のChickHENはなくてはならない存在です。

HENについてもっとお知りになりたい場合は以下の記事をご参照ください。
(※PSPGENの紹介しているリンク先ではなくChickHEN&5.03GEN-A関連の翻訳記事をご紹介します。)
ChickHEN Homebrew Enablerリリース
ChickHEN for Firmware 5.03 R2 公式修正版リリース
Custom Firmware 5.03GEN-A for HEN インストール方法ページを翻訳
5.03GEN-A for HEN修正版リリース〜PSP-2000に対応

5-03gen-b-1

警告:

CFW 5.03GEN-B for HENはインストールした時点でもとに戻せなくなります。CFW 5.03GEN-B for HENは必要なファイルだけを追加するもので、公式ファームウェア5.03自体に変更を加えるものではありません。一度インストールするだけでカスタムファームウェアの状態となり、PSP本体のflash0にアクセスできるようになります。 PSP-3000(またはPSP-2000 v3)では絶対にflash0の中身は操作しないでください。公式ファームウェア5.03のファイルに変更を加えると二度と戻せなくなるばかりか起動すらしなくなる恐れがあります。ですのでPSP-3000とPSP-2000v3の場合はflash0を操作するような自殺行為は絶対に避けてください。

インストール方法:
注意: メモリースティックにプラグインが入っている場合、必ず無効(disable)にしておいてください。
Custom Firmware 5.03GEN for HEN-B (PSP-3000)のアーカイブファイルをダウンロードします
・ PSPをUSBでPCと接続します。
・ PSPの”USB接続”オプションでPSPをUSBモードにします
・ PCにダウンロードしたアーカイブファイルをマウスの右クリックします。
・ “解凍”を選択します(WinRARの場合)
・ 解凍先にPSPのドライブレターを選択します
・ OKを押してファイルの解凍が終了するまで待ちます
・ PSPで”USBモード”を終了します

使い方:
・ XBMでゲーム > メモリースティックにあるQuick Updater 5.03GEN-Bを表示します

Quick Update 5.03GEN-B

・ ×ボタンを押してアプリケーションを起動します
・ アプリケーション起動後の選択肢は以下です:
   ×:パッチを起動
   R:何もしないで終了
   ○:Version.txtをオリジナルに戻す(PSP売却時などにご利用ください)
・ 今回初めてインストールする場合には必ず×ボタンを押してください。適切なファイルがPSP本体のflashに書き込まれます。この操作でPSPがbrickすることはありません
・ その後”press X to reboot in CFW 5.03GEN-B”と表示されたら×ボタンを押してカスタムファームウェアを起動します
・ PSPが再起動するとCFW 5.03GEN-B for HENになります。

5-03gen-b-1
電源を切るまではカスタムファームェアのままです。

PSPを再起動後CFW 5.03GEN-B for HENへの復帰の仕方は?

CFW 5.03GEN-B for HEN-Bは正真正銘本当のカスタムファームウェアですが、PSP-3000(またはPSP-2000v3)からは直接改造ファームウェアを起動させることは出来ません。必ずDavee氏のchickHEN R2を先に起動した状態でQuick Updater 5.03GEN-Bを実行しカスタムファームウェアを有効にしてください。そんなに時間はかかりませんのでQuick Update 5.03GEN-Bを実行するのも手間ではないでしょう。

5.03GENの再インストール方法について:
もし5.03GEN-Bが既にインストール済みの場合、新規インストールオプションが表示されません(便利な機能です)。 ただ、どうしても再インストールしたい場合にはLボタンを押しながらQuick Update 5.03GEN-Bを起動すれば強制的に再インストールすることは可能です。


今回PSPGENは英語記事を公開しませんでした。
実際は機械翻訳の不手際を人力で修正したgoogle翻訳ですがGENチームに国際的リーダーの自覚が生まれたのだと感心していたところでしたのでちょっと残念です。

 


CFW 5.03GEN-B for HENは来週登場〜PSP-3000で5.50GEN-D2同等の機能を

PSPGENで、PSP-3000やPSP-2000v3でもCFW5.50GEN-D2同様要求ファームウェア5.55以上のゲームを起動することが出来るCFW 5.03GEN-B for HENをリリースすることを伝えていました。【情報源:PSPGEN


Custom Firmware 5.03GEN-B for HEN : Coming soon…
カスタムファームウェア 5.03GEN-B for HEN :まもなく登場

This Custom Firmware runs on PSP-3000 and PSP-2000 v3 and allows you to play with all games even protected ones on your PSP.
このカスタムファームウェアはPSP-3000とPSP-2000のv3で起動します。プロテクトが施されたゲームもプレイ可能です。

We finally arrived at our second release of the 5.03 GEN Custom Firmware for HEN and we are happy that there are so many people waiting for a second release. The initial 5.03GEN-A for HEN release which is already a few months old, allowed you to experience homebrews on your psp-3000 devices.
カスタムファームウェア5.03GEN for HENはようやくセカンドリリースの運びとなりました。待ち焦がれていた方がたくさんいてくださるようで、作る側としては嬉しい限りです。PSP-3000でHomebrewが楽しめるようになった最初の5.03GEN-A for HENリリースからすでに数ヶ月が経過しています。

5-03gen-b-1

Our 5.03GEN-A custom firmware has been used throughout the world, which even resulted in a special psp-3000 packaging in China. (Insolite : des packs PSP 5.03 GEN en vente en magasin en Chine !). However, this Custom Firmware had a real problem, which started to be difficult for users : iit was limited to the games that needed a firmware 5.03 max.
CFW5.03GEN-Aは世界中で利用され、中国ではスペシャルパッケージまで登場したくらいです。(ゲーム最新情報 2009年8月22日のニュース参照)。しかしこのカスタムファームウェアには事実、問題があるのです。要求ファームウェアが5.03までのゲームしか起動できないという問題です。

This new version will always be compatible with official 5.03 firmware functions and will always allow 5.02GEN-A features BUT with now the ability to play with all games, even protected ones such as Evangelion, Fullmetal Alchemist… just like our new 5.50GEN-D2 does.
新バージョンでは公式5.03ファームウェアの機能と互換性は有しつつ5.02GEN-Aの機能を盛り込んでいるだけにとどまらず、5.50GEN-D2同様ヱヴァンゲリヲン:序鋼の錬金術師FULLMETAL ALCHEMISTといった、プロテクトが施されたゲームをプレイできるようになります。

5-03gen-b-5 5-03gen-b-2

Custom Firmware 5.03GEN-B for HEN will have :
CFW 5.03GEN-B for HENは以下の機能を有しています:

* PSP-3000 et PSP-2000 v3 with official Firmwware 5.03 compatbility
 公式ファームウェア5.03までのPSP-3000とPSP-2000 v3に対応
* PS1 games compatibility
 PS1のゲーム対応
* Protected UMD/backup compatibility
 プロテクトが施されたUMD/バックアップISOの起動に対応
* 5.55 + UMD/backups compatibility.
 要求ファームウェア5.55以上のUMD/バックアップISOの起動に対応
* GEN VSH MENU available
 GEN VSH MENU対応
* Recovery in VSH available
 VSHリカバリー対応

The Custom Firmware 5.03GEN-B works fine and has a good stability. During our tests, We never met any freezes or any problem with 5.55+ games and protected ones. We are now on the final beta test period which will take one week. This delay gives our newsers the time to prepare good tutorials and videos to support a proper launch.
カスタムファームウェア5.03GEN-Bの動作は非常に良好で安定もしています。テストを実施していますが、その間にフリーズしたりすることもありませんし要求ファーム5.55以上のゲームやプロテクトがかかったゲームでも問題は発生していません。現在は1週間かけて最終ベータテストを実施しているところです。当然その分リリースは遅れますが、その時間を使ってリリース時にご紹介できるチュートリアルやビデオを作成中しています。

We will release the Custom Firmware 5.03GEN-B on the Halloween day (october, 31).
CFW 5.03GEN-B for HENはハロウィーン(10月31日)にリリース予定です。


ChickHENが起動するOFW5.03から公式ファームウェアは進化して現在は6.10になっています。相当中身も進化しているなら5.03のままであることのデメリットもあるとは思いますが、どちらかというとハッキング対策でファームウェアがバージョンアップしてきたと言っても過言ではないので5.03GEN-B for HENで何ら問題はないでしょう。
OFW6.10はPSP goのためという側面はありますが、過去のファームウェアのようにバージョンアップする度に機能が追加されるので最新の物が最良、なんて言う時代が再び来ない限りGENの開発スタイルでなんら問題ない気がしてきました。
PSNに繋げない問題は何をしてもソニーに対策されてしまうでしょうから、6.00や6.10を解析した結果が5.50GENや5.03GEN-Bに受け継がれている現状で十分、そう思いませんか?