
Raspberry Pi RP2350: задача по взлому — извлечение 128-битного секрета OTP, защищённого secure boot и блокировкой OTP, со скриптами настройки и прошивкой для плат Pico 2.
Добро пожаловать в задачу по взлому Raspberry Pi RP2350 и программу вознаграждения за найденные уязвимости!
Посмотрите наше короткое пояснительное видео:

Поздравляем 4 победителей! Прочитайте о них всех здесь.
Огромное спасибо Томасу Роту и команде Hextree.io за помощь в разработке и запуске этой задачи в 2024 году!
Задача по взлому RP2350 завершена.
Было получено несколько фантастических работ! Мы объявим победителей и опубликуем подробности 14 января 2025 г.
Пока не было сообщений о взломе.
Мы удваиваем приз до $20,000!
Мы продлили срок проведения задачи, теперь она длится до полуночи 31 декабря 2024 г. (по британскому времени)
Цель проста: найти атаку, позволяющую извлечь секрет, скрытый в OTP ROW 0xc08 — секрет имеет длину 128 бит и защищён OTP_DATA_PAGE48_LOCK1 и безопасной загрузкой RP2350!
Если вы считаете, что нашли взлом, напишите нам на [email protected] с подробностями — мы отправим вам Pico2 с индивидуальным секретом, скрытым в нём. Если вам удастся его извлечь, вы выиграете $20,000!
Удачи!
В рамках этой задачи мы внесём следующие необратимые изменения в ваш RP2350:
crit1.secure_boot_enable (но с открытыми ключами)crit1.debug_disableec_private_key.pem и ec_public_key.pem. Если вы хотите сгенерировать свои собственные ключи, вы можете запустить keygen.sh для создания новых с помощью openSSL../write_otp_secret.sh — это необратимо, так как мы не можем «стереть» OTP../read_otp_secret.shmkdir buildcd buildcmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..makecd ..enable_secureboot.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)
Пожалуйста, смотрите здесь условия, положения и правила этой задачи.
lock_chip.shrp2350_hacking_challenge_debug_version.uf2, либо rp2350_hacking_challenge_secure_version.uf2