روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ تصور کنید با خودروی برقیِ کاملاً جدیدتان در بزرگراه در حال رانندگی هستید. ناگهان نمایشگر بزرگ چندرسانهای خودرو پر میشود از بازیDoom؛ همان شوتر سهبعدی مشهور. بازی بهطور کامل جای نقشهی مسیریابی یا منوی تنظیمات را میگیرد و متوجه میشوید که فردی در همین لحظه، از راه دور، در حال بازی کردن است. این یک رویا یا خیالپردازی اغراقآمیز نیست؛ ما نشان دادهایم که چنین سناریویی در دنیای امروز کاملاً واقعی و عملی است.
اینترنت اشیاء اکنون نقش مهمی در دنیای مدرن ایفا میکند. دیگر فقط گوشیهای هوشمند و لپتاپها به شبکه متصل نیستند؛ کارخانهها، خودروها، قطارها و حتی هواپیماها نیز به اینترنت متصل شدهاند. در اغلب موارد، این اتصال از طریق شبکههای دادهی موبایل نسل3، 4 و 5 و با استفاده از مودمهایی که در این وسایل نصب شدهاند برقرار میشود. این مودمها بهطور فزایندهای در قالب یک سیستم روی چیپ یا SoC یکپارچه میشوند. چنین تراشهای معمولاً شامل یک پردازندهی ارتباطی (CP) و یک پردازندهی کاربردی (AP) است که بهصورت همزمان وظایف مختلفی را انجام میدهند. روی AP معمولاً یک سیستمعامل عمومی مانند اندروید اجرا میشود، در حالی که CP که مسئول ارتباط با شبکهی موبایل است، اغلب یک سیستمعامل اختصاصی دارد. تعامل میان AP، CP و حافظهی RAM در سطح ریزمعماری، یک «جعبهی سیاه» است که جز برای سازندهی تراشه شناختهشده نیست؛ این درحالیست که امنیت کل SoC به همین تعامل وابسته است.
دور زدن سازوکارهای امنیتی 3G یا LTE معمولاً یک چالش صرفاً دانشگاهی تلقی میشود، زیرا هنگام اتصال دستگاه کاربربه یک ایستگاه پایهی سلولی یک کانال ارتباطی امن برقرار میشود. حتی اگر فردی بتواند این سازوکارها را دور بزند، آسیبپذیری در مودم پیدا و کد دلخواه خود را روی آن اجرا کند، معمولاً انتظار نمیرود که این موضوع به منطق اصلی دستگاه آسیب بزند. این منطق، مانند برنامههای کاربر، تاریخچهی مرورگر، تماسها و پیامکها در یک گوشی هوشمند، روی AP قرار دارد و فرض بر این است که از سمت مودم قابل دسترسی نیست.
برای بررسی صحت این فرض، ما یک ارزیابی امنیتی روی یک SoC مدرن به نام Unisoc UIS7862A انجام دادیم که دارای مودم یکپارچهی نسل 2، 3 و 4 است. این تراشه در دستگاههای موبایل مختلف از تولیدکنندگان گوناگون و مهمتر از آن، در واحدهای هد خودروهای مدرن چینی استفاده میشود؛ خودروهایی که حضورشان در جادهها روزبهروز بیشتر میشود. واحد هد یکی از اجزای کلیدی خودرو است و نقض امنیت اطلاعات آن میتواند هم ایمنی جادهای و هم محرمانگی دادههای کاربران را به خطر بیندازد. در جریان این پژوهش، چندین آسیبپذیری بحرانی در سطوح مختلف پشتهی پروتکل سلولی مودم Unisoc UIS7862A شناسایی کردیم. این مقاله بهطور خاص به یک آسیبپذیری سرریز بافر مبتنی بر پشته در پیادهسازی پروتکل 3G RLC میپردازد که با شناسهی CVE-2024-39432 ثبت شده است. این آسیبپذیری را میتوان در مراحل ابتدایی اتصال، پیش از فعال شدن هرگونه سازوکار حفاظتی، برای اجرای کد از راه دور مورد سوءاستفاده قرار داد.
نکتهی مهم این است که توانایی اجرای کد روی مودم، تنها نقطهی شروع برای در اختیار گرفتن کامل کل SoC از راه دور است. تمرکز مراحل بعدی ما بر دستیابی به AP بود. در این مسیر، چندین روش کشف کردیم؛ از جمله سوءاستفاده از یک آسیبپذیری سختافزاری به شکل یک دستگاه DMA مخفی درون تراشه که امکان حرکت جانبی در داخل SoC را فراهم میکرد. این کار به ما اجازه داد پچ دلخواه را در کرنل اندرویدِ در حال اجرا نصب و کد دلخواه خود را با بالاترین سطح دسترسی روی AP اجرا کنیم. جزئیات این مراحل در بخشهای مربوطه توضیح داده شده است.
دریافت سفتافزار مودم
مودمی که محور اصلی پژوهش ما بود، روی برد الکترونیکی واحد هد یک خودروی چینی قرار داشت. با استفاده از اطلاعات سختافزاری مودم، حافظهی eMMC آن را از برد جدا کردیم و محتوای آن را خواندیم. این حافظه شامل یک تصویر کامل از سیستمعامل مودم میشد که سپس مورد تحلیل قرار گرفت.
دسترسی از راه دور به مودم(CVE-2024-39431)
مودمِ مورد بررسی، مانند هر مودم مدرن دیگری، چندین پشته پروتکل ارتباطی را پیادهسازی میکند: نسل دوم، نسل سوم و ارتباطات بلندمدت تکاملی. بدیهی است هرچه یک دستگاه از پروتکلهای بیشتری پشتیبانی کند، نقاط ورود بالقوه بیشتری برای حمله در اختیار مهاجمان قرار میدهد. علاوه بر این، هرچه یک آسیبپذیری در لایههای پایینتر مدل مرجع ارتباطات قرار داشته باشد، پیامدهای سوءاستفاده از آن نیز شدیدتر خواهد بود. به همین دلیل، تصمیم گرفتیم سازوکارهای قطعهبندی داده در لایه پیوند داده -یعنی پروتکل کنترل پیوند رادیویی- را بررسی کنیم.
تمرکز ما بر این پروتکل از آنجا ناشی میشد که کنترل پیوند رادیویی برای ایجاد یک کانال انتقال داده امن و رمزنگاریشده میان ایستگاه پایه و مودم به کار میرود و بهطور خاص، دادههای لایه بالاترِ دسترسی غیرمستقیم شبکه را منتقل میکند. لایه دسترسی غیرمستقیم شبکه بخشی از پشته پروتکل نسل سوم است که بین تجهیزات کاربر و شبکه هسته قرار دارد و مسئول پیامرسانی سیگنالینگ[1] بین آنهاست. در نتیجه، وجود یک آسیبپذیری اجرای کد از راه دور در پروتکل کنترل پیوند رادیویی میتواند به مهاجم اجازه دهد تمام سازوکارهای حفاظتی ارتباطات نسل سوم را دور بزند و کد دلخواه خود را روی مودم اجرا کند.
پروتکل کنترل پیوند رادیویی سه حالت انتقال دارد: حالت شفاف، حالت بدون تأیید و حالت با تأیید. تمرکز ما بر حالت بدون تأیید بود، زیرا استاندارد نسل سوم در این حالت اجازه میدهد دادهها قطعهقطعه شوند یا چند قطعهکوچک از لایه بالاتر در یک فریم واحد تجمیع شوند تا بهرهوری کانال افزایش پیدا کند. در سطح کنترل پیوند رادیویی، بستهها با عنوان «واحد داده سرویس» شناخته میشوند. از میان حدود هفتاد و پنج هزار تابع مختلف موجود در میانافزار مودم، تابعی را پیدا کردیم که مسئول پردازش یک واحد داده سرویس ورودی است. موقع پردازش، فیلدهای سرآیند بسته تجزیه میشوند. خود بسته شامل یک سرآیند اجباری، سرآیندهای اختیاری و داده میشود. تعداد سرآیندهای اختیاری محدودیتی ندارد و پایان آنها با صفر شدن کمارزشترین بیت، که بیت ادامه نام دارد، مشخص میشود. الگوریتم تا زمانی که این بیت برابر یک باشد، هر سرآیند را بهصورت متوالی پردازش میکند. در این فرایند، دادهها در متغیری روی پشته فراخوانی تابع ذخیره میشوند. عمق پشته برابر با صد و هشتاد بایت است، در حالی که اندازه واحد داده سرویس میتواند به بیش از هزار و پانصد بایت برسد.
در نتیجه، تنها با ارسال یک بسته میتوان از این آسیبپذیری سوءاستفاده کرد؛ کافی است تعداد سرآیندها از ظرفیت پشته فراتر رود، یعنی بیش از نود سرآیند. این تابع فاقد سازوکار محافظ پشته است و در صورت سرریز پشته، میتوان آدرس بازگشت و برخی ثباتهای غیرفرار را بازنویسی کرد. البته بازنویسی فقط با مقادیری ممکن است که کمارزشترین بیت آنها برابر یک باشد. از آنجا که اجرای کد روی معماری پردازنده آرم در حالت تامب انجام میشود و آدرسهای بازگشت باید این ویژگی را داشته باشند، این محدودیت عملاً قابل دور زدن است. ارسال اولین بسته آزمایشی واحد داده سرویس با تعداد مناسب سرآیندها باعث راهاندازی مجدد دستگاه شد. در آن زمان امکان مشاهده دقیق محل و علت فروپاشی برنامه وجود نداشت، اما بهاحتمال زیاد، جریان اجرای برنامه به آدرسی منتقل شده بود که از دادههای ارسالی ما استخراج شده بود.
ایجاد ماندگاری در سیستم
نکته مهم اول این بود که میدانستیم اشارهگر بسته دریافتی در یکی از ثباتهای پردازنده قرار دارد. این موضوع امکان استفاده از تکنیک زنجیرهسازی بازگشت را فراهم میکرد، اما پیش از هر چیز باید اطمینان حاصل میکردیم که چنین کاری عملی است. سپس با استفاده از قطعات کد موجود برای زنجیرهسازی بازگشت، توانستیم یک آدرس مشخص را بدون ایجاد اختلال در ادامه پردازش بسته بازنویسی کنیم. از آنجا که تابع پردازش واحد داده سرویس بهصورت بازخوانی معکوس فراخوانی میشد، بازگشت به تابع قبلی کافی بود و تنها لازم بود در محدوده کوچکی از پشته باقی بمانیم. پس از یافتن زنجیره مناسب، یک بسته واحد داده سرویس حاوی این زنجیره ارسال کردیم. در نتیجه، مقدار مورد انتظار در کنسول دستورات مودم نمایش شد و مشخص شد که کد ما اجرا شده است. در مرحله بعد تلاش کردیم کد را مستقیماً از پشته اجرا کنیم، اما پشته قابلیت اجرا نداشت. بنابراین ناچار شدیم تنظیمات واحد حفاظت حافظه مودم را بررسی کنیم. با استفاده از زنجیرههای بازگشت، جدول این واحد را بهصورت تدریجی خواندیم. این جدول نشان میداد که بخش کد تنها برای اجرا نگاشت شده است.
با اعمال یک زنجیره بازگشت دیگر، همان بخش کد را در یک ورودی بلااستفاده جدول، با مجوز نوشتن نگارش کردیم. به دلیل ویژگیهای واحد حفاظت حافظه و اولویتبندی نواحی، توانستیم این بخش را ویرایش کنیم. سپس با استفاده از اشارهگر موجود، کد دلخواه خود را در این ناحیه وصله کردیم. سادهترین راه، افزودن کد به پردازشگر پروتکل دسترسی غیرمستقیم شبکه بود. برای این منظور از دستور اطلاعات مدیریت تحرک استفاده کردیم که امکان ارسال حجم زیادی از داده را فراهم میکند و با دریافت پاسخ وضعیت مدیریت تحرک، موفقیت عملیات تأیید میشود.
در نهایت، نهتنها موفق به اجرای کد دلخواه روی مودم شدیم، بلکه یک کانال ارتباطی دوطرفه کامل با مودم از طریق پروتکل دسترسی غیرمستقیم شبکه برقرار کردیم. در این حالت، پیام وضعیت مدیریت تحرک با مقدار مشخصی در فیلد علت دریافت شد. با این حال، پرسش اصلی همچنان باقی میماند: آیا اجرای کد روی مودم واقعاً به معنای دسترسی به دادههای کاربر نیست؟ نسخه کامل مقاله، شامل شرح دقیق توسعه یک اکسپلویت پیشرفته که در نهایت به اجرای بازی «Doom» روی واحد هد یک خودرو انجامید، در وبسایت مرکز هماهنگی پاسخگویی به رخدادهای امنیتی سامانههای صنعتی منتشر شده است.
جمعبندی و راهکار امنیتی
این پژوهش نشان میدهد که وجود آسیبپذیری در لایههای پایین پشته پروتکلهای مخابراتی، بهویژه در پروتکل کنترل پیوند رادیویی، میتواند به اجرای کد دلخواه روی مودم و دور زدن کامل سازوکارهای حفاظتی شبکه منجر شود. از آنجا که این لایهها پیش از رمزگشایی دادههای کاربر پردازش میشوند، هر نقص امنیتی در آنها پیامدهای گسترده و پرخطری خواهد داشت. برای کاهش چنین مخاطراتی، لازم است پیادهسازی پروتکلهای لایه پیوند داده با سختگیری بیشتری بازبینی شود و بررسی دقیق محدودیتهای حافظه، بهویژه در پردازش سرآیندها، انجام گیرد. استفاده از سازوکارهای محافظت از پشته، اعمال بررسیهای سختگیرانه روی طول و تعداد سرآیندها، فعالسازی حفاظتهای سختافزاری حافظه، و انجام آزمونهای فازی گسترده روی میانافزار مودم از جمله راهکارهای ضروری برای پیشگیری از بروز چنین آسیبپذیریهایی هستند. همچنین، بهروزرسانی منظم و انجام ممیزیهای امنیتی مستقل میتواند نقش مهمی در افزایش امنیت سامانههای مخابراتی ایفا کند.
[1] ردوبدل کردن پیامهای کنترلی برای برقراری، مدیریت و پایان دادن به ارتباط نه انتقال خودِ داده کاربر (مثل صدا، پیام یا اینترنت).
.
کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.