
Frappe Framework v15.72.4 में frappe.client.get_value API एंडपॉइंट के fieldname पैरामीटर के माध्यम से SQL इंजेक्शन भेद्यता पाई गई।
📌 सारांश
Frappe Framework v15.72.4 में frappe.client.get_value API एंडपॉइंट में एक टाइम-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता पाई गई है (और ERPNext v15.67.0 कोडबेस में मौजूद है)। reporting/client API तक पहुँच रखने वाला एक प्रमाणित उपयोगकर्ता fieldname पैरामीटर के माध्यम से SQL इंजेक्ट कर सकता है। fieldname पैरामीटर में टाइम-डिले फ़ंक्शन (जैसे, sleep(15)) डालकर, एक हमलावर मापने योग्य प्रतिक्रिया विलंबों के माध्यम से इंजेक्शन की पुष्टि कर सकता है — जिससे denial of service, सूचना प्रकटीकरण (ब्लाइंड तकनीकों के माध्यम से), और डेटा हेरफेर संभव हो जाता है।
भेद्यता प्रकार: SQL इंजेक्शन (टाइम-आधारित ब्लाइंड) (CWE‑89)
प्रभावित उत्पाद: Frappe Framework / ERPNext
प्रभावित संस्करण (रिपोर्ट किए गए):
प्रभावित घटक: frappe.client.get_value API विधि (frappe/client.py)
संवेदनशील एंडपॉइंट:
/api/method/frappe.client.get_value
संवेदनशील क्वेरी का उदाहरण:
/api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
संवेदनशील पैरामीटर: fieldname (अनुचित रूप से सैनिटाइज़ किया गया / SQL में संयोजित)
हमले का प्रकार: रिमोट (प्रमाणीकरण और reporting API तक पहुँच आवश्यक)
गंभीरता: उच्च (टाइम-आधारित ब्लाइंड SQLi डेटा एक्सफिल्ट्रेशन, DoS और हेरफेर सक्षम बनाता है)
अनुमानित CVSS v3.1 स्कोर: 8.0 (उच्च) — अनुमान रिमोट प्रमाणीकरण-आवश्यक SQL इंजेक्शन पर आधारित है जो डेटा प्रकटीकरण और DoS सक्षम करता है; आधिकारिक स्कोरिंग असाइनर्स द्वारा की जानी चाहिए।
स्थिति: ठीक नहीं किया गया (जैसा रिपोर्ट किया गया है)
खोजकर्ता: मोहम्मद अलोली (GitHub: https://github.com/MoAlali)
खोज की तिथि: रिपोर्ट में निर्दिष्ट नहीं है
CVE ID: CVE-2025-56380
केवल अधिकृत / लैब वातावरण में परीक्षण करें। उन सिस्टमों पर न चलाएँ जिनके मालिक आप नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है।
PoC अनुरोध (उदाहरण):

GET /api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
पुष्टि के चरण
+%2F+sleep(15)+& पेलोड को हटाएँ और देखें कि प्रतिक्रिया तुरंत लौटती है — यह पुष्टि करता है कि इंजेक्शन समय विलंब का कारण बनता है।नोट: DB इंजन के आधार पर sleep(15) को बैकएंड DBMS के अनुरूप अन्य समय फ़ंक्शन या समय मानों से बदलें (जैसे, PostgreSQL के लिए pg_sleep(n))। PoC टाइमिंग के माध्यम से ब्लाइंड इंजेक्शन प्रदर्शित करता है; डेटा बिट-दर-बिट निकालने के लिए अधिक जटिल पेलोड का उपयोग किया जा सकता है।
हमले का वेक्टर: प्रमाणित उपयोगकर्ता SQL पेलोड (टाइम डिले फ़ंक्शन) युक्त एक दुर्भावनापूर्ण fieldname पैरामीटर के साथ /api/method/frappe.client.get_value पर GET अनुरोध तैयार करता है।
प्रभाव:
fieldname और सभी उपयोगकर्ता-आपूर्ति इनपुट कभी भी सीधे SQL में संयोजित न हों। पैरामीटरीकृत क्वेरी या ORM API का उपयोग करें जो पैरामीटर को ठीक से बाइंड करते हैं।sleep, pg_sleep, benchmark, /, ;) के लिए निगरानी करें।frappe.client.get_value और fieldname/फ़िल्टर को संभालने वाले कोड पथ का ऑडिट करना चाहिए, असुरक्षित संयोजन को सुरक्षित API से बदलना चाहिए, और एक सुरक्षा पैच जारी करना चाहिए। ऑपरेटरों को तुरंत अपडेट लागू करने चाहिए।https://github.com/MoAlali — X: https://x.com/alaliksa_ — LinkedIn: https://www.linkedin.com/in/mohammedaloli/https://github.com/frappe/frappe , https://github.com/frappe/erpnexthttps://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.htmlखोजकर्ता: मोहम्मद अलोली
यह जानकारी केवल रक्षात्मक और सुधार उद्देश्यों के लिए प्रदान की गई है। उन सिस्टमों के विरुद्ध इस भेद्यता का शोषण करने का प्रयास न करें जिनके मालिक आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है। ऑपरेटरों को पैचिंग को प्राथमिकता देनी चाहिए, सुरक्षित कोडिंग सुधार लागू करने चाहिए, और उपरोक्त शमन मार्गदर्शन का पालन करना चाहिए।