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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sqlite-collate-depth — SQLite 3.53.4 - عالي - محلي - انهيار - سلسلة COLLATE تتجاوز SQLITE_LIMIT_EXPR_DEPTH | Kitploit
أدوات/GitHubGitHub/abraxas/sqlite-collate-depth
التحليل الثابتتحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمن قواعد البيانات
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 - عالي - محلي - انهيار - سلسلة COLLATE تتجاوز SQLITE_LIMIT_EXPR_DEPTH

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - sqlite-collate-depth

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

sqlite-collate-depth

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

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69، SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

إجراء القواعد النحوية COLLATE لا يستدعي sqlite3ExprCheckHeight أبدًا. تقوم sqlite3ExprAddCollateToken بتخصيص عقدة TK_COLLATE مع بقاء nHeight مساويًا لـ 1، ثم تُعلّق التعبير السابق على pLeft. تمر المعاملات العادية عبر sqlite3PExpr وتحصل على SQLITE_LIMIT_EXPR_DEPTH الموثّق (الافتراضي 1000). هذا المعامل لا يفعل ذلك.

لا يزال المُتجوّل (walker) يعاود الاستدعاء على كل pLeft. إن EP_Skip مخصص للـ affinity، وليس لـ sqlite3WalkExprNN. سلسلة من 50 عقدة تُرجع 1. وكذلك 8k و40k، متجاوزةً حد العمق. 120k تُسبّب تجاوزًا لسعة المكدس (stack-overflow) في ASan داخل sqlite3WalkExprNN (rc=134). ليس RCE.

الشجرة الأساسية هي https://sqlite.org/src. مستودع GitHub sqlite/sqlite هو مرآة Fossil. الملف المضغوط الرسمي sqlite-src-3530400. مكتبة في الملكية العامة. هذه الحزمة بترخيص AGPLv3.

IDلا يوجد CVE بعد
الفئةانهيار (تجاوز سعة المكدس في ASan داخل sqlite3WalkExprNN؛ لم يتم إثبات RCE)
الوصولمحلي (SQL غير موثوق أو VIEW مزروع)
CWECWE-674، CWE-770
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
المتأثر3.53.4 (b09c88c)؛ من بقايا فحص ارتفاع COLLATE في trunk اللاحق
المصادقةSQL غير موثوق أو VIEW؛ يبقى load_extension الافتراضي معطّلًا
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18800 فقط. دمج ASan. شاهد الانهيار.

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

قم بتغذية سلسلة COLLATE BINARY لاحقة طويلة كـ SQL، أو ازرعها في VIEW داخل ملف .db غير موثوق. تتجوّل العملية المضيفة في السلسلة وتموت على مكدس C. حد عمق التعبير الموثّق لا يُنفَّذ أبدًا على هذا المعامل.

SELECT 1 COLLATE BINARY COLLATE BINARY ... كافٍ. نفس الشكل في CREATE VIEW v AS SELECT 1 COLLATE BINARY ... ثم SELECT * FROM v على اتصال جديد. يحتفظ SQLITE_LIMIT_SQL_LENGTH الافتراضي (1e9) بسلسلة بحجم ~1.8 ميغابايت التي أغرقت مكدسًا بحجم 8 ميغابايت في هذا المختبر.

هذا انهيار لعملية المُضمِّن (embedder). إنه ليس تحكمًا بمؤشر التعليمات. يبقى load_extension معطّلًا.

كيف وجدته

عشرون عملية بحث في المصدر لوسم SQLite version-3.53.4 بعد OpenLiteSpeed. أحدث إصدار GA، وليس مسودة 3.54.0. يعامل sqlite.org/security.html كلاً من SQL غير الموثوق وملف .db غير الموثوق كفئة أولى. load_extension الافتراضي معطّل.

parse.y الخاص بـ COLLATE هو ثلاثة أسطر:

expr(A) ::= expr(A) COLLATE ids(C). {
  A = sqlite3ExprAddCollateToken(pParse, A, &C, 1);
}

تقوم sqlite3ExprAddCollateToken بتعيين pNew->pLeft = pExpr وEP_Collate|EP_Skip. تركت sqlite3ExprAlloc قيمة nHeight = 1. لا يوجد sqlite3ExprCheckHeight. تقوم sqlite3PExpr بكلا هذين الأمرين لكل معامل ثنائي آخر.

المنعطفات الخاطئة: اعتبار 8k COLLATE هو الانهيار (أرجع 1)؛ اعتبار 40k هو الانهيار (أرجع أيضًا 1، متجاوزًا بكثير SQLITE_LIMIT_EXPR_DEPTH 1000)؛ الحاجة إلى 120k قبل أن يموت ASan في sqlite3WalkExprNN.

هذا هو G1 من أربعة عشر من البقايا على الإصدار المثبّت. الأشقاء هم منشورات أخرى.

المختبر

cd lab
./run.sh

دمج ASan من sqlite-src-3530400 الرسمي (استنساخ احتياطي للوسم version-3.53.4). Compose sqlite-collate-depth. HTTP وهمي على 127.0.0.1:18800. اربطه بالـ loopback.

SUCCESS sqlite-collate-depth how=asan-stack-overflow control=50 crash-n=120000 SQLITE-COLLATE-DEPTH-WITNESS

50 COLLATE تُرجع 1. 8k و40k تُرجعان أيضًا 1. 120k تموت rc=134، تجاوز سعة المكدس في ASan داخل sqlite3WalkExprNN. فحص التثبيت هو SELECT sqlite_version() / SELECT sqlite_source_id().

الإصلاح

استدعِ sqlite3ExprCheckHeight على عقدة COLLATE بعد إرفاق pLeft، بالطريقة التي تفعلها sqlite3PExpr بالفعل. أعد حساب nHeight من الابن. المعامل اللاحق لا يزال شجرة تعبير.

trunk 252c0b7bf5 (2026-10-04) يأتي بعد هذا الإصدار GA.

المراجع

  • https://sqlite.org/src وسم version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (مرآة Fossil) شجرة https://github.com/sqlite/sqlite/tree/version-3.53.4
  • الملف المضغوط الرسمي https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y إجراء COLLATE
  • src/expr.c sqlite3ExprAddCollateToken، sqlite3ExprAlloc (nHeight = 1)، sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c sqlite3WalkExprNN
  • src/sqliteLimit.h SQLITE_MAX_EXPR_DEPTH الافتراضي 1000
  • CWE-674 استدعاء ذاتي غير مُتحكَّم به
  • CWE-770 تخصيص موارد دون حدود أو تقييد
تنزيل الأداة