
Raspberry Pi RP2350 ハッキングチャレンジ:セキュアブートと OTP ロックで保護された 128 ビットの OTP シークレットを抽出する。Pico 2 ボード用のセットアップスクリプトとファームウェア付き。
Raspberry Pi RP2350 ハッキングチャレンジ & バグバウンティへようこそ!
4名の受賞者の皆さん、おめでとうございます! 受賞者全員についてはこちらをご覧ください。
2024年にこのチャレンジの開発と立ち上げにご協力いただいた Thomas Roth 氏と Hextree.io のチームに心より感謝いたします!
RP2350 ハッキングチャレンジは終了しました。
素晴らしい応募が多数寄せられました! 受賞者の発表と詳細の公開は2025年1月14日に行います。
まだ破られていないという報告はありません。
賞金を2倍の$20,000に引き上げます!
チャレンジの期間を延長し、2024年12月31日午前0時(英国時間)までとなりました。
目標はシンプルです: OTP ROW 0xc08 に隠された秘密をダンプできる攻撃を見つけてください。秘密は128ビット長で、OTP_DATA_PAGE48_LOCK1 と RP2350 のセキュアブートによって保護されています!
突破に成功したと思われる場合は、詳細を添えて [email protected] までメールをお送りください。カスタムの秘密を隠した Pico2 をお送りします。それを抽出できれば、$20,000 を獲得できます!
健闘を祈ります!
このチャレンジでは、お使いの RP2350 に対して以下の永続的かつ不可逆的な変更を行います:
crit1.secure_boot_enable によるセキュアブートの有効化(ただし公開鍵を使用)crit1.debug_disable によるデバッグの無効化ec_private_key.pem と ec_public_key.pem が既に含まれています。独自の鍵を生成したい場合は、keygen.sh を実行して openSSL を使って新しい鍵を生成できます。./write_otp_secret.sh を使って書き込みます - OTP は「消去」できないため、これは不可逆です。./read_otp_secret.sh を実行して確認できます。mkdir buildcd buildcmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..makecd ..enable_secureboot.sh を実行してチップのセキュアブートを有効にします(これは不可逆的にセキュアブートを有効にします! 鍵のバックアップを必ず保管してください!)
lock_chip.sh を実行してくださいデバッグ版は、抽出する必要がある OTP 秘密を読み取る方法を示し、チップ内で何が起きているかについてのデバッグ出力も提供します。
printf などはフォールトインジェクション攻撃に対して脆弱である可能性があるため、セキュア版ではそれらを無効にしています。
私たちの「ゴールデン」チャレンジ Pico 2 は、バイナリを RAM にコピーした状態で、ファームウェアのセキュア版を実行します。
このチャレンジに参加することで、お使いのデバイスでセキュアブートが永続的に有効になります。
インストールしたいファームウェアはご自身で署名する必要があります。他のプロジェクトで署名を有効にするには、CMakeLists.txt に以下を追加し(pico_add_extra_outputs より上に記述する必要があります)、ec_private_key.pem をソースディレクトリにコピーするだけです。
# Signing and hashing
pico_sign_binary(project_name ${CMAKE_CURRENT_SOURCE_DIR}/ec_private_key.pem)
pico_hash_binary(project_name)
pico_set_otp_key_output_file(project_name ${CMAKE_CURRENT_LIST_DIR}/otp.json)
このチャレンジの利用規約とルールについてはこちらをご覧ください。
rp2350_hacking_challenge_debug_version.uf2 または rp2350_hacking_challenge_secure_version.uf2 のいずれかをコピーします