К обсуждениям

MantisBT: note_type проходит allowlist и permission check

Редакция VOne Технологии

Практическая защитная проверка MantisBT по ghsa-4vpf-w7qv-5h3q: применимость, обратимый тест границы «валидацию TIME_TRACKING и REMINDER note_type перед bugnote_add во всех API», измеримый результат и stop-rule без production-данных.

Применимость к MantisBT

Отделите наличие зависимости от достижимости конкретной функции в рабочем процессе. Для границы «валидацию TIME_TRACKING и REMINDER note_type перед bugnote_add во всех API» запишите версию живого процесса, build digest, источник пакета, включённую функцию и субъект, который вызывает этот путь. Reviewed Advisory перечисляет границы «mantisbt/mantisbt <= 2.28.3; first patched 2.28.4», однако запись в manifest ещё не доказывает установленную версию и reachability. Если provenance неполон, оставьте статус unknown. Not-applicable допустим только при доказанной версии вне affected range или документированно выключенной функции. Не переносите severity из advisory на свою среду без этих двух доказательств.

Что подтверждает GHSA-4vpf-w7qv-5h3q

GitHub Reviewed Advisory опубликована 2026-07-15, обновлена 2026-07-15 и описывает для MantisBT механизм: MantisBT: Injection of TIME_TRACKING and REMINDER Notes via REST and SOAP APIs. Подтверждённая package boundary: «mantisbt/mantisbt <= 2.28.3; first patched 2.28.4». Upstream-репозиторий https://github.com/mantisbt/mantisbt связывает запись с исходным проектом, но сам по себе не сообщает состояние конкретного развёртывания. Даты, summary и диапазоны взяты с прямой advisory-страницы https://github.com/advisories/GHSA-4vpf-w7qv-5h3q, а не из поискового сниппета. Эти источники не доказывают эксплуатацию, ущерб, популярность запроса, индексацию или позицию страницы.

Отдельная пользовательская боль и доказательство

Здесь проверяется ровно одна боль: обычный updater может создать специальную note и повлиять на billing report, если integer передаётся без policy. До любого запуска создайте артефакт «ledger api-channel / role / requested-note-type / permission / hours-delta / note-created» и заранее определите допустимые значения каждой колонки. Normal-control должен пройти на той же сборке, с теми же лимитами и через тот же кодовый путь. Один status code, исключение или отсутствие записи не является доказательством: нужны expected result, observed result, конфигурационная ветвь и cleanup. Маркеры не должны содержать токены, IP, реальные имена, документы, логи или внутренние адреса.

Безопасный обратимый тест

Подготовьте локальный issue, normal note, TIME_TRACKING marker, updater и разрешённая role с нулевыми часами. Затем нужно вызвать test handler с normal и специальным type, затем сверить authorization и отсутствие billing delta. Заранее заданный защитный исход: normal note следует базовой роли, специальные типы требуют отдельного permission и не меняют часы при отказе. Выполняйте опыт только локально или в одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и количества запросов. Не используйте production secrets, пользовательские данные, внешние цели или инструкции, пригодные для вторжения. Наблюдение ограничено выбранной границей и не выдаётся за аудит всего приложения. После проверки удалите fixtures, повторите normal-control и сравните итоговый digest с baseline.

Решение по наблюдаемым результатам

Passed фиксируется, когда одновременно выполнено: normal note следует базовой роли, специальные типы требуют отдельного permission и не меняют часы при отказе; normal-control сохранил ожидаемое поведение; cleanup вернул исходное состояние. Failed требует повторяемого расхождения на том же fixture и той же версии. Unknown остаётся при нестабильном trace, неполном provenance или неясной конфигурации. Результат оформляют как «ledger api-channel / role / requested-note-type / permission / hours-delta / note-created», чтобы другой инженер мог проверить вывод без догадок. Не расширяйте вывод с одной границы на всю систему и не обещайте абсолютную защищённость после одного опыта.

Стоп-правило, обновление и пакет поддержки

Критерий остановки задаётся до запуска: остановиться и удалить fixture при создании специальной note без нужного permission. Если runtime входит в affected range, получите обновление только из доверенного канала upstream https://github.com/mantisbt/mantisbt, зафиксируйте новый digest и повторите тот же fixture с прежними лимитами. Новый сценарий не подтверждает исправление старого. В обезличенный пакет поддержки включите runtime version, package boundary, конфигурационную ветвь, expected/observed, resource limits, timestamps, error class и хэши fixtures. Исключите credentials, cookies, абсолютные пути, внутренние hostname и содержимое данных.

Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.