پیامدهای آسیب‌پذیریِ چندساله‌ در SQLite

15 آبان 1401 پیامدهای آسیب‌پذیریِ چندساله‌ در SQLite

روابط عمومی شرکت ایدکو (توزیع‌کننده‌ی محصولات کسپرسکی در ایران)؛ اکتبر 2022، محققین Trail of Bits در مقاله‌ای با جزئیات به آسیب‌پذیریِ SQLite DBMS پرداختند. این مقاله به حملات احتمالی که می‌توانند از طریق CVE-2022-35737 انجام پذیرند می‌پردازد؛ همینطور عواقبی که دامنه‌اش از یک خرابی ساده اپ است تا اجرای کد دلخواه. با ما همراه بمانید.

این باگ جزئی در کد  SQLite به دو دلیل مورد علاقه مهاجمین است و بالقوه می‌تواند خطرناک باشد: ابتدا اینکه از اکتبر 2000 در SQLite بوده – تقریباً از شروع توسعه این نرم‌افزار منبع باز. دوم اینکه قابلیت‌های SQLite به لحاظ تئوریک، حمله به دامنه وسیعی از برنامه‌ها را که در خود  SQLite دارند ممکن می‌سازد.

قابلیت‌های SQLite

SQLite یک DBMS فشرده، منبع‌باز و جاسازی‌شده است که اولین بار 22 سال پیش عرضه شد (آگست 2000). منظورمان از «جاسازی‌شده» تعریفی کلیدی است: SQLite به عنوان نرم‌افزاری جداگانه نصب نمی‌شود. در عوض از آن بعنوان آرشیوی برای توسعه‌دهندگان نرم‌افزاری که نیاز دارند با پایگاه‌های اطلاعاتی کار کنند استفاده می‌شود. SQLite پیش‌فرض در جاهایی مثل گوگل کروم، فایرفاکس یا سافاری، اندروید، اپ‌های شبکه‌ای و غیره درون‌سازی می‌شود و بسیاری حتی پک‌های سیستم‌عامل را بر اساس کرنل لینوکس عرضه می‌کنند. SQLite برای لایسنس بازش به محبوبیت رسید؛ همینطور بخاطر قابل‌اطمینان بودنش و امنیتی که ارائه می‌داد: تاکنون تنها کمی نقص در کد DBM پیدا شده است.

جزئیات CVE-2022-35737

متخصصین باگی را در کد تابع sqlite3_snprintf شناسایی کردند که برای تعامل با پایگاه داده در برنامه‌هایی که به زبان C/C++ نوشته می‌شدند استفاده می‌شد. اگر یک رشته ورودی بسیار بزرگ (بیش از 2 گیگابایت) را به آن تابع ارسال کنید، باعث از کار افتادن برنامه می‌شود؛ بدین‌ترتیب راه برای حمله DoS باز می‌شود. در کد sqlite3_snprintf برای محاسبه‌ی سایز رشته ارسال‌شده از متغیر عدد صحیح استفاده می‌شد. اگر رشته ارسالی خیلی بزرگ باشد متغیر می‌تواند ارزش منفی بگیرد. این سپس باعث می‌شود بافر مموری تخصیص داده شود که برای نوشتن رشته دریافتی خیلی کوچک است.

اینجاست که خطای رایج سرریز بافر رخ می‌دهد. این خطا به احتمال زیاد همان 22 سال پیش وارد کد شده؛ زیرا ارسال گیگابایت‌ها پارامتر تابع به دلیل محدودیت‌های منبع آن زمان امکان نداشته است. اما دیگر چنین نیست: چیزی که مشخصاً در این تحقیق بدان پرداخته شده است فرض این است که چرا چنین خطایی در طول تست کد استاندارد از قلم افتاده است. روند تست در درجه اول هدفش بررسی کد تازه اضافه‌شده یا تازه اصلاح‌شده است و این درحالیست که کد بیش از دو دهه است که تغییر نکرده. سخت می‌شود چنین آسیب‌پذیری‌هایی را با فازینگ[1] -که از پارامترهای تصادفی بعنوان ورودی‌های تابع تغذیه می‌کند- شناسایی کرد. متودهای رایج فازینگ شامل تولید رشته‌هایی با چنین سایزهایی نمی‌شوند. نویسندگان این پژوهش چنین نتیجه‌گیری کردند که فازینگ نمی‌توانند تماماً جای تحلیل کد ایستا را که شامل اجرای دستی آن نیز می‌شود بگیرد.

پیامدهای ضمنی

Trail of Bits توانست حمله DoS اصلی را مدرنیزه کند تا بتواند با دستکاری کردنِ با دقت محتوا و سایز پارامتر ارسالی، کد دلخواه را اجرا کند. گرچه نویسندگان این مقاله اثبات مفهومی را نشان دادند که خود گویای نمونه‌های حمله بود اما اینها تمرینی هستند تماماً فرضی برای حمله به خود  SQLite. با این همه –همانطور که بالاتر گفتیم- SQLite یک  DBMS جاسازی‌شده است؛ پس اگر فردی بخواهد ضرر حسابی بزند باید به اپی حمله کند که در آن کد SQLite جاساز شده است. اینطور به نظر می‌رسد که در پژوهش مورد بحث، فرضیات زیادی وجود دارد و شاید هرگز اجرایی شدن آن‌ها اثبات نشود. محدودیت‌های دیگری نیز وجود دارد.

