
SQLite 3.53.4 CLI - عالي - محلي - حقن الأوامر - go ومحددات الشرطة المائلة ثم أمر النقطة
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-cli-go
الفئة: حقن أوامر الوصول: محلي
لا يزال SQLite 3.53.4 (b09c88c) في واجهة sqlite3 الافتراضية يعامل go الخاصة بـ SQL Server و / الخاصة بـ Oracle كمُنهيات للتعليمات. تعيد line_is_command_terminator كتابة ذلك السطر إلى ;. السطر التالي مع مخزن SQL فارغ هو do_meta_command، لذا تُنفَّذ .shell / .output / .read بمعرّف المستخدم الخاص بالمشغّل.
لا يزال --safe يحجب .shell. هذا الضابط صامد. لا يقوم sqlite3 الافتراضي بتشغيل --safe. ليس libsqlite3. Oracle هو echo لسلسلة إثبات.
| المعرّف | لا يوجد CVE بعد |
| الفئة | حقن أوامر (مُنهي go / / في CLI ثم أمر نقطي لاحق) |
| الوصول | محلي (يشغّل الضحية sqlite3 الافتراضي على SQL/سكربت المهاجم دون --safe؛ UI:R) |
| CWE | CWE-78 |
| CVSS | مرتفع: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| المنتج | SQLite (واجهة sqlite3 CLI) |
| المتأثر | 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc |
| المصادقة | يغذّي الضحية سكربتًا إلى sqlite3 الافتراضي؛ دون --safe |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18920 فقط. الإثبات SQLITE-CLI-GO-WITNESS. |
بعد SQL غير مُنهى في سكربت يغذّيه المشغّل إلى sqlite3 دون --safe، يُنفَّذ سطر go أو / ثم .shell / .output / .read بمعرّف المستخدم الخاص بالمشغّل.
الفاصلة المنقوطة تُنهي التعليمات بالفعل. المتبقي هو SQL مُنهٍ لا يحتوي على ;، لذا فإن غلافًا ظنّ أن التعليمات لا تزال مفتوحة يُنفّذ الأمر النقطي التالي. .shell هو system(). أوراكل المختبر هو echo لإثبات. ليس صدفة عكسية.
عشرون عملية بحث في المصدر للإصدار 3.53.4 بعد OpenLiteSpeed. أحدث إصدار GA، وليس مسودة 3.54.0. إضافات CLI ليست المكتبة الافتراضية. --safe هو المصبّ الموثّق للسكربتات غير الموثوقة (CVE-2022-46908). لا يزال يحجب .shell. لا يقوم sqlite3 الافتراضي بتشغيله.
لا يزال src/shell.c.in يحتوي على مسار التوافق مع SQL Server / Oracle. يقوم Trunk ac6ac0c22d (2026-10-08) بتعطيله ما لم يكن SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. هذا الـ check-in بعد هذا الإصدار GA.
المنعطفات الخاطئة المسجّلة مسبقًا: معاملة الفاصلة المنقوطة كأنها نفس المتبقي؛ إعادة تسجيل CVE-2022-46908؛ توقّع أن يكون --safe افتراضيًا؛ تسمية هذا RCE في libsqlite3؛ استخدام صدفة عكسية كأوراكل؛ تثبيت 3.54.0 (مسودة).
cd lab
./run.sh
يبني sqlite-src-3530400 الرسمي إلى sqlite3 الافتراضي على Unix (--disable-readline). Compose sqlite-cli-go. TCP وهمي على 127.0.0.1:18920. عامل CLI الافتراضي go و / كمُنهيين ثم شغّل .shell echo SQLITE-CLI-GO-WITNESS. طبع --safe رسالة cannot run .shell in safe mode. ربط loopback.
SUCCESS sqlite-cli-go how=go-then-dot-shell slash=yes safe=blocked SQLITE-CLI-GO-WITNESS
أوقف معاملة go و / كمُنهيين، وهو ما يفعله Trunk ac6ac0c22d ما لم يكن -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. حتى ذلك الحين، شغّل السكربتات غير الموثوقة باستخدام --safe. --safe هو الضابط الذي لا يزال صامدًا.
b09c88c14082339b66c7b7158d609a771e64ca69)src/shell.c.in line_is_command_terminator، إعادة كتابة process_input، do_meta_command، .shell system() بعد failIfSafeMode--safe--safe