مهندسی معکوس قلب امنیتی پلی‌استیشن ۲ پس از ۲۵ سال

|
۱۴۰۵/۰۷/۱۳
|
۰۶:۰۰:۰۳
| کد خبر: ۲۳۹۷۴۳۰
پلی استیشن
برنا – گروه علمی و فناوری: پس از بیش از ۲۵ سال پژوهشگران موفق شدند firmware تراشه امنیتی SPC۹۷۰ کنسول‌های اولیه پلی‌استیشن ۲ را استخراج کنند.

بیش از ۲۵ سال پس از عرضه نخستین مدل‌های پلی‌استیشن ۲ موسوم به Fat PS۲ پژوهشگران و توسعه‌دهندگان موفق شدند firmware تراشه امنیتی SPC۹۷۰ MechaCon را استخراج و مهندسی معکوس کنند، تراشه‌ای که وظیفه تأیید دیسک‌ها و بخش قابل‌توجهی از سازوکار‌های امنیتی این کنسول را بر عهده دارد.

به گزارش گروه ترجمه خبرگزاری برنا به نقل از انگجت، این دستاورد به این معناست که یکی از آخرین بخش‌های ناشناخته سخت‌افزار اولیه پلی‌استیشن ۲ اکنون در دسترس پژوهشگران قرار گرفته است.

یک توسعه‌دهنده با نام کاربری DiscoStarslayer موفق شده firmware تراشه SPC۹۷۰ MechaCon را استخراج کند. این تراشه از اجزای اصلی سیستم امنیتی مدل‌های اولیه پلی‌استیشن ۲ محسوب می‌شود و تاکنون دسترسی مستقیم به کد داخلی آن امکان‌پذیر نبود.

DiscoStarslayer در پستی در شبکه اجتماعی Bluesky از Libby همکار این پروژه قدردانی کرده است، فردی که موفق به پیدا کردن یک آسیب‌پذیری شد که امکان استخراج محتوای تراشه را فراهم کرد.

بر اساس مستندات ابزار مورد استفاده برای استخراج firmware این آسیب‌پذیری از نحوه مدیریت داده‌های تنظیمات در تراشه SPC۹۷۰ سوءاستفاده می‌کند. پژوهشگران به تراشه اعلام کردند که داده‌های تنظیمات ورودی قرار است خالی باشد، اما در ادامه داده‌ای بیشتر از ظرفیت اختصاص‌یافته برای آن ارسال کردند.

پیش از کشف این روش پژوهشگران طی حدود چهار سال تلاش کرده بودند با روشی بسیار کندتر و از طریق برداشتن لایه‌های بسته‌بندی فیزیکی تراشه و خواندن محتویات آن، firmware را استخراج کنند. با این حال این روش تنها به تولید dump‌های ناقص و تقریبی منجر شده بود.

انتشار ۲۲ تصویر firmware از مدل‌های مختلف پلی‌استیشن ۲

تمام داده‌های به‌دست‌آمده اکنون در GitHub منتشر شده است. این مجموعه شامل ۲۲ تصویر firmware از مدل‌های مختلف پلی‌استیشن ۲ است از مدل ژاپنی SCPH-۱۵۰۰۰ که در سال ۲۰۰۰ عرضه شد تا مدل‌های سری ۳۹۰۰۰ در سال ۲۰۰۲.
این تصاویر تنها به کنسول‌های خانگی محدود نیستند و نمونه‌هایی از برد‌های آرکید Namco System ۲۴۶ و Namco System ۲۵۶ را نیز شامل می‌شوند که از همین تراشه استفاده می‌کردند.

مدل‌های اولیه پلی‌استیشن ۲ از جمله آخرین بخش‌های ناشناخته این کنسول بودند. پیش از این firmware مربوط به نسخه دیگری از MechaCon موسوم به Dragon در سال ۲۰۲۱ استخراج شده بود.

چگونه firmware تراشه استخراج شد؟

تراشه SPC۹۷۰ کد خود را در Mask ROM نگهداری می‌کند. نوعی حافظه فقط‌خواندنی که امکان نوشتن یا اصلاح مستقیم کد موجود در آن وجود ندارد. در کنار آن تراشه یک EEPROM یک کیلوبایتی برای ذخیره داده‌های مربوط به کالیبراسیون و پیکربندی دارد.
گروه علاقه‌مندان و پژوهشگرانی که با نام spc۹۷۰-dumper-union فعالیت می‌کنند برای استخراج firmware از نحوه نوشتن اطلاعات در همین EEPROM استفاده کردند.

