Wekan — это канбан с открытым исходным кодом, созданный с помощью Meteor. До версии 10.38 обработчики /api/boards/:boardId/export, /api/boards/:boardId/attachments/:attachmentId/export, /api/boards/:boardId/export/csv и /api/boards/:boardId/exportExcel в models/export.js и models/exportExcel.js искали пользователя из контролируемого злоумышленником параметр запроса authToken и немедленно вызывает user._id.toString() без проверки, вернул ли ReactiveCache.getUser() неопределенный результат. Таким образом, запрос на частную доску с неизвестным токеном вызвал ошибку TypeError на асинхронном маршруте, что привело к необработанному отклонению, которое могло завершить процесс Wekan и отказать в обслуживании всем пользователям.
Версия 10.38 добавляет защиту 401 после каждого поиска токена экспорта и оборачивает обработчики экспорта с помощью SafeRoute(), поэтому неожиданные исключения становятся контролируемыми ответами. Эта проблема исправлена в версии 10.38.
Показать оригинальное описание (EN)
Wekan is open source kanban built with Meteor. Prior to 10.38, the /api/boards/:boardId/export, /api/boards/:boardId/attachments/:attachmentId/export, /api/boards/:boardId/export/csv, and /api/boards/:boardId/exportExcel handlers in models/export.js and models/exportExcel.js looked up a user from the attacker-controlled authToken query parameter and immediately called user._id.toString() without checking whether ReactiveCache.getUser() returned undefined. A request for a private board with an unknown token therefore threw a TypeError from an asynchronous route, producing an unhandled rejection that could terminate the Wekan process and deny service to all users. Version 10.38 adds a 401 guard after every export token lookup and wraps export handlers with safeRoute() so unexpected exceptions become controlled responses. This issue is fixed in version 10.38.
Характеристики атаки
Последствия
Строка CVSS v3.1