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 को छोड़ देता है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - sqlite-fj-using-auth

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

sqlite-fj-using-auth

Class: Privilege leftover Reach: Local

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 कॉलबैक नहीं मिलता। एक embedder जिसने 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 नहीं
ClassPrivilege leftover (कॉलम-स्तरीय authorizer स्किप)
ReachLocal (embedder sqlite3_set_authorizer; हमलावर SQL)
CWECWE-863, CWE-284
CVSSHigh: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProductSQLite (GitHub मिरर sqlite/sqlite)
Affected3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)। केवल 3.54 में मौजूद authorizer FULL JOIN USING फिक्स (2cb2287768) इस GA पर नहीं है।
Authembedder ने sqlite3_set_authorizer इंस्टॉल किया; डिफ़ॉल्ट कॉलबैक NULL है
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1:18840। Witness स्ट्रिंग। RCE नहीं।

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

एक embedder के विरुद्ध जिसने कॉलम 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 तब तक बंद रहता है जब तक embedder इसे इंस्टॉल न करे। डिफ़ॉल्ट sqlite3_open इस अवशेष से प्रभावित नहीं है। RCE नहीं।

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

PHP के बाद 3.53.4 की बीस स्रोत खोजें। Skip सूची में पहले से ही 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 को पिन करना जबकि यह अभी भी ड्राफ्ट था।

Lab

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 बेसलाइन 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

समाधान

coalesce रीराइट के बाद प्रत्येक pFJMatch चाइल्ड पर sqlite3AuthRead को लूप करें, जैसा कि trunk 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 coalesce रीराइट और AuthRead गेट
  • src/auth.c sqlite3AuthRead / sqlite3AuthReadCol
  • फ़ोरम 2026-07-24T02:52:08Z / 2026-05-31T02:00:37Z
टूल डाउनलोड करें