- شناسه CVE-2025-29088 :CVE
- CWE-190 :CWE
- yes :Advisory
- منتشر شده: آوریل 10, 2025
- به روز شده: آوریل 14, 2025
- امتیاز: 5.6
- نوع حمله: Integer Overflow
- اثر گذاری: Denial of Service (Dos)
- حوزه: پایگاههای داده
- برند: SQLite
- محصول: SQLite
- وضعیتPublished :CVE
- No :POC
- وضعیت آسیب پذیری: patch شده
چکیده
آسیبپذیری سرریز عدد صحیح (Integer Overflow)در SQLite نسخه 3.49.0 تا پیش از 3.49.1 شناسایی شده است. این ضعف در API زبان C و هنگام فراخوانی sqlite3_db_config با پارامترهای خاص رخ میدهد؛ حاصلضرب برخی پارامترها بدون تبدیل مناسب محاسبه میشود و سبب تخصیص نادرست حافظه، کرَش برنامه و در نتیجه انکار سرویس (DoS) میگردد.
توضیحات
آسیبپذیری CVE-2025-29088 ناشی از سرریز یا چرخش عدد صحیح مطابق با CWE-190، در تابع setupLookaside از API زبان C در SQLite نسخه 3.49.0 تا پیش از 3.49.1 شناسایی شده است. این ضعف هنگام فراخوانی sqlite3_db_config با پارامترهایی خارج از محدوده (out-of-bounds) فعال میشود، جایی که پارامترهای sz (اندازه بلوک lookaside) و cnt (تعداد بلوکها) برای محاسبه szAlloc = sz*(sqlite3_int64)cnt استفاده میشوند، اما در گام بعدی، حاصل ضرب sznBig بدون تبدیل به نوع 64بیتی (sqlite3_int64) انجام میگیرد و باعث تخصیص نادرست حافظه و در نتیجه کرش اپلیکیشن میگردد.
بهطور مشخص، در حوالی خط 182342 فایل sqlite3.c عبارت nSm = (szAlloc – sz nBig) / LOOKASIDE_SMALL وجود دارد که LOOKASIDE_SMALL یک ثابت عددی (numeric constant) با مقدار 128 است. زمانی که sz و cnt مقادیر بسیار بزرگ بگیرند (مثلاً sz = 1200 و cnt = 2,500,000) ممکن است حاصلضرب sz nBig دچار سرریز شود؛ نتیجه این سرریز مقدار نادرستی برای nSm و نهایتاً تخصیص بیش از حد یا نامناسب حافظه،کرَش برنامه و انکار سرویس (DoS) خواهد بود.
بهرهبرداری از این آسیبپذیری معمولاً مستلزم دسترسی لوکال است، یا اینکه برنامه میزبان پارامترهای پیکربندی را از منابع یا ورودیهای غیرقابلاعتماد دریافت کند. به عبارت دیگر، اگر برنامه میزبان پارامترهای پیکربندی را مستقیم از منابع راهدور یا ورودیهای غیرقابلاعتماد بپذیرد (مثلاً اجرای SQL ناشناس در مرورگرها یا در محیطهای سندباکس)، احتمال بهرهبرداری از راهدور وجود دارد. در غیر این صورت، معمولاً برای سوءاستفاده نیاز به دسترسی لوکال است. پیامد اصلی آسیب پذیری، کرش برنامه و انکار سرویس است؛ با این حال در شرایط خاص ممکن است فرصتهایی برای نوشتن حافظه دلخواه و آسیبهای جدیتر ایجاد شود.
این آسیبپذیری در نسخه 3.49.1 با ایمنسازی (hardening) رابط SQLITE_DBCONFIG_LOOKASIDE و اعمال تبدیل نوع مناسب (cast) برای جلوگیری از سرریز هنگام ضرب، پَچ شده است.
CVSS
| Score | Severity | Version | Vector String |
| 5.6 | MEDIUM | 3.1 | CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L |
لیست محصولات آسیب پذیر
| Versions | Product |
| affected from 3.49.0 before 3.49.1 | SQLite |
لیست محصولات بروز شده
| Versions | Product |
| 3.49.1 | SQLite |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که SQLite را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google
(Total Pages) |
Search Query (Dork) | Product |
| 151,000 | site:.ir “SQLite” | SQLite |
نتیجه گیری
این آسیبپذیری با شدت متوسط در SQLite از طریق سرریز عدد صحیح در فراخوانی sqlite3_db_config امکان انکار سرویس (DoS) را فراهم کرده و اپلیکیشنهای وابسته به این پایگاه داده را در معرض کرش و اختلال قرار میدهد. با توجه به انتشار پچ رسمی اجرای فوری اقدامات زیر ضروری است:
- به روزرسانی نرمافزار: فوراً SQLite را به نسخه 3.49.1 یا بالاتر به روزرسانی کنید.
- بررسی و اعتبارسنجی ورودیها: در کدهای استفادهکننده ازAPI sqlite3_db_config، پارامترهای sz و cnt را اعتبارسنجی کنید تا مقادیر خارج از محدوده (مانند مقادیر بسیار بزرگ منجر به سرریز) شناسایی شوند؛ همچنین در محاسبات از تبدیل نوع مناسب (مانند sqlite3_int64) استفاده نمایید.
- محدودسازی دسترسی: دسترسی لوکال به APIهای حساس را با استفاده از لیست کنترل دسترسی (ACL) و اصل حداقل دسترسی (Least Privilege) محدود کنید؛ در اپلیکیشنهای وب مانند WebSQL در مرورگرها، سندباکس را تقویت نمایید.
- مانیتورینگ لاگ و هشداردهی: لاگهای مربوط به فراخوانیهای API و تخصیص حافظه را با سامانه مدیریت اطلاعات و رویدادهای امنیتی (SIEM) نظارت کرده و برای الگوهای مشکوک (مانند تلاش برای تخصیص حافظه بزرگ) قوانین هشداردهی تنظیم کنید.
- تست نفوذ: با استفاده از ابزارهای دیباگ مانند GDB برای بررسی سرریزها و ابزارهای تحلیل استاتیک (Static Analysis) مانند Clang Static Analyzer، آسیبپذیریهای احتمالی را شناسایی و رفع کنید.
- تنظیمات امنیتی و ایمن سازی (Hygiene & hardening): از کامپایلرهای با فلگهای امنیتی (مانند fstack-protector) استفاده کنید، ورودیهای کاربر را همیشه اعتبار سنجی نمایید و از راهنمایی های امنیتی SQLite مانند defense against dark arts پیروی کنید.
- آموزش: تیمهای توسعه را در مورد ریسکهای سرریز عدد صحیح آموزش دهید و سیاستهای به روزرسانی منظم را پیادهسازی کنید.
اجرای این اقدامات، ریسک ناشی از آسیبپذیری سرریز عددصحیح را به حداقل رسانده و از کرش و اختلال در عملیات پایگاه داده جلوگیری خواهد کرد.
امکان استفاده در تاکتیک های Mitre Attack
Initial Access (TA0001)
این آسیبپذیری معمولاً از مسیر ورودیهای پیکربندی محلی یا پارامترهای دریافتی از منابع غیرقابلاعتماد فعال میشود؛ چنانچه اپلیکیشن میزبان پارامترهای sz و cnt را از ورودیهای شبکه یا کاربر/سندباکس بپذیرد، مهاجم میتواند مقادیر بزرگ را تزریق کند و منجر به سرریز و کرش شود.
Defense Evasion (TA0005)
مهاجم میتواند تلاشهای اکسپلویت را بهصورت آهسته یا با پارامترهای متغیر ارسال کند تا قواعد ساده تشخیص را دور بزند
Impact (TA0040)
اثر مستقیم این آسیبپذیری کاهش در دسترسپذیری (Denial of Service) از طریق کرش برنامه و تخصیص نادرست حافظه است و در موارد خاص میتواند به افشای حافظه یا نوشتن حافظه و تاثیرات بزرگتر منتج شود؛ تاثیر عملیاتی متوسط تا بالا برای سرویسهایی که بهطور گسترده به SQLite وابستهاند است و باید با آپدیت، hardening و کنترلهای جبرانی فوری کاهش یابد.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-29088
- https://www.cvedetails.com/cve/CVE-2025-29088/
- https://www.sqlite.org/cves.html
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-29088
- https://vuldb.com/?id.304401
- https://sqlite.org/forum/forumpost/48f365daec
- https://github.com/sqlite/sqlite/commit/56d2fd008b108109f489339f5fd55212bb50afd4
- https://gist.github.com/ylwango613/d3883fb9f6ba8a78086356779ce88248
- https://sqlite.org/releaselog/3_49_1.html
- https://nvd.nist.gov/vuln/detail/CVE-2025-29088
- https://cwe.mitre.org/data/definitions/190.html