خانه » CVE-2025-39923

CVE-2025-39923

Dmaengine: Qcom: Bam_dma: Fix DT Error Handling For Num-Channels/Ees

توسط Vulnerbyte Alerts
294 بازدید
هشدار سایبری CVE-2025-39923

چکیده

آسیب‌پذیری در کرنل لینوکس مربوط به درایور  Dmaengineدر ماژول Qcom: Bam_dma است. این ضعف به دلیل مدیریت نادرست خطا در هنگام خواندن مقادیر num-channels و num-ees از درخت دستگاه (Device Tree) رخ می دهد. در صورت عدم تنظیمات صحیح مانند clock یا num-channels در DT، درایور بدون بررسی مناسب به اجرای فرآیند ادامه می‌دهد و تلاش می‌کند مقادیر را از ریجسترها  بخواند؛ عملکردی که می‌تواند منجر به کرش دستگاه در مراحل اولیه بوت (boot crash) شود.

توضیحات

آسیب‌پذیری CVE-2025-39923 در درایور dmaengine: qcom: bam_dma (درایور DMA مبتنی بر BAM ، ماژولی برای مدیریت انتقال داده در تراشه های SoC شرکت Qualcomm) کرنل لینوکس، ناشی از مدیریت  نادرست خطاهای درخت دستگاه (Device Tree, DT) است.

زمانی که در درخت دستگاه ویژگی clock (منبع زمان‌بندی) مشخص نشده باشد، هیچ راهی برای اطمینان از فعال بودن BAM (Bus Access Manager) وجود ندارد. این وضعیت معمولاً در نمونه‌هایی از BAM رخ می‌دهد که به‌صورت کنترل از راه دور یا با منبع تغذیه خارجی کار می‌کنند. در چنین شرایطی، درایور باید مقدار num-channels را از درخت دستگاه بخواند تا اطلاعات لازم برای تکمیل فرآیند شناسایی سخت‌افزار(probe)  را به‌دست آورد.

اما در حال حاضر، درخت‌های دستگاهی که فاقد مقادیر clock و num-channels هستند، همچنان فرآیند شناسایی سخت‌افزار را ادامه می‌دهند، زیرا در بخش مدیریت خطا، دستور بازگشت وجود ندارد. در نتیجه، درایور تلاش می‌کند تعداد کانال‌ها را مستقیماً از ریجسترها بخواند. رویکردی ناسازگار و ناامن که برای عملکرد صحیح وابسته به فریم ور بوت و زمان‌بندی تصادفی است. عدم مدیریت خطای مناسب در این بخش، در چندین SoC کوالکام  مورد استفاده قرار گرفته و در برخی شرایط موجب کرش در مراحل اولیه بوت شده است. برای جلوگیری از این کرش ها، درایور باید در صورت عدم وجود هر یک از ویژگی‌های ضروری در درخت دستگاه، فوراً با خطا از فرآیند probe خارج شود؛ البته این عملکرد ممکن است باعث از کار افتادن برخی درخت های دستگاه ناقص در نسخه های upstream (به‌ویژه نمونه‌های مرتبط با موتور رمزنگاری) شود اما از منظر پایداری و امنیت، راهکار ایمن تری است.

در بخش بهره‌برداری، مهاجم با دسترسی پایین و بدون تعامل کاربر می‌تواند با تعریف یک درخت دستگاه مخرب (برای مثال حذف مقادیر num-channels در فایل DT یا زمان بوت فریم ور)، فرآیند شناسایی سخت‌افزار درایور را مختل کرده و باعث کرش دستگاه در مراحل اولیه بوت شود. هرچند بهره‌برداری از این ضعف به شرایط زمان‌بندی بوت وابسته است و به‌سادگی قابل خودکارسازی نیست، اما در پلتفرم‌هایی مانند Qualcomm Snapdragon گزارش‌هایی وجود دارد که در صورت دستکاری فایل DTB (Device Tree Blob) ممکن است سیستم در مرحله اولیه فایل‌سیستم RAM (initramfs) دچار کرش شود. پیامدهای اصلی این آسیب‌پذیری شامل تأثیر بالا بر محرمانگی با احتمال افشای اطلاعات سیستم، یکپارچگی با امکان تغییر یا از بین رفتن داده‌های سخت‌افزاری و دردسترس‌پذیری با ایجاد کرش کامل بوت یا اختلال در کانال‌های DMA است. این آسیب پذیری در نسخه های جدیدکرنل لینوکس به طور کامل پچ شده است.

CVSS

Score Severity Version Vector String
7.0 HIGH 3.1 CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

لیست محصولات آسیب پذیر

Versions Product
affected at 4.17 Linux
affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 2e257a6125c63350f00dc42b9674f20fd3cf4a9f

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 1d98ba204d8a6db0d986c7f1aefaa0dcd1c007a2

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 6ac1599d0e78036d9d08efc2f58c2d91f0a3ee4c

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 555bd16351a35c79efb029a196975a5a27f7fbc4

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before ebf6c7c908e5999531c3517289598f187776124f

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 1fc14731f0be4885e60702b9596d14d9a79cf053

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 0ff9df758af7022d749718fb6b8385cc5693acf3

affected from 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 before 5068b5254812433e841a40886e695633148d362d

affected at cecf8a69042b3a54cb843223756c10ee8a8665e3

affected at 909474cd384cb206f33461fbd18089cf170533f8

affected at 5e0986f7caf17d7b1acd2092975360bf8e88a57d

Linux

لیست محصولات بروز شده

Versions Product
unaffected from 0 before 4.17

unaffected from 5.4.300 through 5.4.*

unaffected from 5.10.245 through 5.10.*

