Детерминированное выявление и автокомпиляция защиты от внедрения команд в табличное хранилище
Злоумышленник прячет чужую команду внутри обычной строки поиска, чтобы выгрузить чужие записи или стереть таблицу. Программный фильтр на проводе перехватывает команды удаления таблиц до отправки в сеть, доказывает брешь безопасным контрольным запросом и за 10 микросекунд выпускает готовое правило блокировки.
Внедрение сторонних выражений в запросы реляционного хранилища возникает там, где входная строка пользователя подставляется напрямую в текст команды вместо передачи через типизированный параметр. Обычные сканеры посылают сотни слепых проверок в работающий узел, что нередко портит записи в тестовой таблице и порождает десятки ложных срабатываний на типовых страницах ошибок.
1. Наглядная схема работы фильтра и компилятора для INJ-SQL
Схема прохождения проверки по классу INJ-SQL: от формирования проверочной пары и перехвата разрушительных команд правилом SEC-ZD-SQL-01 до фиксации свидетеля 85de2412c34d4965 и выпуска правила IMMUNE-SQL-85DE2412.
2. Перехват опасных мутаций и парный контроль обманкой (INJ-SQL)
При проверке на испытательном стенде каждый исходящий запрос сначала проходит через программный фильтр в пути трафика до попадания в сетевой сокет. Любая проба, содержащая команды удаления таблиц, очистки журналируемых записей или стирания строк без безопасного условия, принудительно останавливается правилом SEC-ZD-SQL-01.
Для математического подтверждения бреши без риска для таблиц испытатель сопоставляет ответ на безопасный логический запрос с ответом защищённой контрольной ручки-обманки, имеющей те же имена параметров. На выборке из четырёх сценариев стенда (две уязвимые точки и два параметризованных контрольных образца) получено два истинно положительных решения и два истинно отрицательных при полном отсутствии ложных тревог и пропусков.
Код класса: INJ-SQL (sql_injection)
Режим проверки: Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд: GET /api/v1/vuln/sqli/search?query=laptop' UNION SELECT username,password_hash FROM accounts--
Перехваченная мутация: DROP TABLE accounts; TRUNCATE audit_log;
Матрица на стенде: TP = 2, FP = 0, TN = 2, FN = 0 (FPR = 0,0%)
Правило фильтра: SEC-ZD-SQL-01
Хэш свидетеля: 85de2412c34d4965
Скомпилированный фильтр: IMMUNE-SQL-85DE2412 (время синтеза 10 µs)
3. Автоматический выпуск защитного правила IMMUNE-SQL-85DE2412
Сразу после записи формального свидетеля 85de2412c34d4965 в журнал по ГОСТ Р 34.11-2012 компилятор выпускает защитное правило IMMUNE-SQL-85DE2412 для перехватчика mcp-sentinel. Повторные обращения с конструкциями объединения выборок или пакетными командами отсекаются за 0,016 миллисекунды в памяти процесса.
4. Соседние классы проверки на стенде INDRA
INJ-CMD: Внедрение команд операционной системыDIR-TRV: Обход каталога файловой системыAUTH-BOLA: Неправомерный доступ к клиентским записямSSRF-INT: Подделка серверных запросов и обход через перенаправленияSEC-LEAK: Утечка аутентификационных токенов и секретовHDR-SEC: Отсутствие защитных заголовков ответаDOS-RSRC: Истощение вычислительных ресурсов (лабораторный режим)