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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sqlite-fj-using-auth — SQLite 3.53.4 - उच्च - स्थानीय - विशेषाधिकार अवशेष - FULL JOIN USING sqlite3AuthRead को छोड़ देता है | Kitploit
उपकरण/GitHubGitHub/abraxas/sqlite-fj-using-auth
प्रमाणीकरण और प्राधिकरणविशेषाधिकार वृद्धिस्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणशोषणपेपर और शोधडेटाबेस सुरक्षा
GitHubabraxas/sqlite-fj-using-auth

sqlite-fj-using-auth

SQLite 3.53.4 - उच्च - स्थानीय - विशेषाधिकार अवशेष - FULL JOIN USING sqlite3AuthRead को छोड़ देता है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - sqlite-fj-using-auth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-fj-using-auth

राइट-अप: https://abraxaslabs.tech/research/sqlite-fj-using-auth

sqlite-fj-using-auth

वर्ग: विशेषाधिकार अवशेष पहुँच: स्थानीय

SQLite 3.53.4 (b09c88c / SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

lookupName() एक FULL JOIN USING कॉलम को coalesce(...) (TK_FUNCTION) में बदल देता है। sqlite3AuthRead केवल TK_COLUMN / TK_TRIGGER के लिए चलता है, इसलिए USING कॉलम को कभी SQLITE_READ कॉलबैक नहीं मिलता। जिस एम्बेडर ने sqlite3_set_authorizer इंस्टॉल किया है और t2.x पर READ को DENY/IGNORE करता है, वह भी SELECT x FROM t1 FULL JOIN t2 USING(x) के माध्यम से वह कॉलम प्राप्त कर लेता है।

डिफ़ॉल्ट ओपन पर Authorizer बंद रहता है। यह उस C API का अवशेष है। RCE नहीं है। FULL JOIN ON और LEFT JOIN USING अस्वीकृत / लीक-रहित रहते हैं। स्पष्ट coalesce(t2.x) अभी भी अधिकृत होता है।

IDअभी तक कोई CVE नहीं
वर्गविशेषाधिकार अवशेष (कॉलम-स्तरीय authorizer छूट)
पहुँचस्थानीय (एम्बेडर sqlite3_set_authorizer; हमलावर SQL)
CWECWE-863, CWE-284
CVSSउच्च: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
उत्पादSQLite (GitHub मिरर sqlite/sqlite)
प्रभावित3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)। केवल 3.54 में उपलब्ध authorizer FULL JOIN USING फ़िक्स (2cb2287768) इस GA पर नहीं है।
प्रमाणीकरणएम्बेडर ने sqlite3_set_authorizer इंस्टॉल किया; डिफ़ॉल्ट कॉलबैक NULL है
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1:18840। साक्षी स्ट्रिंग। RCE नहीं।

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

उस एम्बेडर के विरुद्ध जिसने कॉलम ACL के रूप में sqlite3_set_authorizer इंस्टॉल किया है, SELECT x FROM t1 FULL JOIN t2 USING(x) (या NATURAL FULL JOIN) तैयार करें। सादा SELECT x FROM t2 अस्वीकृत होता है (SQLITE_AUTH 23)। FULL JOIN USING रूप READ-अस्वीकृत कॉलम लौटा देता है। शून्य READ t2.x कॉलबैक सक्रिय होते हैं।

Authorizer तब तक बंद रहता है जब तक एम्बेडर इसे इंस्टॉल न करे। डिफ़ॉल्ट sqlite3_open इस अवशेष से प्रभावित नहीं है। RCE नहीं है।

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

PHP के बाद 3.53.4 की बीस स्रोत खोजें। स्किप सूची में पहले से ही 3.54 FULL JOIN USING authorizer चेक-इन का नाम था। यह नवीनतम GA पर अभी भी अनुपस्थित है। lookupname_end पर pExpr->op TK_FUNCTION है, इसलिए AuthRead गेट कभी नहीं चलता। WRC_Prune वॉकर को coalesce आर्ग्युमेंट्स में उतरने से भी रोक देता है।

lookupname_end:
  if( cnt==1 ){
#ifndef SQLITE_OMIT_AUTHORIZATION
    if( pParse->db->xAuth
     && (pExpr->op==TK_COLUMN || pExpr->op==TK_TRIGGER)
    ){
      sqlite3AuthRead(pParse, pExpr, pSchema, pNC->pSrcList);
    }
#endif

गलत मोड़ पहले ही दर्ज किए जा चुके हैं: authorizer को डिफ़ॉल्ट-ऑन मानना; LEFT JOIN USING या FULL JOIN ON से लीक होने की अपेक्षा करना; स्पष्ट coalesce(t2.x) से AuthRead छूट जाने की अपेक्षा करना; 3.54.0 को पिन करना जबकि वह अभी ड्राफ़्ट में था।

लैब

cd lab
./run.sh

आधिकारिक sqlite-src-3530400 amalgamation बनाता है। Harness lab/auth.c है। Loopback 127.0.0.1:18840। Authorizer DENY READ t2.x। SELECT x FROM t2 अस्वीकृत। SELECT x FROM t1 FULL JOIN t2 USING(x) witness लौटाता है, 0 READ t2.x। FULL JOIN ON अस्वीकृत। LEFT JOIN USING में कोई लीक नहीं। IGNORE baseline NULL है; IGNORE FULL JOIN USING अभी भी लीक करता है।

SUCCESS sqlite-fj-using-auth how=full-join-using-skip-authread baseline=denied fj-using=witness fj-on=denied left-using=no-leak SQLITE-FJ-USING-AUTH-WITNESS

समाधान

कोलेस्क रीराइट के बाद प्रत्येक pFJMatch चाइल्ड पर sqlite3AuthRead को लूप करें, जैसे ट्रंक 2cb2287768 / Git 5694c3bb 3.54 के लिए करता है। केवल a[0] (bbd69ce274) को अधिकृत करना पर्याप्त नहीं है। LEFT JOIN USING और FULL JOIN ON पहले से ही अधिकृत करते हैं; वे यह शेष नहीं हैं।

संदर्भ

  • sqlite.org/src टैग version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/resolve.c lookupName कोलेस्क रीराइट और AuthRead गेट
  • src/auth.c sqlite3AuthRead / sqlite3AuthReadCol
  • फ़ोरम 2026-07-24T02:52:08Z / 2026-05-31T02:00:37Z
टूल डाउनलोड करें