
SQLite 3.53.4 - उच्च - स्थानीय - क्रैश - नेस्टेड CTE nNestSel व्यू-गहराई सीमा को छोड़ देते हैं
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · sqlite-cte-nest
Class: Crash Reach: Local
SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci
sqlite3ResultSetOfSelect nNestSel को बढ़ाता है और जब श्रृंखला SQLITE_LIMIT_EXPR_DEPTH तक पहुँचती है तो VIEWs and/or subqueries nested too deep त्रुटि देता है। इस पिन पर नेस्टेड VIEWs पहले से ही उस सीमा तक पहुँच चुके हैं। select.c:5754 (sqlite3SrcItemAttachSubquery) पर CTE अटैच nNestSel को नहीं बढ़ाता। फिर selectExpander / sqlite3WalkSelect CTE श्रृंखला को तब तक रिकर्स करते हैं जब तक C स्टैक समाप्त नहीं हो जाता।
एक छोटी CTE श्रृंखला एक पंक्ति लौटाती है। N=25000 पर नेस्टेड FROM एक पार्सर Recursion limit है और क्रैश नहीं करता। .limit expr_depth 20 पर नेस्टेड VIEWs too-deep त्रुटि देते हैं। CTE N=25000 ASan स्टैक-ओवरफ़्लो है। RCE नहीं।
| ID | अभी तक कोई CVE नहीं |
| Class | Crash (selectExpander में ASan स्टैक-ओवरफ़्लो; RCE प्रदर्शित नहीं) |
| Reach | Local (अविश्वसनीय SQL या नेस्टेड CTE स्कीमा) |
| CWE | CWE-674 |
| CVSS | High: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Product | SQLite (GitHub मिरर sqlite/sqlite) |
| Affected | 3.53.4 (b09c88c); बाद के ट्रंक CTE nNestSel का अवशेष |
| Auth | अविश्वसनीय SQL या एक रोपी गई WITH श्रृंखला |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1:18810। ASan अमलगमेशन। क्रैश साक्षी। |
एक लंबी CTE श्रृंखला दें, SQL के रूप में या किसी अविश्वसनीय .db पर VIEW बॉडी के रूप में:
WITH c0 AS (SELECT 1),
c1 AS (SELECT * FROM c0),
...
cN AS (SELECT * FROM cN-1)
SELECT * FROM cN;
selectExpander प्रत्येक CTE को नेस्टेड FROM सबक्वेरी के रूप में चलाता है। nNestSel कभी नहीं हिलता। होस्ट प्रोसेस C स्टैक पर मर जाती है। नेस्टेड VIEWs पहले से ही सीमित हैं। नेस्टेड FROM पार्सर रिकर्सन सीमा तक पहुँचता है। यह अवशेष CTE अटैच पथ है। SQLite CTE नामों को शेल में इवैल्यूएट नहीं करता। क्रैश, RCE नहीं।
https://github.com/sqlite/sqlite टैग https://github.com/sqlite/sqlite/releases/tag/version-3.53.4 के बीस स्रोत शिकार। इस पिन पर नेस्टेड VIEWs सीमित थे (3f3fb9b638 / branch-3.53 38430aa5ed, 2026-06-16)। CTE अटैच नहीं था। ट्रंक f547308713 (2026-10-05) इस GA के बाद है।
पहले से दर्ज गलत रास्ते: नेस्टेड VIEWs को क्रैश मानना (वे too-deep त्रुटि देते हैं); नेस्टेड FROM N=25000 को क्रैश मानना (पार्सर Recursion limit); 5-CTE श्रृंखला को सीमा लागू होने का प्रमाण मानना।
cd lab
./run.sh
आधिकारिक sqlite-src-3530400 ज़िप, ASan अमलगमेशन, कंपोज़ sqlite-cte-nest, प्रकाशित 127.0.0.1:18810। इसे लूपबैक पर बाइंड करें। इसे किसी और के SQLite पर न लक्षित करें।
SUCCESS sqlite-cte-nest how=asan-stack-overflow crash-n=25000 small-cte=ok nested-views=too-deep nested-from=rejected SQLITE-CTE-NEST-WITNESS
CTE अटैच पर nNestSel को उसी तरह बढ़ाएँ जैसे sqlite3ResultSetOfSelect VIEWs के लिए पहले से करता है, और SQLITE_LIMIT_EXPR_DEPTH पर त्रुटि दें। ट्रंक f547308713 (2026-10-05, "Limit the depth of recursion for CTEs using SQLITE_LIMIT_EXPR_DEPTH") उस श्रेणी का पैच है। यह 3.53.4 में नहीं है।
b09c88c14082339b66c7b7158d609a771e64ca69)2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bccsrc/select.c sqlite3ResultSetOfSelect (nNestSel++), CTE अटैच :5754src/walker.c sqlite3WalkSelectFrom सबक्वेरी वॉकselectExpander / sqlite3SelectExpand2026-10-04T04:58:58Z; ट्रंक f547308713