
SQLite 3.53.4 sqlite3_rsync - عالي - عن بُعد - RCE - حقن أوامر اسم ملف SSH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-rsync-ssh
التصنيف: RCE (حقن أوامر) الوصول: عن بُعد (UI:R)
SQLite 3.53.4 (b09c88c) يقوم sqlite3_rsync بوضع USER@HOST:PATH بين علامتي اقتباس من أجل /bin/sh -c المحلي. ثم يقوم OpenSSH بدمج argv البعيد بمسافات من أجل shell تسجيل الدخول دون تلك العلامات. أي فاصلة منقوطة، أو $()، أو backtick، أو | في PATH يُنفَّذ بصلاحيات UID البعيد لـ SSH. أداة مساعدة، وليست libsqlite3. ثغرة تحطيم المكدس readPow2 x>16 من Ada Logics مغلقة في هذا الإصدار.
| ID | لا يوجد CVE بعد |
| Class | RCE (حقن أوامر بصلاحيات UID البعيد لـ SSH) |
| Reach | عن بُعد (الضحية تشغّل sqlite3_rsync؛ UI:R) |
| CWE | CWE-78 |
| CVSS | High: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Product | SQLite أداة sqlite3_rsync |
| Affected | 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) |
| Auth | الضحية تشغّل sqlite3_rsync مع USER@HOST:PATH خبيث |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1:18910 فقط. شاهد صدى. لا reverse shell. |
ضع ;، أو $()، أو backticks، أو | في المسار البعيد لـ sqlite3_rsync USER@HOST:PATH. يجب أن تشغّل الضحية الأداة (UI:R). يُنفَّذ الأمر الإضافي بصلاحيات UID البعيد لـ SSH.
يقوم append_escaped_arg(..., 1) بوضع علامات اقتباس مفردة من أجل /bin/sh -c المحلي. تُستهلك تلك العلامات محليًا. ثم يدمج OpenSSH ما تبقى من argv في سلسلة أمر بعيد واحدة. يرى shell تسجيل الدخول المحارف الوصفية دون علامات اقتباس.
هذا ليس libsqlite3. لا يوفّر sqlite3.c الافتراضي هذا البروتوكول. ثغرة تحطيم المكدس في نسخة Ada Logics (حد أس readPow2) مغلقة بالفعل في 3.53.4.
عشرون عملية بحث في المصدر لوسم SQLite version-3.53.4 بعد موجة FTS5 / session في 3.53.2. لا تزال المكتبة الافتراضية تحتوي على بقايا أخرى (هذه الحزمة هي أداة rsync). يقوم tool/sqlite3_rsync.c popen2 بتنفيذ /bin/sh -c. يقسّم hostSeparator عند أول نقطتين. لا يتم التحقق من قيمة إرجاع append_escaped_arg أبدًا.
مسارات خاطئة: اعتبار ثغرة تحطيم المكدس من Ada Logics لا تزال مفتوحة؛ تجهيز reverse shell في المختبر؛ التحدث إلى sshd حقيقي؛ تثبيت مسودة 3.54.0؛ تسمية هذا بـ RCE في المكتبة.
cd lab
./run.sh
يبني sqlite3_rsync من ملف المصدر الرسمي 3.53.4 المضغوط. يقوم OpenSSH المزيف بدمج argv بعد dest. الأصل lab@host:;echo SQLITE-RSYNC-SSH-WITNESS>/work/sandbox/pwned.txt. كان الأمر البعيد يحتوي على ;echo دون علامات اقتباس. ربط loopback.
SUCCESS sqlite-rsync-ssh how=openssh-argv-join dest=lab@host remote-has-semicolon=yes SQLITE-RSYNC-SSH-WITNESS
ترميز أسماء الملفات المرسلة إلى الطرف الآخر بصيغة hex (isFilename==2 / --encoded-filenames) بالطريقة التي يفعلها trunk b0db2db (2026-10-07، ANT-2026-31X9HVRR) بعد هذا الإصدار العام. يبقى USER@HOST و --ssh بعلامات اقتباس shell المحلية. لا تعتمد على بقاء علامات الاقتباس المفردة المحلية بعد دمج argv في OpenSSH.
b09c88c14082339b66c7b7158d609a771e64ca69)append_escaped_arg، popen2، argv البعيد لـ ORIGIN/REPLICA عبر SSHb0db2db / Fossil eaec2f7f (2026-10-07)