ТОМ II · ПРИКЛАДНОЙ И ИНФРАСТРУКТУРНЫЙ ПЕНТЕСТИНГ | API-RAC-03 (OWASP API6:2023 / CWE-367)

Синхронное тестирование зазора параллельных транзакций и выпуск контракта идемпотентности

1. ПРОСТЫМИ СЛОВАМИ — БЕЗОПАСНИКУ, СИЛОВИКУ И КОМИССИИ (БЕЗ ЖАРГОНА)

Злоумышленник отправляет десяток одинаковых запросов на вывод средств или погашение одноразового купона одним параллельным пакетом, чтобы все они успели пройти проверку остатка до записи первого списания. Испытатель проверяет очерёдность параллельных обращений на учебном счётчике и в автоматическом режиме выпускает правило пообъектной блокировки.

2. ПРИБОРНАЯ БАЗА — ТЕХНИЧЕСКОМУ ПРОВЕРЯЮЩЕМУ, РЕВИЗОРУ И ИНЖЕНЕРУ

Уязвимость зазора между проверкой условия и изменением записи (TOCTOU) возникает там, где сервис сначала считывает остаток счёта, лимит квоты или статус одноразового кода, а само изменение записи фиксирует отдельным шагом без строгой блокировки строки или сериализуемой транзакции. При одновременной подаче пачки запросов в одном сетевом кадре несколько рабочих потоков проходят условие проверки прежде, чем первый из них обновит значение в таблице.

3. СВОДКА НА ТРЁХ ЯЗЫКАХ АУДИТОРИИ (API-RAC-03 · БЕЗОПАСНИК / РЕВИЗОР / ТЕХНОКРАТ VC)
Силовику и руководителю (без жаргона): Перехват «Execute unisolated double-spend balance withdrawal or duplicate ledger write on production tables» до сокета (0 вреда рабочей базе, готовая печать ГОСТ)
Техническому проверяющему (улика):     Норма ГОСТ Р 57580.1-2017 §6.3; ГОСТ Р 56939-2024 §5.5.4 | Фильтр SEC-ZD-V2-03 | Свидетель 4c91e720b38d51a6
Технократу, CTO и VC (математика):     Инвариант Z3 (assert (forall ((t1 Tx) (t2 Tx)) (=> (and (= (resource_ke... | FP = 0,0% | Правило IMMUNE-RAC-4C91E720 (mcp-sentinel 1.1.2)

1. Схема перехвата на проводе и выпуска контракта для API-RAC-03

СХЕМА ПЕРЕХВАТА И ДОКАЗАТЕЛЬСТВА БЕЗ УЩЕРБА ДЛЯ КЛАССА API-RAC-03 (OWASP API6:2023 / CWE-367) Пакет параллельных вызовов Зазор между проверкой и списанием Фильтр SEC-ZD-V2-03 Только учебный счёт стенда Свидетель 4c91e720 Свидетель расхождения состояния Правило IMMUNE-RAC-4C91E720 Ключ идемпотентности и мьютекс

Инструментальный цикл проверки по классу API-RAC-03 (OWASP API6:2023 / CWE-367, CAPEC-29 / TOCTOU): блокировка опасной мутации правилом SEC-ZD-V2-03 до сокета, фиксация свидетеля 4c91e720b38d51a6 и выпуск контракта IMMUNE-RAC-4C91E720 для шлюза mcp-sentinel.

2. Фильтр нулевого ущерба и формальный инвариант решателя для API-RAC-03

По правилу SEC-ZD-V2-03 программный фильтр на проводе удерживает синхронные пачки запросов строго в пределах изолированного учебного счётчика стенда и блокирует параллельные операции изменения состояния на рабочих расчётных таблицах до передачи в сокет.

На испытательном стенде анализатор подаёт барьерную серию одновременных вызовов на уязвимый обработчик без блокировки и на контрольную ручку с транзакционной очередью. Превышение однократного порога срабатывания фиксируется формальным свидетелем 4c91e720b38d51a6 при нулевом числе ложных тревог.

ПАСПОРТНЫЕ ПАРАМЕТРЫ КЛАССА API-RAC-03 (ТОМ II · КАТАЛОГ ВЕКТОРОВ INDRA)
Код класса:              API-RAC-03 (race_conditions_toctou)
Международные матрицы:   OWASP API6:2023 / CWE-367 | CAPEC-29 / TOCTOU
Нормативная привязка:    ГОСТ Р 57580.1-2017 §6.3; ГОСТ Р 56939-2024 §5.5.4
Режим проверки:          Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд:        POST /api/v1/coupons/redeem [HTTP/2 Single-Packet Parallel Burst x16, idempotency_key: missing, code: "PROMO_ONCE_500"]
Перехваченная мутация:   Execute unisolated double-spend balance withdrawal or duplicate ledger write on production tables
Инвариант решателя Z3:   (assert (forall ((t1 Tx) (t2 Tx)) (=> (and (= (resource_key t1) (resource_key t2)) (overlapping_window t1 t2)) (= (serialized_mutex_acquired t1 t2) true))))
Правило фильтра:         SEC-ZD-V2-03
Хэш свидетеля:           4c91e720b38d51a6
Скомпилированный фильтр: IMMUNE-RAC-4C91E720 (mcp-sentinel 1.1.2)

3. Автоматический выпуск защитного контракта IMMUNE-RAC-4C91E720 и квитанция ГОСТ Р 34.11-2012

На основании свидетеля 4c91e720b38d51a6 компилятор в автоматическом режиме выпускает правило IMMUNE-RAC-4C91E720 для перехватчика mcp-sentinel. Контракт требует обязательного ключа идемпотентности в заголовке и выстраивает параллельные запросы одного субъекта к одному ресурсу в строгую очередь в памяти процесса.

4. Инженерные разъяснения по проверке и закрытию класса API-RAC-03

Выявление узких окон гонки без создания лавинной сетевой нагрузки

Испытатель выравнивает отправку финальных байтов нескольких запросов по единому локальному барьеру, благодаря чему проверка параллельного зазора требует всего нескольких синхронных пакетов.

Защита унаследованных служб без переписывания транзакций внутри хранилища

Скомпилированное правило на входе в шлюз накладывает быструю блокировку в памяти по паре идентификатора клиента и целевого объекта, отсекая дублирующие вызовы до обращения к рабочей базе.