
SQLite 3.53.4 sqlite3_rsync - उच्च - रिमोट - RCE - SSH फ़ाइलनाम कमांड इंजेक्शन
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-rsync-ssh
राइट-अप: https://abraxaslabs.tech/research/sqlite-rsync-ssh
वर्ग: RCE (कमांड इंजेक्शन) पहुँच: रिमोट (UI:R)
SQLite 3.53.4 (b09c88c) का sqlite3_rsync स्थानीय /bin/sh -c के लिए USER@HOST:PATH को कोट करता है। इसके बाद OpenSSH बिना उन कोट्स के लॉगिन शेल के लिए रिमोट argv को स्पेस से जोड़ देता है। PATH में मौजूद सेमीकोलन, $(), बैकटिक या | SSH रिमोट UID के रूप में चलता है। यह util है, libsqlite3 नहीं। Ada Logics का readPow2 x>16 स्टैक स्मैश इस पिन पर बंद है।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | RCE (SSH रिमोट UID के रूप में कमांड इंजेक्शन) |
| पहुँच | रिमोट (पीड़ित 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 |
| उत्पाद | SQLite sqlite3_rsync util |
| प्रभावित | 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) |
| प्रमाणीकरण | पीड़ित sqlite3_rsync को किसी दुर्भावनापूर्ण USER@HOST:PATH के साथ चलाता है |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18910। Echo साक्षी। कोई रिवर्स शेल नहीं। |
sqlite3_rsync USER@HOST:PATH के रिमोट पाथ में ;, $(), बैकटिक या | डालें। पीड़ित को util चलाना होगा (UI:R)। अतिरिक्त कमांड SSH रिमोट UID के रूप में चलता है।
append_escaped_arg(..., 1) स्थानीय /bin/sh -c के लिए सिंगल-कोट करता है। वे कोट्स स्थानीय रूप से ही खपत हो जाते हैं। OpenSSH शेष argv को एक रिमोट कमांड स्ट्रिंग में जोड़ देता है। लॉगिन शेल उन मेटाकैरेक्टरों को बिना कोट के देखता है।
यह libsqlite3 नहीं है। डिफ़ॉल्ट sqlite3.c यह प्रोटोकॉल नहीं भेजता। Ada Logics का रेप्लिका स्टैक स्मैश (readPow2 एक्सपोनेंट कैप) 3.53.4 पर पहले से बंद है।
3.53.2 FTS5 / session लहर के बाद SQLite टैग version-3.53.4 की बीस सोर्स खोजें। डिफ़ॉल्ट लाइब्रेरी में अभी भी अन्य अवशेष हैं (यह पैक rsync util है)। tool/sqlite3_rsync.c का popen2 /bin/sh -c को exec करता है। hostSeparator पहले कोलन पर विभाजित करता है। append_escaped_arg का रिटर्न कभी जाँचा नहीं जाता।
गलत रास्ते: Ada Logics स्टैक स्मैश को अभी भी खुला मानना; रिवर्स शेल का लैब करना; किसी वास्तविक sshd से बात करना; ड्राफ्ट 3.54.0 को पिन करना; इसे लाइब्रेरी RCE कहना।
cd lab
./run.sh
आधिकारिक 3.53.4 सोर्स ज़िप से sqlite3_rsync बनाता है। नकली OpenSSH dest के बाद argv जोड़ता है। ओरिजिन lab@host:;echo SQLITE-RSYNC-SSH-WITNESS>/work/sandbox/pwned.txt। रिमोट कमांड में बिना कोट का ;echo था। लूपबैक बाइंड।
SUCCESS sqlite-rsync-ssh how=openssh-argv-join dest=lab@host remote-has-semicolon=yes SQLITE-RSYNC-SSH-WITNESS
पीयर को भेजे जाने वाले फ़ाइलनामों को हेक्स-एनकोड करें (isFilename==2 / --encoded-filenames) उसी तरह जैसे इस GA के बाद trunk b0db2db (2026-10-07, ANT-2026-31X9HVRR) करता है। USER@HOST और --ssh स्थानीय-sh कोटिंग ही रहें। OpenSSH argv जॉइन में स्थानीय सिंगल कोट्स के बचे रहने पर भरोसा न करें।
b09c88c14082339b66c7b7158d609a771e64ca69)append_escaped_arg, popen2, रिमोट ORIGIN/REPLICA SSH argvb0db2db / Fossil eaec2f7f (2026-10-07)