بر اساس داده‌های توسعه‌دهندگان SQLite، این باگ فقط به رابط برنامه‌های C مربوط می‌شود و کد فقط باید با پارامترهای خاصی کامپایل شده باشد. خود محققان Trail of Bits به عدم امکان حمله در صورتی که SQLite با استفاده از قناری‌های پشته کامپایل شده باشد اشاره می‌کنند. این اساساً یک روش اضافی برای محافظت از حمله سرریز بافر است - جلوگیری از اجرای کد دلخواه حتی زمانی که سرریز خود امکان پذیر باشد. آسیب‌پذیری در SQLite 3.39.2 بسته شد که در جولای 2022 منتشر شد. با این حال، این پچ تأثیر کمی داشته است.

توسعه دهندگان نرم افزار که از SQLite به عنوان بخشی از کد خود استفاده می‌کنند، به احتمال زیاد باید توسعه‌های خود را به روز کنند و نسخه نرم افزار جدیدی را توزیع نمایند. تا آن زمان، آسیب‌پذیری در آنجا باقی خواهد ماند. و فراموش نکنید که بسیاری از برنامه‌های دارای SQLite دیگر پشتیبانی نمی‌شوند. هنوز مشخص نیست که این آسیب‌پذیری چقدر خطرناک است یا اینکه آیا می‌توان از آن در عمل بهره‌برداری کرد یا نه. با قضاوت بر اساس تعریف توسعه دهندگان SQLite، احتمال یک حمله واقعی کم است – اما صفر نیست. در این میان، باگ مربوطه به مجموعه باگ‌های قدمت بالا اضافه شده است که به طور بالقوه می‌تواند برای توسعه‌دهندگان نرم افزار دردسر ایجاد کند.

[1]یا آزمون فاز یک فرایند آزمون نرم‌افزار است که شامل فراهم کردن داده‌های ناصحیح، غیرمنتظره، اعداد تصادفی به‌عنوان ورودی به یک نرم‌افزار رایانه‌ای است. 

 

منبع: کسپرسکی آنلاین (ایدکو)

کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز می‌شناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.

محصولات مرتبط

  • Kaspersky Internet Security for Android

    امنیت پیشرفته‌ای که همیشه همراه شماست بخش مهمی از زندگی اکثر ما اکنون روی گوشی‌ها و تبلت‌هاست- پس به امنیت موبایلی نیاز دارید که شما را همیشه امن نگه ...

    7,080,750 ریال
    خرید
  • Kaspersky Cloud Password Manager

    Kaspersky Cloud Password Manager ابزار مدیریت کلمه عبور ابری کسپرسکی (KCPM) ضمن ذخیره ایمن تمامی کلمات عبور مورد استفاده شما برای وبسایت‌ها، اپلیکیشن‌ها، و شبکه‌های اجتماعی آنها را در تمامی ...

    10,624,500 ریال
    خرید
  • Kaspersky Safe Kids

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

    10,624,500 ریال
    خرید
  • Kaspersky Small Office Security

    محافظت در حین کار Kaspersky Small Office Security به طور خاص برای سازمان‌هایی طراحی شده است که 5 تا 50 دستگاه کامپیوتر در خود جای داده‌اند. نصب آن بسیار آسان است؛ مدیریت آن ...

    25,515,000 ریال
    خرید
  • Kaspersky Security Cloud Personal

    تمام اپ‌های امنیتیِ ما در دستانتان. به کل خانواده‌ی اپ‌های ما برای دسکتاپ و موبایل دسترسی پیدا کنید. از آنتی‌ویروس گرفته تا ابزارهای حریم خصوصی و اجرایی، هر کدام را به میل ...

    70,868,250 ریال
    خرید
  • Kaspersky Standard

    سیستم امنیتی بهبودیافته به همراه تقویت‌کننده عمکرد دستگاه طرح امنیتی استاندارد ما، نه تنها سیستم امنیتی قدرتمندی را برای انواع ویروس‌ها، بدفزارها و باج‌افزارها ارائه می‌دهد ...

    20,047,500 ریال
    خرید
  • Kaspersky Plus

    امنیت. کارایی. حریم خصوصی. همه در یک برنامه با کاربری آسان کسپرسکی پلاس با ارائه امنیت سایبری نسل بعد، شما در برابر ویروس‌ها، باج‌افزارها و بدافزارهای جدید محافظت کند - بدون ...

    28,748,250 ریال
    خرید
  • Kaspersky Premium

    حفاظت کامل از دستگاه ها، حریم خصوصی و هویت شما با محصول Kaspersky Premium تمام نیازهای امنیتی خود و خانواده‌تان را پوشش دهید. حفاظت پیشرفته ...

    30,753,000 ریال
    خرید

نظر خودتان را ارسال کنید


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