Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sqlite-values-union — SQLite 3.53.4 - عالي - محلي - انهيار - VALUES UNION ALL fallback cleanup stack overflow | Kitploit
أدوات/GitHubGitHub/abraxas/sqlite-values-union
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيتحليل الملفات الثنائيةالأوراق والأبحاثأمن قواعد البياناتمختبرات وتدريب عملي
GitHubabraxas/sqlite-values-union

sqlite-values-union

SQLite 3.53.4 - عالي - محلي - انهيار - VALUES UNION ALL fallback cleanup stack overflow

عرض المستودع
منذ 5 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - sqlite-values-union

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-values-union

sqlite-values-union

الفئة: انهيار الوصول: محلي

SQLite 3.53.4 (b09c88c) - Hwaci

يستخدم VALUES الافتراضي روتينًا مساعدًا (co-routine). بينما يُجبر WITH (أو إعادة تحميل المخطط، أو صف غير ثابت) الدالة sqlite3MultiValues على استخدام UNION ALL. يتم تخطي فحص طول SELECT المركّب عند تعيين SF_Values (parse.y:562-567). ثم تُرفض قائمة الصفوف الكبيرة بما يكفي بواسطة SQLITE_LIMIT_EXPR_DEPTH، وتُفجّر الدالة العودية sqlite3ExprDeleteNN مكدس C في مسار تنظيف الأخطاء.

استخدام VALUES العادي بـ 5000 صف آمن. بينما WITH مع 1000 صف يُنتج خطأً نظيفًا (Expression tree is too large). أما WITH مع 300000 صف فيؤدي إلى تجاوز سعة المكدس في ASan داخل sqlite3ExprDeleteNN (rc=134). ليس تنفيذًا عن بُعد (RCE).

المعرّفلا يوجد CVE بعد
الفئةانهيار (تجاوز سعة مكدس ASan في ExprDelete؛ لم يُثبت تنفيذ عن بُعد)
الوصولمحلي (SQL غير موثوق، أو VALUES داخل VIEW/TRIGGER)
CWECWE-674
CVSSمرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
المنتجSQLite
المتأثر3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69، SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc). من بقايا الحد اللاحق لـ VALUES المركّب في الفرع الرئيسي.
المصادقةSQL من المهاجم، أو مخطط مزروع يستخدم مسار UNION ALL الاحتياطي
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18820 فقط. دمج ASan. شاهد الانهيار.

ما يمكن للمهاجم فعله

تزويد SQL غير موثوق سيُحضّره المضيف. أضف بادئة WITH إلى قائمة VALUES ضخمة لتعطيل مسار الروتين المساعد. يُفترض أن يفشل التحليل بخطأ عمق التعبير. لكن تنظيف تلك الشجرة يتكرر في sqlite3ExprDeleteNN حتى تموت العملية.

يُفعّل المسار الاحتياطي نفسه عندما يكون VALUES داخل VIEW أو TRIGGER (db->init.busy). المضيف هو المُضمِّن: واجهة سطر أوامر، أو تطبيق يحضّر SQL المهاجم، أو خدمة تفتح ملف .db خبيثًا. لا تُنفّذ SQLite بايتات VALUES كشيفرة. الانهيار هو النتيجة.

كيف وجدته

عشرون عملية بحث في الشيفرة المصدرية لـ github.com/sqlite/sqlite وسم version-3.53.4. قائمة التخطي أغلقت بالفعل CVE-2026-11824، وsession NPD، وconcat_ws، وLOOKASIDE، وJSON UAF، وWAL-reset. خيار load_extension الافتراضي معطّل. كانت بقايا المحلل/VDBE هي هذا التخطي لـ VALUES UNION ALL بالإضافة إلى مُدمِّر عودي.

if( (p->selFlags & (SF_MultiValue|SF_Values))==0
 && (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0
 && cnt>mxSelect
){
  sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
}
if( pParse->bHasWith
 || pParse->db->init.busy
 || exprListIsConstant(pParse,pRow)==0
 ...
){
  /* The co-routine method cannot be used. Fall back to UNION ALL. */
  ...
  pSelect->op = TK_ALL;
  pSelect->pPrior = pLeft;
}

تسير clearSelect() عبر pPrior بشكل تكراري. لكن sqlite3ExprDeleteNN() لا تزال تتكرر عبر pRight وعبر pLeft عند تعيين EP_Static.

مسارات خاطئة: 1000 صف مع WITH يُنتج خطأً نظيفًا عند حد العمق الموثّق ولا ينهار؛ احتجنا 300000 صف حتى يتجاوز عمق المُدمِّر مكدس C البالغ 8 ميبيبايت. يبقى VALUES العادي على الروتين المساعد وهو الضابط السلبي.

المختبر

cd lab
./run.sh

أرشيف المصدر القياسي 3.53.4، sqlite3 مع ASan. Compose sqlite-values-union. منشور على 127.0.0.1:18820. اربطه بواجهة الاسترجاع (loopback).

SUCCESS sqlite-values-union how=with-values-union-all-fallback-exprdelete rows=300000 crash=asan-stack-overflow plain=5000 depth-error=1000 SQLITE-VALUES-UNION-WITNESS

الإصلاح

طبّق SQLITE_LIMIT_COMPOUND_SELECT على VALUES بالطريقة نفسها التي تُحدّ بها المركّبات الأخرى. أو امشِ عبر سلسلة UNION ALL بشكل تكراري عند الحذف، أو حدّد سقفًا لـ EXPR_DEPTH قبل بناء الشجرة حتى لا يتكرر التنظيف خارج مكدس C. الفرع الرئيسي اللاحق (Bug 2026-10-04T05:34:47Z) يأتي بعد هذا الإصدار العام.

المراجع

  • sqlite.org/src وسم version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
  • src/parse.y:562-567 تخطي SELECT المركّب عند تعيين SF_Values
  • src/insert.c:681-704 المسار الاحتياطي UNION ALL في sqlite3MultiValues
  • src/expr.c:1406-1430 الدالة العودية sqlite3ExprDeleteNN
  • sqlite.org/cves.html · sqlite.org/security.html
تنزيل الأداة