Поэлементный контроль схем запросов и ответов для защиты от массового присваивания свойств
При обычном изменении имени в анкете пользователь дописывает в тело запроса скрытое поле с признаком администратора или суммой баланса, а сервер без разбора копирует все присланные поля в запись таблицы. Испытатель проверяет привязку свойств на учебной карточке и в автоматическом режиме выпускает строгий белый список полей.
Нарушение разграничения доступа на уровне свойств объекта объединяет две зеркальные ошибки: массовое присваивание при записи, когда прикладной каркас автоматически переносит все ключи входного пакета JSON в поля внутренней записи хранилища, и избыточную выдачу свойств при чтении, когда сервер возвращает клиенту полную выгрузку строки со служебными атрибутами.
Силовику и руководителю (без жаргона): Перехват «Persist unauthorized privilege attribute (is_admin, role, balance) into production ORM record or leak hidden fields» до сокета (0 вреда рабочей базе, готовая печать ГОСТ)
Техническому проверяющему (улика): Норма ГОСТ Р 56939-2024 §5.4.3; Приказ ФСТЭК России от 11.04.2025 № 117 п. 45 | Фильтр SEC-ZD-V2-02 | Свидетель d830a519c47e2064
Технократу, CTO и VC (математика): Инвариант Z3 (assert (and (subset (json_input_keys req) (allowed_write_... | FP = 0,0% | Правило IMMUNE-BOP-D830A519 (mcp-sentinel 1.1.2)
1. Схема перехвата на проводе и выпуска контракта для API-BOP-02
Инструментальный цикл проверки по классу API-BOP-02 (OWASP API3:2023 (BOPLA), CWE-915 / CWE-213): блокировка опасной мутации правилом SEC-ZD-V2-02 до сокета, фиксация свидетеля d830a519c47e2064 и выпуск контракта IMMUNE-BOP-D830A519 для шлюза mcp-sentinel.
2. Фильтр нулевого ущерба и формальный инвариант решателя для API-BOP-02
По правилу SEC-ZD-V2-02 программный фильтр на проводе допускает проверочную подстановку дополнительных атрибутов только для синтетических карточек полигона и блокирует любые попытки изменить реальные флаги полномочий, финансовые остатки или привязку к организации до отправки в сокет.
На испытательном стенде анализатор передаёт контрольное служебное свойство вместе с разрешёнными полями анкеты и сверяет состояние объекта с эталонной ручкой, применяющей жёсткую схему переноса полей. Факт несанкционированной записи или чтения скрытого атрибута подтверждается свидетелем d830a519c47e2064 без ложных тревог.
Код класса: API-BOP-02 (mass_assignment_bopla)
Международные матрицы: OWASP API3:2023 (BOPLA) | CWE-915 / CWE-213
Нормативная привязка: ГОСТ Р 56939-2024 §5.4.3; Приказ ФСТЭК России от 11.04.2025 № 117 п. 45
Режим проверки: Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд: PATCH /api/v1/users/me {"display_name":"Alex","is_admin":true,"account_balance":999999,"internal_tier":"enterprise_unlimited"}
Перехваченная мутация: Persist unauthorized privilege attribute (is_admin, role, balance) into production ORM record or leak hidden fields
Инвариант решателя Z3: (assert (and (subset (json_input_keys req) (allowed_write_props route role)) (subset (json_output_keys resp) (allowed_read_props route role))))
Правило фильтра: SEC-ZD-V2-02
Хэш свидетеля: d830a519c47e2064
Скомпилированный фильтр: IMMUNE-BOP-D830A519 (mcp-sentinel 1.1.2)
3. Автоматический выпуск защитного контракта IMMUNE-BOP-D830A519 и квитанция ГОСТ Р 34.11-2012
Из свидетеля d830a519c47e2064 в автоматическом режиме компилируется контракт IMMUNE-BOP-D830A519 для перехватчика mcp-sentinel. Правило проверяет входной набор ключей по белому списку для текущей роли и вырезает неодобренные служебные поля из исходящего ответа.
4. Инженерные разъяснения по проверке и закрытию класса API-BOP-02
Отличие пообъектной проверки доступа от контроля отдельных свойств записи
Пользователь имеет полное право редактировать собственную карточку профиля как объект в целом, но не вправе менять внутри этой же карточки служебные поля роли, тарифа или лимита операций.
Автоматическая очистка ответов сервера от скрытых служебных полей
На выходе из защищаемого узла контракт сопоставляет структуру ответа с утверждённой схемой представления и удаляет внутренние идентификаторы, отпечатки паролей и технические пометки до отправки пакета клиенту.