Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sqlite-values-union — SQLite 3.53.4 - उच्च - स्थानीय - क्रैश - VALUES UNION ALL फ़ॉलबैक क्लीनअप स्टैक ओवरफ़्लो | Kitploit
उपकरण/GitHubGitHub/abraxas/sqlite-values-union
भेद्यता विश्लेषणशोषणफज़िंगबाइनरी विश्लेषणपेपर और शोधडेटाबेस सुरक्षालैब और अभ्यास
GitHubabraxas/sqlite-values-union

sqlite-values-union

SQLite 3.53.4 - उच्च - स्थानीय - क्रैश - VALUES UNION ALL फ़ॉलबैक क्लीनअप स्टैक ओवरफ़्लो

रिपॉजिटरी देखें
176 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Abraxas Labs - sqlite-values-union

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-values-union

लेख: https://abraxaslabs.tech/research/sqlite-values-union

sqlite-values-union

वर्ग: क्रैश पहुँच: स्थानीय

SQLite 3.53.4 (b09c88c) - Hwaci

डिफ़ॉल्ट VALUES एक को-रूटीन का उपयोग करता है। WITH (या स्कीमा रीलोड, या एक गैर-स्थिर पंक्ति) sqlite3MultiValues को UNION ALL पर बाध्य करता है। जब SF_Values सेट होता है तो कंपाउंड-SELECT लंबाई छोड़ दी जाती है (parse.y:562-567)। फिर पर्याप्त बड़ी पंक्ति सूची को SQLITE_LIMIT_EXPR_DEPTH द्वारा अस्वीकार कर दिया जाता है, और त्रुटि-सफ़ाई पथ पर पुनरावर्ती sqlite3ExprDeleteNN C स्टैक को उड़ा देता है।

5000 पंक्तियों का सादा VALUES ठीक है। WITH के साथ 1000 पंक्तियाँ साफ़-सुथरे ढंग से त्रुटि देती हैं (Expression tree is too large)। WITH के साथ 300000 पंक्तियाँ sqlite3ExprDeleteNN में ASan स्टैक-ओवरफ़्लो है (rc=134)। RCE नहीं।

IDअभी तक कोई CVE नहीं
वर्गक्रैश (ExprDelete पर ASan स्टैक-ओवरफ़्लो; RCE प्रदर्शित नहीं)
पहुँचस्थानीय (अविश्वसनीय SQL, या VIEW/TRIGGER के अंदर VALUES)
CWECWE-674
CVSSउच्च: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
उत्पादSQLite
प्रभावित3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc)। बाद के trunk VALUES कंपाउंड कैप का अवशेष।
प्रमाणीकरणहमलावर का SQL, या एक रोपित स्कीमा जो UNION ALL फ़ॉलबैक लेता है
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1:18820। ASan अमालगमेशन। क्रैश साक्षी।

एक हमलावर क्या कर सकता है

ऐसा अविश्वसनीय SQL दें जिसे कोई होस्ट तैयार करेगा। एक विशाल VALUES सूची के आगे WITH लगाएँ ताकि को-रूटीन पथ बंद हो जाए। पार्स को अभिव्यक्ति-गहराई त्रुटि के साथ विफल होना चाहिए। उस ट्री की सफ़ाई sqlite3ExprDeleteNN में तब तक पुनरावर्तित होती है जब तक प्रक्रिया मर न जाए।

वही फ़ॉलबैक तब भी सक्रिय होता है जब VALUES किसी VIEW या TRIGGER में रहता है (db->init.busy)। होस्ट एम्बेडर है: एक CLI, एक ऐप जो हमलावर का SQL तैयार करता है, एक सेवा जो किसी शत्रुतापूर्ण .db को खोलती है। SQLite VALUES बाइट्स को कोड के रूप में eval नहीं करता। क्रैश ही निष्कर्ष है।

मैंने इसे कैसे खोजा

github.com/sqlite/sqlite टैग version-3.53.4 की बीस स्रोत खोजें। स्किप सूची ने पहले ही CVE-2026-11824, session NPD, concat_ws, LOOKASIDE, JSON UAF, WAL-reset को बंद कर दिया था। डिफ़ॉल्ट load_extension बंद है। पार्सर/VDBE अवशेष यही VALUES UNION ALL स्किप और एक पुनरावर्ती डिस्ट्रक्टर था।

if( (p->selFlags & (SF_MultiValue|SF_Values))==0
 && (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0
 && cnt>mxSelect
){
  sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
}
if( pParse->bHasWith
 || pParse->db->init.busy
 || exprListIsConstant(pParse,pRow)==0
 ...
){
  /* The co-routine method cannot be used. Fall back to UNION ALL. */
  ...
  pSelect->op = TK_ALL;
  pSelect->pPrior = pLeft;
}

clearSelect() pPrior पर पुनरावृत्त रूप से चलता है। sqlite3ExprDeleteNN() अभी भी pRight पर और pLeft पर पुनरावृत्ति करता है जब EP_Static सेट होता है।

गलत मोड़: 1000 पंक्तियाँ WITH के साथ दस्तावेज़ीकृत गहराई सीमा पर साफ़ तरीके से त्रुटि देती हैं और क्रैश नहीं होतीं; 300000 पंक्तियों की आवश्यकता थी ताकि डिस्ट्रक्टर की गहराई 8 MiB C स्टैक को उड़ा दे। सादा VALUES को-रूटीन पर रहता है और नकारात्मक नियंत्रण है।

Lab

cd lab
./run.sh

Canonical 3.53.4 स्रोत zip, ASan sqlite3। sqlite-values-union को कंपोज़ करें। 127.0.0.1:18820 प्रकाशित करें। इसे लूपबैक से बाइंड करें।

SUCCESS sqlite-values-union how=with-values-union-all-fallback-exprdelete rows=300000 crash=asan-stack-overflow plain=5000 depth-error=1000 SQLITE-VALUES-UNION-WITNESS

समाधान

SQLITE_LIMIT_COMPOUND_SELECT को VALUES पर उसी तरह लागू करें जैसे अन्य कंपाउंड्स पर सीमा लगाई जाती है। डिलीट के समय UNION ALL श्रृंखला को पुनरावृत्त रूप से ट्रैवर्स करें, या ट्री बनने से पहले EXPR_DEPTH को सीमित करें ताकि क्लीनअप C स्टैक से पुनरावृत्त न हो सके। बाद का ट्रंक (Bug 2026-10-04T05:34:47Z) इस GA के बाद का है।

संदर्भ

  • sqlite.org/src टैग version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
  • src/parse.y:562-567 जब SF_Values सेट हो तो कंपाउंड-SELECT स्किप
  • src/insert.c:681-704 sqlite3MultiValues UNION ALL फ़ॉलबैक
  • src/expr.c:1406-1430 पुनरावृत्त sqlite3ExprDeleteNN
  • sqlite.org/cves.html · sqlite.org/security.html
टूल डाउनलोड करें