В контексте оценки атаки WAF от Cloudflare, которая представляет собой слой машинного обучения (МЛ), построенный поверх брандмауэра веб-приложений (WAF), популярность функции привела к необходимости в улучшении производительности. Целью функции является дополнение WAF и обнаружение обходов атак, с которыми еще не сталкивались раньше, чтобы поймать уязвимости нулевого дня и укрепить защиту клиентов от новых и неизвестных угроз.
Чтобы оптимизировать производительность модели МЛ WAF, были предприняты несколько шагов. Сначала фаза предобработки была оптимизирована с помощью DFA Aho-Corasick для замены поиска по хеш-таблицам, что сократило задержку на 47,84% до 1,64 раза. Затем был использован подход на основе соответствий, что еще больше сократило задержку на 53,45% до 2,15 раза. Далее была разработана новая реализация замены букв, что удвоило скорость предобработки и сделало ее в четыре-пять раз быстрее, чем оригинальная версия.
Затем была реализована безветвистая поиск n-gram, что сократило задержку на 91,33% до 11,54 раза. Это было достигнуто за счет предварительного вычисления таблицы смещений и использования их для замены операций сравнения прямым доступом к памяти, что намного быстрее и не требует ветвления.
Наконец, был оптимизирован вывод модели с помощью включения умножения матриц SIMD и использования XNNPack, что сократило задержку на 77,17% до 4,38 раза. Кроме того, был реализован кэш LRU, чтобы пропускать избыточные выполнения и еще больше сократить задержку. В целом оптимизации сократили время выполнения МЛ WAF примерно на 81,90%, с 1519 до 275 микросекунд, или на 5,5 раза быстрее.
blog.cloudflare.com
Making WAF ML models go brrr: saving decades of processing time
Create attached notes ...