
SQLite 3.53.4 sqlite3_rsync - उच्च - रिमोट - RCE - SSH फ़ाइलनाम कमांड इंजेक्शन
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-rsync-ssh
Class: RCE (command injection) Reach: Remote (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 नहीं |
| Class | RCE (SSH रिमोट UID के रूप में command injection) |
| Reach | Remote (पीड़ित 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 util |
| Affected | 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) |
| Auth | पीड़ित शत्रुतापूर्ण USER@HOST:PATH के साथ sqlite3_rsync चलाता है |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1:18910। Echo witness। कोई reverse shell नहीं। |
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 स्टैक स्मैश को अभी भी खुला मानना; reverse shell को लैब करना; वास्तविक sshd से बात करना; ड्राफ्ट 3.54.0 को पिन करना; इसे लाइब्रेरी RCE कहना।
cd lab
./run.sh
आधिकारिक 3.53.4 सोर्स ज़िप से sqlite3_rsync बनाता है। नकली OpenSSH dest के बाद argv जोड़ता है। Origin lab@host:;echo SQLITE-RSYNC-SSH-WITNESS>/work/sandbox/pwned.txt। रिमोट कमांड में बिना उद्धरण वाला ;echo था। Bind loopback।
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, remote ORIGIN/REPLICA SSH argvb0db2db / Fossil eaec2f7f (2026-10-07)