پژوهشگران متوجه شدند اگر یک نشست نوشتن تنظیمات با تعداد بلوک صفر آغاز شود شمارنده داخلی تراشه دچار underflow می‌شود. سپس با ارسال داده‌ای بیشتر از ظرفیت بافر هفت‌بلوک تراشه، اطلاعات اضافی وارد بخشی از RAM می‌شود که وظیفه نگهداری اطلاعات مربوط به عملیات نوشتن EEPROM را دارد.

در مرحله بعد پژوهشگران با بازنویسی آدرس مبدا این عملیات مسیر خواندن داده را از EEPROM به سمت ROM داخلی تراشه تغییر دادند. در نتیجه MechaCon به جای آنکه داده مورد انتظار را در EEPROM بنویسد ۲۵۶ بایت از firmware خود را در EEPROM کپی می‌کند.

از آنجا که کنسول پلی‌استیشن ۲ می‌تواند داده‌های موجود در EEPROM را با استفاده از یک فرمان استاندارد بخواند پژوهشگران قادر شدند این فرآیند را بار‌ها تکرار کنند. با انجام حدود هزار مرحله در نهایت یک تصویر کامل ۲۵۶ کیلوبایتی از firmware تراشه روی حافظه USB قرار می‌گیرد.

خطر فرسودگی EEPROM

این روش البته بدون ریسک نیست. هر یک از این حدود هزار مرحله عملیات بازنویسی EEPROM را انجام می‌دهد و از آنجا که این حافظه فاقد wear leveling است هر بار نوشتن بخشی از عمر مفید آن را کاهش می‌دهد.

EEPROM مورد استفاده در تراشه نیز نسبت به حافظه‌های فلش ظرفیت نوشتاری محدودتری دارد. به همین دلیل ابزار استخراج پیش از شروع عملیات از اطلاعات EEPROM نسخه پشتیبان تهیه می‌کند.

پس از پایان استخراج اطلاعات اصلی EEPROM به‌صورت کلمه‌به‌کلمه بازگردانده می‌شود و نتیجه نیز با استفاده از روال checksum هنگام روشن‌شدن تراشه بررسی می‌شود تا مشخص شود داده‌ها به‌درستی بازیابی شده‌اند.

با وجود این اقدامات همچنان احتمال آسیب به تراشه وجود دارد. ابزار اولیه‌ای که Libby توسعه داده هشدار می‌دهد که استفاده از آن می‌تواند باعث شود یک دستگاه پلی‌استیشن ۲ دیگر نتواند به‌طور عادی کار کند یا حتی به تعمیر در سطح سخت‌افزار نیاز داشته باشد.

گامی فراتر از پروژه MechaPwn

استخراج firmware تراشه SPC۹۷۰ ادامه مسیری است که با مهندسی معکوس نسل دیگری از تراشه‌های MechaCon آغاز شد.

تصاویر firmware مربوط به Dragon MechaCon در سال ۲۰۲۱ منتشر شدند و تنها یک ماه بعد پروژه MechaPwn نیز عرضه شد. MechaPwn اکسپلویتی است که در مدل‌های جدیدتر پلی‌استیشن ۲ امکان حذف محدودیت منطقه‌ای و اجرای دیسک‌های پشتیبان را فراهم می‌کند.

در مستندات MechaPwn آمده است که کنسول‌های قدیمی‌تر از MechaCon مبتنی بر Dragon استفاده نمی‌کنند و به همین دلیل تحت پشتیبانی این ابزار قرار ندارند. بر اساس همان مستندات، برنامه‌ای برای اضافه کردن پشتیبانی از این مدل‌ها نیز وجود نداشت.

این محدودیت تقریبا۲۰ شماره مدل از پلی‌استیشن ۲ را که در فاصله سال‌های ۲۰۰۰ تا ۲۰۰۳ عرضه شدند تحت تاثیر قرار می‌داد.
البته این کنسول‌های قدیمی همچنان می‌توانستند از طریق اکسپلویت‌های مبتنی بر کارت حافظه و هارددیسک بازی‌های پشتیبان را اجرا کنند، اما امکان باز کردن قفل در سطح خود تراشه وجود نداشت، زیرا پژوهشگران به کد داخلی SPC۹۷۰ دسترسی نداشتند.

اکنون انتشار firmware این تراشه می‌تواند برای نخستین بار امکان جست‌وجوی آسیب‌پذیری‌های موجود در کد آن را فراهم کند.

