پژوهشگران سیسکو تالس کشف کردهاند که یک آسیبپذیری استفاده پس از آزادسازی (use-after-free) در SQLite میتواند توسط یک مهاجم راه دور برای اجرای کد در یک دستگاه آسیبپذیر مورد بهرهبرداری قرار گیرد. این آسیبپذیری که با شناسهی CVE-2019-5018 ردیابی میشود و درنمرهدهی CVSS امتیاز ۸٫۱ را دارد، در عملکرد Windows Function مربوط به Sqlite3 3.26.0 و ۳٫۲۷٫۰ وجود دارد.برای استفاده از این آسیبپذیری مهاجم باید یک دستور SQL خاص را برای قربانی ارسال کند که امکان اجرای کد از راه دور را فراهم میکند.
کتابخانهی محبوب SQLite که یک سیستم مدیریت پایگاهدادهی سمت کلاینت است بهطور گسترده در دستگاههای موبایل، مرورگرها، دستگاههای سختافزاری و برنامههای کاربر استفاده میشود. SQLite ویژگی Windows Function مربوط به SQL را پیادهسازی میکند که امکان پروسوجو کردن در یک زیرمجموعه یا window را فراهم میکند و آسیبپذیری جدید در تابع window کشف شده است.
پژوهشگران امنیتی کشف کردند که پس از parse یک عبارت SELECT حاوی یک Windows Function در شرایط خاص، فهرست عبارتهای اجراشده توسط شیء SELECT بازنویسی میشود و شیء window اصلی در طول این فرآیند استفاده میشود.
هنگامی که یک تابع جمع پردازش میشود و پس از آنکه به فهرست عبارتها اضافه شد، عبارت حذف میشود. در حین حذف، درصورتیکه عبارت بهعنوان یک Window Function مشخص شود، شیء window مربوطه و پارتیشن مربوط به window نیز حذف میشود. پارتیشن حذفشده پس از بازنویسی فهرست عبارتها مجدداً استفاده میشود که منجر به ایجاد آسیبپذیری استفاده پس از آزادسازی و درنتیجه منع سرویس میشود. بااینحال، درصورتیکه مهاجم بتواند حافظه را پس از آزادسازی کنترل کند، میتواند دادهی بیشتری را تخریب و کد دلخواه را اجرا کند.
سیسکو تالس آزمایشهایی انجام داده و تأیید کرده است که نسخههای SQLite 3.26.0 و ۳٫۲۷٫۰ تحت تأثیر این آسیبپذیری قرار گرفته است. پژوهشگران امنیتی که کد اثبات مفهومی منتشر کردهاند، این آسیبپذیری را در اوایل فوریه به این شرکت گزارش دادند و چند هفته قبل از انتشار این مشاورهنامه، یک بهروزرسانی برای وصلهی این مسأله منتشر شد.