
تحدي اختراق Raspberry Pi RP2350: استخراج سر OTP بحجم 128 بت محمي بواسطة الإقلاع الآمن وقفل OTP، مع نصوص برمجية للإعداد وبرامج ثابتة للوحات Pico 2.
مرحبًا بك في تحدي اختراق Raspberry Pi RP2350 ومكافأة اكتشاف الأخطاء!
تهانينا للفائزين الأربعة! اقرأ عنهم جميعًا هنا.
شكر جزيل لـ Thomas Roth وفريق 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 الذي تحتاج إلى استخراجه، كما تعطي بعض مخرجات التصحيح حول ما يحدث في الشريحة.
نظرًا لأن printfs وما إلى ذلك قد تكون عرضة لهجمات حقن الأخطاء، فقد قمنا بتعطيلها في النسخة الآمنة.
ستقوم 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