Дифференциальная проверка прав доступа к клиентским записям и выпуск контракта
Пользователь меняет номер счёта в адресной строке с 1001 на 1002 и видит чужой документ, потому что сервер проверил вход в систему, но не сверил владельца записи. Испытатель проверяет разграничение между двумя учебными учётными записями стенда и выпускает правило привязки объекта к владельцу.
Нарушение разграничения доступа на уровне объектов возникает, когда программный интерфейс проверяет подлинность токена сессии, но не сверяет принадлежность запрашиваемого идентификатора записи конкретному пользователю. При последовательной нумерации документов подмена одного числа в адресе запроса открывает доступ к карточкам соседних клиентов.
1. Наглядная схема работы фильтра и компилятора для AUTH-BOLA
Схема прохождения проверки по классу AUTH-BOLA: от формирования проверочной пары и перехвата разрушительных команд правилом SEC-ZD-AUTH-01 до фиксации свидетеля e3ff9c8cdc04a3d1 и выпуска правила IMMUNE-BOLA-E3FF9C8C.
2. Перехват опасных мутаций и парный контроль обманкой (AUTH-BOLA)
Программный фильтр по правилу SEC-ZD-AUTH-01 разрешает только чтение заранее созданных синтетических карточек тестового полигона. Запросы на удаление объектов, изменение реквизитов оплаты или повышение полномочий перехватываются до обращения к сокету.
Испытатель проводит перекрёстную сверку полномочий: запрашивает синтетический документ 1002 с заголовком сессии пользователя 1001 и сопоставляет ответ с защищённой ручкой, проверяющей владельца строки в таблице. На четырёх сценариях стенда получено два истинно положительных и два истинно отрицательных решения.
Код класса: AUTH-BOLA (idor_bola)
Режим проверки: Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд: GET /api/v1/vuln/bola/invoice/1002 (Header: X-Tenant-User: user_1001)
Перехваченная мутация: DELETE /api/v1/vuln/bola/invoice/1002; PATCH /api/v1/accounts/role
Матрица на стенде: TP = 2, FP = 0, TN = 2, FN = 0 (FPR = 0,0%)
Правило фильтра: SEC-ZD-AUTH-01
Хэш свидетеля: e3ff9c8cdc04a3d1
Скомпилированный фильтр: IMMUNE-BOLA-E3FF9C8C (время синтеза 20 µs)
3. Автоматический выпуск защитного правила IMMUNE-BOLA-E3FF9C8C
На основании свидетеля e3ff9c8cdc04a3d1 компилятор за 20 микросекунд выпускает правило IMMUNE-BOLA-E3FF9C8C. Сформированный контракт требует совпадения идентификатора субъекта сессии с владельцем запрашиваемого ресурса до передачи вызова обработчику.
4. Соседние классы проверки на стенде INDRA
INJ-SQL: Внедрение кода в запросы реляционного хранилищаINJ-CMD: Внедрение команд операционной системыDIR-TRV: Обход каталога файловой системыSSRF-INT: Подделка серверных запросов и обход через перенаправленияSEC-LEAK: Утечка аутентификационных токенов и секретовHDR-SEC: Отсутствие защитных заголовков ответаDOS-RSRC: Истощение вычислительных ресурсов (лабораторный режим)