
# CVE-2026-3494 का पुनरुत्पादन और विश्लेषण MariaDB server_audit प्लगइन में ऑडिट लॉगिंग बायपास (CVE-2026-3494) का पुनरुत्पादन और विश्लेषण करता है, जिसमें Docker-आधारित मल्टी-वर्जन परीक्षण का उपयोग करके कमजोर और पैच किए गए संस्करणों में लॉगिंग व्यवहार की तुलना की जाती है।
यह प्रोजेक्ट MariaDB server_audit प्लगइन में संभावित ऑडिट लॉगिंग बायपास को सत्यापित और विश्लेषित करने के लिए एक विशेष वातावरण प्रदान करता है, जब SQL क्वेरीज़ में विशिष्ट इनलाइन टिप्पणियाँ (#, --) उपयोग की जाती हैं।
SET PASSWORD या Error 1046 मामले) MariaDB v11.8.6 में ऑडिट लॉग में दर्ज होने में विफल रहती हैं, जिसे पहले एक पैच किया गया संस्करण माना जाता था।#) DCL स्टेटमेंट्स को ऑडिटर द्वारा अनुचित रूप से संसाधित या अनदेखा करने का कारण बन सकती हैं।server_audit को QUERY_DCL, QUERY_DDL, और QUERY_DML जैसे फ़िल्टर के साथ सक्षम किया जाता है, तो इनलाइन टिप्पणियों वाली कुछ क्वेरीज़ लॉगिंग तंत्र को बायपास कर सकती हैं।निम्नलिखित मैट्रिक्स परीक्षण के दौरान देखे गए लॉगिंग व्यवहार का सारांश प्रस्तुत करता है:
[MariaDB 10.3.39 / 11.8.5]
- CASE #1, #2A, #2B, #3, #4 → सभी LOGGED (सामान्य व्यवहार)
[MariaDB 11.8.6 (लक्ष्य संस्करण)]
- CASE #2B (Error 1046) → NOT LOGGED (लॉगिंग चूक) ❗
- CASE #3 (टिप्पणी सहित SET PASSWORD) → NOT LOGGED (लॉगिंग चूक) ❗
- CASE #1, #2A, #4 → LOGGED (सामान्य व्यवहार)
यह प्रोजेक्ट तीन अलग-अलग MariaDB इंस्टेंस चलाने के लिए Docker Compose का उपयोग करता है:
| संस्करण | पोर्ट | स्थिति | विवरण |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | भेद्य | लीगेसी स्थिर संस्करण सत्यापन |
| MariaDB 11.8.5 | 3307 | भेद्य | नवीनतम भेद्य संस्करण सत्यापन |
| MariaDB 11.8.6 | 3308 | लक्ष्य | हाल के ऑडिट लॉगिंग परिवर्तनों का मूल्यांकन |
MariaDB कंटेनर बनाएं और प्रारंभ करें। वातावरण स्वचालित रूप से server_audit प्लगइन कॉन्फ़िगर करता है और परीक्षण उपयोगकर्ताओं को प्रारंभ करता है।
# कंटेनर बनाएं और प्रारंभ करें
docker compose up --build -d
# कंटेनर स्थिति सत्यापित करें
docker ps
आवश्यक Python निर्भरताएँ स्थापित करें:
pip install pymysql
स्क्रिप्ट को प्रोजेक्ट के किसी भी निर्देशिका से निष्पादित किया जा सकता है।
python poc/poc.py
PoC 5 अलग-अलग परिदृश्य करता है:
# टिप्पणी के साथ SET PASSWORD कमांड (बायपास जांच)।# टिप्पणी के साथ SELECT स्टेटमेंट (बायपास जांच)।LOGGED: क्वेरी ऑडिट लॉग में सफलतापूर्वक दर्ज की गई।NOT LOGGED: क्वेरी लॉग से छोड़ दी गई (संभावित बायपास या प्रतिगमन)।>> वास्तविक लॉग: दर्ज किए गए स्टेटमेंट की अखंडता को सत्यापित करने के लिए server_audit.log से कच्ची प्रविष्टि नीले रंग में प्रदर्शित करता है।नीचे वास्तविक निष्पादन लॉग हैं जो अपेक्षित व्यवहार (11.8.5) और लॉगिंग चूक (11.8.6) के बीच अंतर दिखाते हैं।
[+] TEST_CASE_2_B_ERROR_1046
परिणाम: LOGGED
>> वास्तविक लॉग: | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
परिणाम: LOGGED
>> वास्तविक लॉग: | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (कोई डेटाबेस चयनित नहीं)
परिणाम: NOT LOGGED <-- चूक का पता चला
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (इनलाइन टिप्पणी #)
परिणाम: NOT LOGGED <-- चूक का पता चला
[!TIP] सभी परीक्षण मामलों और संस्करणों के पूर्ण टर्मिनल आउटपुट के लिए, पूर्ण निष्पादन लॉग देखें।
.
├── config/ # MariaDB server_audit कॉन्फ़िगरेशन
├── init/ # प्रारंभिकरण स्क्रिप्ट (उपयोगकर्ता और प्लगइन सेटअप)
├── logs/ # ऑडिट लॉग वॉल्यूम माउंट
├── poc/
│ └── poc.py # स्वचालित सत्यापन स्क्रिप्ट
├── results/
│ └── full_execution_log.md # विस्तृत टर्मिनल आउटपुट लॉग
├── docker-compose.yml # बहु-संस्करण वातावरण परिभाषा
└── README.md # प्रोजेक्ट दस्तावेज़ीकरण (वर्तमान फ़ाइल)
यह प्रोजेक्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए है। इसका जिम्मेदारी से उपयोग करें और पूर्ण परीक्षण के बिना इन कॉन्फ़िगरेशन को उत्पादन वातावरण में लागू न करें।