امکان ساخت Modchip و شبیه‌سازی کامل‌تر پلی‌استیشن ۲

خود تصاویر firmware به‌تنهایی اطلاعات کافی برای ساخت یک Optical Drive Emulator یا شبیه‌ساز کامل درایو نوری ارائه نمی‌کنند. این داده‌ها می‌توانند در عوض برای توسعه یک Modchip مورد استفاده قرار گیرند، تراشه‌ای که جایگزین MechaCon شود و در عین حال DSP درایو نوری برای خواندن دیسک‌ها حفظ شود.

از سوی دیگر از آنجا که بازی‌های پلی‌استیشن ۲ رمزگذاری نشده بودند استخراج firmware به‌خودی‌خود قابلیت تازه‌ای برای اجرای بازی‌ها ایجاد نمی‌کند.

اهمیت اصلی این firmware در آن است که کد مربوط به سازوکار MagicGate سونی برای رمزگذاری کارت‌های حافظه و همچنین KELF executable‌ها را آشکار می‌کند. KELF‌ها فایل‌های اجرایی هستند که کنسول می‌تواند آنها را از روی دیسک یا کارت حافظه بوت کند.

به گفته یکی از مشارکت‌کنندگان پروژه با نام کاربری uyjulian این اطلاعات در نهایت می‌تواند به توسعه شبیه‌سازی سطح پایین و کامل سیستم پلی‌استیشن ۲ کمک کند.

چرا PCSX۲ هنوز کد MechaCon را اجرا نمی‌کند؟

شبیه‌ساز‌هایی مانند PCSX۲ در حال حاضر کد واقعی MechaCon را اجرا نمی‌کنند. در عوض PCSX۲ فرمان‌های MechaCon را با کد C++ بازپیاده‌سازی می‌کند و برای شبیه‌سازی داده‌های مربوط به این تراشه یک فایل NVRAM یک کیلوبایتی و یک شماره نسخه چهار بایتی را از روی دیسک می‌خواند.

DiscoStarslayer همچنین توسعه‌دهنده یک fork از PCSX۲ با نام Reliquary است که روی مسیر‌های احراز هویت‌شده پلی‌استیشن ۲ تمرکز دارد.

توسعه‌دهندگان این پروژه در مستندات آن تاکید کرده‌اند که داده‌های جایگزین تولیدشده توسط شبیه‌ساز نمی‌توانند جایگزین مقادیر واقعی سخت‌افزاری شوند، به‌ویژه در شرایطی که یک بررسی امنیتی هویت واقعی کنسول را بررسی می‌کند.

هدف بعدی پیدا کردن آسیب‌پذیری در SPC۹۷۰

اکنون مهم‌ترین هدف پژوهشگران بررسی firmware استخراج‌شده برای پیدا کردن آسیب‌پذیری‌ای است که بتواند راهی برای باز کردن قفل کنسول‌های اولیه پلی‌استیشن ۲ ایجاد کند.

در مورد Dragon MechaCon پژوهشگران پس از دسترسی به کد تراشه توانستند ضعف موجود در سازوکار به‌روزرسانی آن را پیدا کنند. این ضعف در نهایت به توسعه MechaPwn منجر شد.

به گفته uyjulian، یکی از اهداف پروژه فعلی توسعه روشی مشابه MechaPwn یا TonyHax برای کنسول‌های مجهز به SPC۹۷۰ است، با این حال انتظار نمی‌رود چنین ابزاری به‌سرعت آماده شود.

دلیل این تفاوت معماری دو تراشه است. پژوهشگران تنها حدود یک ماه پس از انتشار firmware Dragon توانستند آن را بررسی و MechaPwn را توسعه دهند، زیرا سونی این تراشه را به‌گونه‌ای طراحی کرده بود که امکان دریافت و اعمال patch را داشت، اما SPC۹۷۰ قابلیت به‌روزرسانی ندارد. کد این تراشه در سال ۲۰۰۰ داخل Mask ROM آن قرار گرفته و از آن زمان تاکنون تغییر نکرده است.

اگرچه اکنون پژوهشگران برای نخستین بار می‌توانند کد اصلی SPC۹۷۰ را مشاهده و بررسی کنند پیدا کردن یک آسیب‌پذیری قابل استفاده در آن احتمالا بسیار دشوارتر و زمان‌برتر از Dragon MechaCon خواهد بود.

انتهای پیام/

نظر شما
captcha
پیشنهاد سردبیر
پرونده ویژه