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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - sqlite-collate-depth

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

المقال: https://abraxaslabs.tech/research/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. وكذلك 8 آلاف و40 ألفًا، متجاوزةً حد العمق. أما 120 ألفًا فتُحدث تجاوزًا لسعة المكدس (stack-overflow) في sqlite3WalkExprNN تحت ASan (rc=134). ليس RCE.

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

المعرّفلا يوجد CVE بعد
الفئةانهيار (تجاوز سعة المكدس في sqlite3WalkExprNN تحت ASan؛ لم يُثبَت 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 (amalgamation). شاهد الانهيار.

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

يُمرِّر سلسلة 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 بكلا الأمرين لكل معامل ثنائي آخر.

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

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

المختبر

cd lab
./run.sh

دمج ASan من sqlite-src-3530400 الرسمي (استنساخ احتياطي للوسم version-3.53.4). تركيب 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) يأتي بعد هذا الإصدار العام.

المراجع

  • 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
  • ملف zip الرسمي https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • إجراء COLLATE في src/parse.y
  • sqlite3ExprAddCollateToken وsqlite3ExprAlloc (nHeight = 1) وsqlite3PExpr / sqlite3ExprCheckHeight في src/expr.c
  • sqlite3WalkExprNN في src/walker.c
  • SQLITE_MAX_EXPR_DEPTH الافتراضي 1000 في src/sqliteLimit.h
  • CWE-674 التكرار غير المُتحكَّم فيه
  • CWE-770 تخصيص الموارد دون حدود أو تقييد
تنزيل الأداة