Wekan — это канбан с открытым исходным кодом, созданный с помощью Meteor. До версии 9.90 функция isFileValid() в models/fileValidation.js использовала команду Unix file для обнаружения MIME на основе содержимого, но метод defineMimeFromFile() молча возвращал undefine, когда этот двоичный файл был недоступен, и проверка возвращалась к контролируемому злоумышленником fileObj.type, предоставленному через server/routes/attachmentApi.js. В развертываниях с CAN_API=true и без двоичного файла аутентифицированный член совета может пометить HTML, содержащий JavaScript, как image/png, обойти опасную проверку MIME и сохранить активный контент в источнике Wekan для выполнения, когда его откроет другой пользователь.
В версии 9.90 добавлена функция LookLikeDangerousMarkup() для проверки байтов файла и принудительного сканирования опасного содержимого, когда обнаружение MIME недоступно. Эта проблема исправлена в версии 9.90.
Показать оригинальное описание (EN)
Wekan is open source kanban built with Meteor. Prior to 9.90, isFileValid() in models/fileValidation.js used the Unix file command for content-based MIME detection, but detectMimeFromFile() silently returned undefined when that binary was unavailable and the validation fell back to the attacker-controlled fileObj.type supplied through server/routes/attachmentApi.js. On deployments with WITH_API=true and no file binary, an authenticated board member could label HTML containing JavaScript as image/png, bypass the dangerous MIME check, and store active content under the Wekan origin for execution when another user opened it. Version 9.90 adds looksLikeDangerousMarkup() to inspect file bytes and force dangerous-content scanning when MIME detection is unavailable. This issue is fixed in version 9.90.
Характеристики атаки
Последствия
Строка CVSS v3.1