
SQLite 3.53.4 CLI - عالي - محلي - حقن الأوامر - استعادة البيانات تُصدر مخططًا ضارًا كـ أمر نقطة
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-cli-recover
الفئة: حقن أوامر الوصول: محلي
SQLite 3.53.4 (b09c88c) CLI .recover يطبع sqlite_schema.sql الخبيث كأمر نقطي لاحق. recoverOneStmt يُحضّر الجملة الأولى فقط. يظل CREATE TABLE المزروع مع سطر جديد .shell مكتوبًا. أنبوب الاستعادة الموثّق يشغّله بمعرّف المستخدم الخاص بالمشغّل.
.dump printSchemaLine هو نفس فئة الإخراج. ليس libsqlite3. ليس --safe. الأوراكل هو echo لسلسلة شاهد.
| المعرّف | لا يوجد CVE بعد |
| الفئة | حقن أوامر (CLI .recover / .dump إخراج المخطط) |
| الوصول | محلي (الضحية تشغّل أنبوب الاستعادة الموثّق؛ 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 hostile.db .recover | sqlite3 restored.db |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18930 فقط. الشاهد SQLITE-CLI-RECOVER-WITNESS. |
ازرع CREATE أول صالحًا مع .shell لاحقًا في sqlite_schema.sql. الضحية التي تستعيد قاعدة البيانات تلك إلى sqlite3 ثانٍ تشغّل الأمر النقطي بمعرّف المستخدم الخاص بها.
الزرع هو ملف .db. إجراء الضحية هو أنبوب الاستعادة الموثّق، وليس سطر go ملصوقًا ولا --safe معطّلًا بالخطأ. .shell هو system(). أوراكل المختبر هو echo لشاهد. ليس صدفة عكسية.
عشرون عملية بحث في المصدر لـ 3.53.4. بحث Recover الخاص اعتبر recoverOneStmt تحضيرًا للجملة الأولى فقط ومضى. المتبقي هو مسار الطباعة: recoverSqlCb لا يزال يُخرج النص الإضافي. تمرير ذلك السكربت عبر الأنبوب هو ما يخبرك sqlite.org به للاستعادة.
المنعطفات الخاطئة المسجّلة مسبقًا: اعتبار تحضير الجملة الأولى تجريدًا؛ تثبيت 3.54.0 (مسودة)؛ إعادة تقديم CVE-2022-46908 --safe؛ تسمية هذا RCE في libsqlite3؛ استخدام صدفة عكسية كأوراكل.
cd lab
./run.sh
يبني sqlite-src-3530400 إلى sqlite3 مع استعادة CLI الافتراضية على Unix (OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB). writable_schema بعد .dbconfig defensive off. مزروع CREATE TABLE t(x); مع سطر جديد .shell echo SQLITE-CLI-RECOVER-WITNESS. .recover طبع .shell. عند تمريره عبر الأنبوب إلى sqlite3 ثانٍ، شغّله. ربط الاسترجاع.
SUCCESS sqlite-cli-recover how=recover-pipe-dot-shell recover-has-shell=yes restore-echo=yes SQLITE-CLI-RECOVER-WITNESS
لا تطبع SQL المخطط الذي ليس جملة واحدة. اقسم عند أول تحضير، أخرج تلك الجملة فقط، أو ارفض الصف. اقتبس CREATE العادي بالطريقة التي يستخدمها تفريغ الجدول الافتراضي بالفعل %q. اعتبر سطر . اللاحق خبيثًا وأسقطه. --safe على sqlite3 الاستعادة يحجب .shell؛ إنه ليس مفعّلًا في الأنبوب الموثّق.
b09c88c14082339b66c7b7158d609a771e64ca69).recover الموثّق ثم الاستعادةext/recover/sqlite3recover.c recoverOneStmt / recoverWriteSchema1src/shell.c.in recoverSqlCb, .dump printSchemaLine