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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sqlite-fj-using-auth — SQLite 3.53.4 - عالي - محلي - بقايا صلاحيات - FULL JOIN USING يتخطى sqlite3AuthRead | Kitploit
أدوات/GitHubGitHub/abraxas/sqlite-fj-using-auth
المصادقة والترخيصتصعيد الامتيازاتالتحليل الثابتتحليل الثغرات الأمنيةتحليل الكودالاستغلالالأوراق والأبحاثأمن قواعد البيانات
GitHubabraxas/sqlite-fj-using-auth

sqlite-fj-using-auth

SQLite 3.53.4 - عالي - محلي - بقايا صلاحيات - FULL JOIN USING يتخطى sqlite3AuthRead

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - sqlite-fj-using-auth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-fj-using-auth

التحليل المكتوب: https://abraxaslabs.tech/research/sqlite-fj-using-auth

sqlite-fj-using-auth

الفئة: صلاحية متبقية النطاق: محلي

SQLite 3.53.4 (b09c88c / SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

تعيد lookupName() كتابة عمود FULL JOIN USING إلى coalesce(...) (TK_FUNCTION). لا تُشغَّل sqlite3AuthRead إلا من أجل TK_COLUMN / TK_TRIGGER، لذا لا تتلقى أعمدة USING أي استدعاء SQLITE_READ أبدًا. المُضمِّن الذي ثبّت sqlite3_set_authorizer ورفض/تجاهل READ على t2.x لا يزال يُرجع ذلك العمود عبر SELECT x FROM t1 FULL JOIN t2 USING(x).

المُفوِّض معطّل عند الفتح الافتراضي. إنه بقايا من واجهة C البرمجية تلك. ليس RCE. يبقى FULL JOIN ON وLEFT JOIN USING مرفوضين / دون تسريب. لا يزال coalesce(t2.x) الصريح يمر عبر التفويض.

المعرّفلا يوجد CVE بعد
الفئةصلاحية متبقية (تخطي المُفوِّض على مستوى العمود)
النطاقمحلي (sqlite3_set_authorizer في المُضمِّن؛ SQL من المهاجم)
CWECWE-863، CWE-284
CVSSمرتفع: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
المنتجSQLite (نسخة GitHub المرآة sqlite/sqlite)
المتأثر3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69). إصلاح المُفوِّض FULL JOIN USING الخاص بـ 3.54 فقط (2cb2287768) غير موجود في هذا الإصدار GA.
المصادقةالمُضمِّن ثبّت sqlite3_set_authorizer؛ الدالة الافتراضية هي NULL
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18840 فقط. سلسلة إثبات. ليس RCE.

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

ضد مُضمِّن ثبّت sqlite3_set_authorizer كقائمة تحكم وصول على مستوى الأعمدة، جهّز SELECT x FROM t1 FULL JOIN t2 USING(x) (أو NATURAL FULL JOIN). يُرفض SELECT x FROM t2 المجرّد (SQLITE_AUTH 23). أما صيغة FULL JOIN USING فتُرجع العمود المرفوض قراءته. لا يُطلق أي استدعاء READ t2.x.

المُفوِّض معطّل ما لم يثبّته المُضمِّن. sqlite3_open الافتراضي ليس هذه البقايا. ليس RCE.

كيف وجدته

عشرون عملية بحث في المصدر للإصدار 3.53.4 بعد PHP. كانت قائمة التخطي قد ذكرت بالفعل إصلاح المُفوِّض FULL JOIN USING الخاص بـ 3.54. لا يزال مفقودًا في أحدث إصدار GA. pExpr->op هو TK_FUNCTION عند lookupname_end، لذا لا يُشغَّل أبدًا حاجز AuthRead. كما يمنع WRC_Prune المُتجوِّل من النزول إلى وسائط coalesce.

lookupname_end:
  if( cnt==1 ){
#ifndef SQLITE_OMIT_AUTHORIZATION
    if( pParse->db->xAuth
     && (pExpr->op==TK_COLUMN || pExpr->op==TK_TRIGGER)
    ){
      sqlite3AuthRead(pParse, pExpr, pSchema, pNC->pSrcList);
    }
#endif

المسارات الخاطئة المسجّلة مسبقًا: اعتبار authorizer مُفعّلًا افتراضيًا؛ توقّع أن يُسرّب LEFT JOIN USING أو FULL JOIN ON؛ توقّع أن يتخطى coalesce(t2.x) الصريح عملية AuthRead؛ تثبيت الإصدار 3.54.0 بينما كان لا يزال مسودة.

المختبر

cd lab
./run.sh

يبني تجميع sqlite-src-3530400 الرسمي. أداة الاختبار هي lab/auth.c. الاسترجاع عبر 127.0.0.1:18840. المفوّض يمنع READ على t2.x. يُرفض SELECT x FROM t2. يُرجع SELECT x FROM t1 FULL JOIN t2 USING(x) الشاهد، مع 0 READ t2.x. يُرفض FULL JOIN ON. LEFT JOIN USING لا يسرّب. خط الأساس لـ IGNORE هو NULL؛ IGNORE FULL JOIN USING لا يزال يسرّب.

SUCCESS sqlite-fj-using-auth how=full-join-using-skip-authread baseline=denied fj-using=witness fj-on=denied left-using=no-leak SQLITE-FJ-USING-AUTH-WITNESS

الإصلاح

قم بتكرار sqlite3AuthRead على كل عنصر فرعي من pFJMatch بعد إعادة كتابة الدمج (coalesce rewrite)، بالطريقة التي يفعلها trunk 2cb2287768 / Git 5694c3bb للإصدار 3.54. إن تفويض a[0] فقط (bbd69ce274) ليس كافيًا. إن LEFT JOIN USING و FULL JOIN ON تقومان بالتفويض بالفعل؛ فهما ليسا هذا المتبقي.

المراجع

  • sqlite.org/src وسم version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/resolve.c إعادة كتابة الدمج في lookupName وبوابة AuthRead
  • src/auth.c sqlite3AuthRead / sqlite3AuthReadCol
  • المنتدى 2026-07-24T02:52:08Z / 2026-05-31T02:00:37Z
تنزيل الأداة