
Concrete CMS में get_rating एंडपॉइंट पर प्राधिकरण की कमी के कारण conversation ratings को उजागर करने वाले IDOR के लिए सुरक्षा विवरण, जिसमें मूल कारण, हमला परिदृश्य और समाधान शामिल हैं।
CVE-2026-8239 एक Insecure Direct Object Reference (IDOR) भेद्यता है जो Concrete CMS 9.5.0 और उससे पहले के संस्करणों को प्रभावित करती है। यह भेद्यता /ccm/frontend/conversations/get_rating एंडपॉइंट में मौजूद है। यह एंडपॉइंट एक हमलावर को मनमाना message ID प्रदान करके यह निर्धारित करने और उसका रेटिंग स्कोर प्राप्त करने की अनुमति देता है कि कोई कन्वर्सेशन संदेश मौजूद है या नहीं। एंडपॉइंट अनुरोधित जानकारी लौटाने से पहले उचित प्राधिकरण जाँच करने में विफल रहता है।
उत्पाद: Concrete CMS प्रभावित संस्करण: 9.5.0 और उससे पहले समाधान संस्करण: 9.5.1 एंडपॉइंट: /ccm/frontend/conversations/get_rating
भेद्यता प्रकार श्रेणी: Insecure Direct Object Reference (IDOR) CWE-862: अनुपलब्ध प्राधिकरण
एंडपॉइंट क्लाइंट से एक message ID स्वीकार करता है और उस संदेश के बारे में जानकारी लौटाता है, बिना यह सत्यापित किए कि अनुरोध करने वाला उपयोगकर्ता उसे एक्सेस करने के लिए अधिकृत है या नहीं।
स्वामित्व या अनुमतियों को मान्य करने के बजाय, एप्लिकेशन उपयोगकर्ता द्वारा प्रदान किए गए पहचानकर्ता पर भरोसा करता है।
अवधारणात्मक रूप से:
उपयोगकर्ता messageId प्रदान करता है ↓ सर्वर संदेश का पता लगाता है ↓ कोई प्राधिकरण जाँच नहीं ↓ संदेश रेटिंग लौटाता है
क्योंकि प्राधिकरण जाँच अनुपस्थित है, एक हमलावर message IDs को सूचीबद्ध कर सकता है और उन कन्वर्सेशन के बारे में जानकारी प्राप्त कर सकता है जिन्हें उसे एक्सेस नहीं करना चाहिए।
मान लीजिए कि एप्लिकेशन कन्वर्सेशन संदेशों को संख्यात्मक IDs के साथ संग्रहीत करता है।
एक वैध अनुरोध निम्नलिखित का संदर्भ दे सकता है:
GET /ccm/frontend/conversations/get_rating?messageId=125
एक हमलावर आसानी से पहचानकर्ता को संशोधित कर सकता है:
GET /ccm/frontend/conversations/get_rating?messageId=126
यदि एप्लिकेशन 403 Forbidden या 404 Not Found लौटाने के बजाय रेटिंग स्कोर के साथ प्रतिक्रिया करता है, तो हमलावर पुष्टि कर सकता है कि संदेश मौजूद है और उसकी रेटिंग जानकारी प्राप्त कर सकता है।
यह एक क्लासिक IDOR है क्योंकि केवल ऑब्जेक्ट पहचानकर्ता बदलता है—कोई दुर्भावनापूर्ण पेलोड या इंजेक्ट किए गए कमांड की आवश्यकता नहीं होती है।
एक हमलावर यह कर सकता है:
वैध कन्वर्सेशन message IDs को सूचीबद्ध करना। यह पुष्टि करना कि विशिष्ट संदेश मौजूद हैं या नहीं। उन संदेशों के लिए रेटिंग स्कोर प्राप्त करना जिन्हें एक्सेस करने के लिए वे अधिकृत नहीं हैं। निजी कन्वर्सेशन के बारे में सीमित जानकारी प्राप्त करना।
यह भेद्यता मुख्य रूप से गोपनीयता को प्रभावित करती है, क्योंकि अनधिकृत उपयोगकर्ता उस जानकारी तक पहुँच सकते हैं जो सुरक्षित होनी चाहिए।
मेट्रिक स्कोर CVSS v3.1 (NVD) 5.3 – मध्यम CVSS v4.0 (Concrete CMS CNA) 6.3 – मध्यम
विक्रेता ने वास्तविक भेद्य सोर्स कोड प्रकाशित नहीं किया है। निम्नलिखित उदाहरण केवल भेद्यता पैटर्न को दर्शाता है।
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
// No authorization check return response()->json([ 'rating' => $message->getRating() ]);
एप्लिकेशन संदेश को केवल उपयोगकर्ता द्वारा प्रदान किए गए ID के आधार पर प्राप्त करता है और तुरंत उसकी रेटिंग लौटाता है। यह कभी जाँच नहीं करता कि वर्तमान उपयोगकर्ता उस संदेश को एक्सेस करने के लिए अधिकृत है या नहीं।
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
if (!$authorizationService->canViewMessage($currentUser, $message)) { return response()->json([ 'error' => 'Access denied.' ], 403); }
return response()->json([ 'rating' => $message->getRating() ]);
संशोधित कार्यान्वयन रेटिंग लौटाने से पहले यह सत्यापित करता है कि प्रमाणित उपयोगकर्ता के पास अनुरोधित संदेश को देखने की अनुमति है या नहीं। भले ही कोई हमलावर messageId बदल दे, सर्वर प्राधिकरण लागू करता है और अनधिकृत अनुरोधों को HTTP 403 Forbidden प्रतिक्रिया के साथ अस्वीकार कर देता है। यह IDOR को रोकता है, यह सुनिश्चित करके कि उपयोगकर्ता केवल उन्हीं संसाधनों तक पहुँच सकते हैं जिन्हें देखने की उन्हें अनुमति है।