unaffected from 5.15.194 through 5.15.*

unaffected from 6.1.153 through 6.1.*

unaffected from 6.6.107 through 6.6.*

unaffected from 6.12.48 through 6.12.*

unaffected from 6.16.8 through 6.16.*

unaffected from 6.17

Linux

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که  Linux kernel را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
80,200 site:.ir “Linux kernel” Linux kernel

نتیجه گیری

این آسیب‌پذیری با شدت بالا یکی از ضعف‌های عمیق سطح کرنل است که به دلیل مدیریت نادرست خطاها در مرحله شناسایی سخت‌افزار (probe) در درایور BAM_DMA رخ می‌دهد. این نوع آسیب‌پذیری‌ها ممکن است به ظاهر محدود به تنظیمات درخت دستگاه (Device Tree) باشند، اما در عمل می‌توانند باعث کرش کامل سیستم در مراحل ابتدایی بوت و از دسترس خارج شدن کامل سرویس‌های سخت‌افزاری شوند. با توجه به انتشار پچ‌های رسمی، اجرای اقدامات زیر برای جلوگیری از بهره‌برداری و افزایش امنیت ضروری است:

  • به‌روزرسانی کرنل لینوکس: سیستم را به جدیدترین نسخه‌ی کرنل به‌روزرسانی کنید تا منطق مدیریت خطای DT اصلاح شود.
  • بازبینی Device Tree (DTB): پیکربندی‌های درخت دستگاه را بررسی کنید تا مقادیر حیاتی مانند clock و num-channels به‌درستی تعریف شده باشند. از استفاده از DTBهای قدیمی یا ویرایش‌شده‌ی دستی خودداری کنید.
  • تست ایمن بوت (Safe Boot Test): پس از هر تغییر در DT یا فریم‌ور بوت، فرآیند بوت را در محیط آزمایشی بررسی کنید تا از پایداری و صحت شناسایی درایورها اطمینان حاصل شود.
  • مانیتورینگ خطاهای Probe در لاگ: فایل‌های لاگ سیستم (مانند dmesg) را برای شناسایی خطاهای مربوط به bam_dma یا پیام‌های probe ناموفق بررسی و مستندسازی کنید.
  • محدودسازی دسترسی به DTB: تنها حساب‌های سیستمی مجاز باید به فایل‌های Device Tree Blob (DTB) و مسیرهای بوت دسترسی نوشتن داشته باشند تا از تغییرات مخرب جلوگیری شود.
  • بازبینی فرآیند پشتیبان گیری و بازیابی: فرآیند های پشتیبان‌گیری و بازیابی (Backup & Recovery) را بررسی و مستندسازی کنید تا در صورت بروز کرش بوت، امکان بازیابی سریع سیستم وجود داشته باشد.

به مدیران سیستم و توسعه‌دهندگان فریم ور توصیه می شود پچ ها را اعمال کرده و پیکربندی‌های DT را به‌صورت ایمن بازبینی کنند تا از پایداری سیستم در سطح بوت اطمینان حاصل گردد.

امکان استفاده در تاکتیک های Mitre Attack

Initial Access (TA0001)
در سناریوی این آسیب‌پذیری، بردار اولیه دسترسی محلی است: مهاجم با سطح دسترسی کم مثلاً توانایی آپلود/تغییر یک Device Tree Blob یا کنترل فرایند بوت از طریق فریم‌ور می‌تواند ورودی DT را طوری تغییر دهد که درایور bam_dma  در مرحله probe به وضعیت نامعلومی برسد و ادامه‌ی پروشسه‌ی شناسایی سخت‌افزار را با فرضیات نادرست دنبال کند؛ این مسیر، یک مسیر سوءاستفاده‌ی محلی مبتنی بر پیکربندی configuration-based local access  است و نیازمند دسترسی نوشتنی به فایل DTB یا کنترل بر فرایند بوت است

Impact (TA0040)
پیامد اصلی این ضعف روی Availability است: به‌واسطه‌ی ادامه‌ی نادرستِ پروسه‌ی probe و خواندن مقادیر نامعتبر از رجیسترها، ممکن است دستگاه در مراحل اولیه بوت کرش کند یا کانال‌های DMA به‌درستی راه‌اندازی نشوند. علاوه بر در دسترس‌پذیری، در سناریوهای خاص احتمال تأثیر بر Confidentiality/Integrity هم ذکر شده، اما بار تأیید برای افشای اطلاعات یا تصاحب داده وابسته به شرایط سیستمی و ریسک‌های جانبی است.

 

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-39923
  2. https://www.cvedetails.com/cve/CVE-2025-39923/
  3. https://app.opencve.io/cve/CVE-2025-39923
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-39923
  5. https://vuldb.com/?id.326497
  6. https://git.kernel.org/stable/c/2e257a6125c63350f00dc42b9674f20fd3cf4a9f
  7. https://git.kernel.org/stable/c/1d98ba204d8a6db0d986c7f1aefaa0dcd1c007a2
  8. https://git.kernel.org/stable/c/6ac1599d0e78036d9d08efc2f58c2d91f0a3ee4c
  9. https://git.kernel.org/stable/c/555bd16351a35c79efb029a196975a5a27f7fbc4
  10. https://git.kernel.org/stable/c/ebf6c7c908e5999531c3517289598f187776124f
  11. https://git.kernel.org/stable/c/1fc14731f0be4885e60702b9596d14d9a79cf053
  12. https://git.kernel.org/stable/c/0ff9df758af7022d749718fb6b8385cc5693acf3
  13. https://git.kernel.org/stable/c/5068b5254812433e841a40886e695633148d362d

همچنین ممکن است دوست داشته باشید

پیام بگذارید