
Desafio de hacking do Raspberry Pi RP2350: extraia um segredo OTP de 128 bits protegido por secure boot e bloqueio OTP, com scripts de configuração e firmware para placas Pico 2.
Bem-vindo ao desafio de hacking e bug bounty do Raspberry Pi RP2350!
Assista ao nosso vídeo explicativo rápido:

Parabéns aos 4 vencedores! Leia sobre todos eles aqui.
Um enorme obrigado a Thomas Roth e à equipe da Hextree.io por nos ajudar a desenvolver e lançar este desafio em 2024!
O Desafio de Hacking do RP2350 foi concluído.
Houve submissões fantásticas! Anunciaremos os vencedores e publicaremos os detalhes em 14 de janeiro de 2025.
Nenhuma quebra foi reportada ainda.
Estamos dobrando o prêmio para $20.000!
Estendemos o prazo do desafio, que agora vai até a meia-noite de 31 de dezembro de 2024 (horário do Reino Unido)
O objetivo é simples: Encontre um ataque que permita extrair um segredo escondido na OTP ROW 0xc08 - o segredo tem 128 bits e é protegido por OTP_DATA_PAGE48_LOCK1 e pelo secure boot do RP2350!
Se você acha que encontrou uma brecha, envie um e-mail para [email protected] com os detalhes - enviaremos a você um Pico2 com um segredo personalizado escondido nele. Se você conseguir extraí-lo, ganha os $20.000!
Boa sorte!
Para este desafio faremos as seguintes alterações persistentes e irreversíveis no seu RP2350:
crit1.secure_boot_enable (mas com chaves públicas)crit1.debug_disableec_private_key.pem e ec_public_key.pem. Se você quiser gerar suas próprias chaves, pode executar keygen.sh para gerar novas usando openSSL../write_otp_secret.sh - isso é irreversível, pois não podemos "apagar" a OTP../read_otp_secret.shmkdir buildcd buildcmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..makecd ..enable_secureboot.sh (Isso habilita o secure-boot de forma irreversível! Certifique-se de manter um backup das suas chaves!)
A versão debug mostra como ler o segredo da OTP que você precisa extrair, e também fornece alguma saída de debug sobre o que está acontecendo no chip.
Como os printfs etc. podem ser suscetíveis a ataques de fault-injection, nós os desabilitamos na versão secure.
Nosso Pico 2 de desafio "golden" executará a versão secure do firmware, com o binário copiado para a RAM.
Ao participar deste desafio, você está habilitando permanentemente o secure-boot no seu dispositivo.
Qualquer firmware que você queira instalar precisa ser assinado por você mesmo. Você pode habilitar
a assinatura para outros projetos simplesmente adicionando isto ao CMakeLists.txt (isso precisa estar acima de pico_add_extra_outputs) e copiando o
ec_private_key.pem para o seu diretório de código-fonte.
# 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)
Consulte aqui para termos, condições e regras deste desafio.
lock_chip.shrp2350_hacking_challenge_debug_version.uf2 ou rp2350_hacking_challenge_secure_version.uf2