Версии Snipe-IT с 8.2.0 по 8.6.x (исправленные в 8.7.0) содержат неверную ошибку авторизации в app/Http/Controllers/Users/UsersController::update(). Маршрут однопользовательского редактирования назначает активированное поле из полезных данных запроса перед оценкой шлюза авторизации canEditAuthFields, поэтому аутентифицированный пользователь, не являющийся администратором, обладающий разрешениемusers.edit в области целевой компании, может отправить полный действительный запрос PUT в /users/{id} и переключить активированный флаг для любого пользователя, включая учетные записи администратора и суперпользователя. Деактивация администратора блокирует эту учетную запись в приложении до тех пор, пока другой администратор или суперпользователь не включит ее повторно.
Затрагивается только активированное поле; имя пользователя, адрес электронной почты, пароль и разрешения остаются защищенными шлюзом, никакие данные не раскрываются, а API (Api\UsersController::update) и пути массового редактирования не затрагиваются.
Показать оригинальное описание (EN)
Snipe-IT versions 8.2.0 through 8.6.x (fixed in 8.7.0) contain an incorrect authorization flaw in app/Http/Controllers/Users/UsersController::update(). The single-user edit route assigned the activated field from the request payload before evaluating the canEditAuthFields authorization gate, so an authenticated non-admin user holding the users.edit permission in the target's company scope can submit a full valid PUT request to /users/{id} and toggle the activated flag on any user, including admin and superuser accounts. Deactivating an admin locks that account out of the application until another admin or superuser re-enables it. Only the activated field is affected; username, email, password and permissions remain protected by the gate, no data is disclosed, and the API (Api\UsersController::update) and bulk-edit paths are not affected.
Характеристики атаки
Последствия
Строка CVSS v4.0