Читайте запрос так,
как его прочитает ваш backend.
И только потом решайте.
RedEyes — inline reverse-proxy файрвол веб-приложений. Он нормализует каждый запрос до той формы, которую приложение действительно выполнит, и затем объединяет над ней четыре движка детектирования. Всё работает целиком внутри вашей инфраструктуры.
Эти три числа — не маркетинг. Это пороги, ниже которых наш собственный релизный гейт отказывается выпускать сборку. Точные команды — ниже на этой странице.
Совпадение по шаблону — это не понимание.
WAF, построенный только на сигнатурах, сравнивает трафик со строками. Атакующие это знают и просто не отправляют эту строку. Они отправляют то, что значит для вашей базы ровно то же самое, а для регулярного выражения — ничего.
- Обычная
' OR 1=1--Сигнатура ловит - Двойное кодирование
%2527%20OR%25201%3D1Шаблон уже не совпадает - Разбита комментарием
'/**/OR/**/1=1--Шаблон уже не совпадает - Регистр + charset
%27%20oR%201%3d1%2d%2dШаблон уже не совпадает
Все четыре доходят до одной и той же тавтологии в базе. Буквальный шаблон ловит только первую.
Ужесточите — утонете в шуме
Расширьте правила, чтобы поймать варианты, и начнёт блокироваться легитимный трафик. Команда научится игнорировать алерты — а это то же самое, что их отсутствие.
Ослабьте — пропустите атаку
Сузьте ради тишины — и закодированный payload пройдёт насквозь. Статической настройки, которая одновременно безопасна и тиха, не существует.
Тело часто не проверяется
Тела сверх лимита размера, в нестандартной кодировке или сжатые нередко передаются вообще без инспекции — мимо файрвола, прямо в приложение.
Четыре этапа, одно решение.
Это не один набор правил. Проверенный временем открытый движок (Coraza / OWASP CRS) работает рядом с нашим нормализатором, семантическим разборщиком SQL/XSS и поведенческим скорером — и ни один из них не решает в одиночку.
Inline, перед приложением.
RedEyes завершает соединение до того, как его увидит ваш backend. Одно место для нормализации, одно для решения, одно для журнала.
Привести к исполняемой форме.
Многопроходное URL-, HTML-entity- и base64-декодирование, удаление комментариев, свёртка кодировок и канонизация пути — повторяются, пока запрос не перестанет меняться. Детекторы видят не орфографию атакующего, а только смысл.
Оценивают четыре движка.
Отобранные сигнатуры, OWASP Core Rule Set через Coraza, семантический разборщик SQL/XSS libinjection и поведенческий скорер аномалий. Каждый возвращает оценку, а не вердикт.
Подтвердить, затем действовать.
Взвешенное объединение сводит оценки, а гейт подтверждения требует согласия перед блокировкой — так одно шумное правило не заблокирует ваших клиентов само по себе. Точным сигнатурам с высокой уверенностью разрешено блокировать в одиночку.
Каждое число здесь — гейт, который останавливает наш собственный релиз.
Вендоры безопасности публикуют процент обнаружения. Почти никто не публикует рядом число ложных срабатываний и то, что происходит со сборкой при регрессе. Это пороги в нашем CI: если изменение пересекает любой из них, оно не выходит — кто бы его ни написал.
| Измеряем | Сейчас | Гейт не пропустит ниже | На чём измерено |
|---|---|---|---|
| Ложные срабатывания | 0.00% | 0.00% | 1 121 легитимный запрос |
| Обнаружение атак | 100.00% | 100.00% | 244 размеченные атаки |
| Блокируется сразу | 98.36% | 95.00% | 244 размеченные атаки |
| Регрессии по CVE | 255 кейсов | 100% должны оставаться пойманными | 23 отслеживаемые CVE |
| Покрытие сигнатур | 184 / 184 | срабатывание каждого правила доказано | по одному кейсу на правило |
1 121 легитимный и 244 атакующих кейса, размещённые по сводной оценке. Два легитимных кейса оказываются ПРАВЕЕ линии блокировки — один на 0.9072 — и ни один не заблокирован. Оценка сама по себе здесь дала бы ложное срабатывание; для блокировки нужно ещё и подтверждение: два независимых детектора, либо точная сигнатура, либо семантический разборщик выше 0.97. Именно этот гейт делает долю 0.00%, а не оценка.
$ go run ./cmd/wafbench -corpus bench/corpus.json \
-gate -max-fp 0 -min-recall 95 -min-detect 100
FP 0.00% (max 0.00%)
block recall 98.36% (min 95.00%)
detect recall 100.00% (min 100.00%)
GATE PASSКорпуса и запускатор гейтов поставляются в нашем дереве разработки. Та же команда выполняется и в CI, и на ноутбуке.
Есть ещё храповик: список известных ложных срабатываний может только сокращаться. Изменение, добавляющее хотя бы одно, роняет сборку, даже если все остальные числа улучшились.
Что на самом деле стоит на пути запроса.
Всё в этом списке применяется в data plane, а не просто настраивается в панели. Мы проверили.
Детектирование
Глубокая нормализация
Многопроходное декодирование, удаление комментариев, свёртка кодировок и канонизация пути — пока запрос не достигнет неподвижной точки.
Гибридное объединение
Сигнатуры + OWASP CRS + libinjection + поведенческие аномалии, сведённые под гейтом подтверждения.
Инспекция тела запроса
Тело буферизуется в пределах лимита и разбирается так, как его разбирает backend — JSON, form, multipart, XML.
Виртуальный патчинг
Корпус регрессий по CVE с реестром покрытия — закрытый класс не может тихо открыться обратно.
Применение
Три режима, по сайтам
shadow записывает, что сделал бы; normal отвечает 403; hardened добавляет бан по IP. Это решение по каждому сайту, а не глобальный тумблер.
Баны на уровне ядра
Отдельный привилегированный агент применяет drop-правила nftables. У самого проксирующего процесса, смотрящего в интернет, повышенных прав нет.
Дедлайн инспекции
Бюджет времени на запрос. Если инспекция не успевает, применяется настроенное безопасное поведение, и событие так и записывается.
Ограничение частоты
Лимиты запросов по сайтам, применяются до дорогих этапов инспекции.
За пределами payload
DLP в ответах
Ответы upstream сканируются на номера карт, SSN, приватные ключи, облачные учётные данные и JWT — находки хранятся замаскированными, никогда в сыром виде.
TLS-отпечатки
Списки разрешения и запрета JA3/JA4 работают на этапе handshake — до того, как разобран хоть один байт HTTP.
Применение схемы API
Приложите спецификацию OpenAPI и запустите её в режиме off, log или enforce — проходят только задокументированные пути, методы и параметры.
Аудируемые решения
Каждый вердикт пишется вместе с доказательством: какой слой сработал, на какой нормализованной единице и с какой оценкой.
Чего RedEyes не делает.
Продукт безопасности, который перечисляет только сильные стороны, предлагает вам искать пробелы в проде. Вот наши — заранее.
Сегодня не поставляется ни одна ML-модель.
Две модели-кандидата были оценены, и обе отклонены — одна дала 97.5% ложных срабатываний на реальном браузерном трафике. Хук в рантайме есть и подключён к пустой реализации. Лучше не поставить ничего, чем поставить классификатор, который помечает ваших пользователей.
Hardened меняет точность на охват.
В режиме hardened полоса challenge поднимается до блокировки. На нашем легитимном корпусе это отклоняет 1.52% нормальных запросов и 99.18% атак. Эти 17 случаев отслеживаются поимённо, и список может только сокращаться. Normal остаётся на 0%.
Второй глаз ещё не построен.
RedEyes назван в честь двух глаз: один на веб-слое, другой на слое AI/LLM. В проде только первый. Второй — направление, и мы не назовём его возможностью, пока он не проверит реальный запрос.
Часть правил намеренно не может блокировать в одиночку.
Несколько детекций — общий синтаксис подстановки команд, шаблонные скобки — намеренно держатся под гейтом подтверждения. Они ловят реальные атаки, но пересекаются с легитимным контентом, поэтому вносят вклад в оценку, а не решают. Это выбор — и именно поэтому число ложных срабатываний такое, какое есть.
Он работает в вашей инфраструктуре. Целиком.
Нет облака RedEyes, нет включённой по умолчанию телеметрии и не требуется ни одного исходящего вызова, чтобы защищать трафик. Прокси, панель и хранилища поднимаются внутри вашей сети.
$ tar -xzf redeye-selfhosted-v1.4.0.tar.gz $ cd redeye-selfhosted-v1.4.0/deploy $ ./install.sh http://your-backend:8080
Одна команда поднимает прокси, панель, Postgres, ClickHouse и Redis. Панель слушает loopback; в интернет смотрит только прокси.
Обновление безопасности и стабильности — рекомендуется обновиться. Предыдущие сборки устарели.
Подходит для air-gap
Для инспекции трафика вызов лицензионного сервера не нужен. Офлайн-файл лицензии проверяется встроенным ключом, а установка без лицензии всё равно защищает — лицензия ограничивает функции, но никогда защиту.
Ваш трафик остаётся вашим
Запросы, тела и находки не покидают машины, которыми управляете вы. В пути данных нет вендора, которому нужно доверять, которого нужно аудировать или с которого спрашивать.
Сначала наблюдайте
Каждый новый сайт стартует в shadow. Вы увидите, что именно было бы заблокировано, на своём собственном трафике — до того, как что-либо заблокировано.
Проверено от начала до конца
Каждый релиз устанавливается из поставляемого архива на чистый хост и проводится по реальному сценарию — вход, добавление сайта, подтверждение, что он дошёл до data plane, включение защиты, подтверждение, что обычный трафик по-прежнему проходит.
Два глаза. Один шлюз.
Один глаз на веб-слое — поставлен, в проде, и это тема данной страницы. Второй — на слое AI и LLM: направление, в которое продукт построен расти, и пока не возможность. Мы предпочитаем сразу говорить, что есть что.
Веб-безопасность
LLM-безопасность
Self-hosted, лицензия на установку.
RedEyes — коммерческий продукт, который продаётся напрямую. Расскажите форму вашей установки — сколько сайтов, какой трафик, есть ли air-gap — и мы посчитаем под неё, а не под тариф, который почти подходит.
- Все четыре движка детектирования — ни одна возможность не придержана для старшего тарифа
- Режимы shadow, normal и hardened для каждого сайта
- DLP в ответах, TLS-отпечатки и применение схемы OpenAPI
- Панель, журнал аудита и живая лента атак
- Обновления сигнатур и корпуса CVE
- Помощь с установкой и прямая связь с инженерами, которые его сделали
Один шлюз перед всем сразу.
Расскажите, что вы защищаете. Если RedEyes для этого неподходящий инструмент, мы так и скажем — этот ответ дешевле для нас обоих, чем провалившийся пилот.