Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

Сбой в Cloudflare из-за проблемы в коде на языке Lua

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 1050
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 46 раз
Поблагодарили: 24 раза

Сбой в Cloudflare из-за проблемы в коде на языке Lua

Сообщение root:# »

Сбой в Cloudflare из-за проблемы в коде на языке Lua
Спустя две недели с момента прошлого глобального сбоя сеть доставки контента Cloudflare, обслуживающая около 20% всего мирового web-трафика, вчера частично оказалась недоступной на 25 минут. Во время инцидента примерно треть запросов через Cloudflare завершалось возвращением пустой страницы с кодом ошибки 500. На этот раз, причиной стала остававшаяся много лет незамеченной проблема в коде на языке Lua, применяемом в системе фильтрации трафика WAF (Web Application Firewall) для блокирования вредоносных запросов.

Изображение
Чтобы защитить системы клиентов от критической уязвимости (CVE-2025-55182) в серверных компонентах фреймворка React, после появления в публичном доступе эксплоита, инженеры Cloudflare реализовали защиту на уровне WAF. С внедрением защиты не всё пошло гладко: в процессе внедрения был увеличен размер буфера для проверки трафика на прокси-серверах, но оказалось, что применяемый для тестирования WAF инструментарий не поддерживает выставленный размер буфера. Так как данный инструментарий не влияет на трафик, было решено отключить его. Для отключения инженеры воспользовались подсистемой "killswitch" для быстрого изменения конфигурации и отключения отдельных Lua-обработчиков на прокси-серверах без замены правил. Подобный метод отключения правил периодически применяется для быстрого устранения ошибок и приводит к пропуску выполнения части Lua-кода. При этом инженеры не учли, что для вызова отключаемого тестового инструментария в Lua-правилах применялся метод "execute", запускающий дополнительный набор правил. Ранее режим "killswitch" никогда не применялся с правилами, имеющими вызов "execute", и данная комбинация не тестировалась. Применение "killswitch" привело к тому, что код с определением дополнительного тестового набора правил был отключён, но вызов этого набора правил через "execute" остался. В коде не было дополнительных проверок существования объекта и подразумевалось, что при наличии в наборе правил действия "execute", объект "rule_result.execute" обязательно существует. В итоге, произошла попытка выполнения метода "execute" для неинициализированного объекта, которая привела к аварийному завершению обработчика с ошибкой "attempt to index field 'execute' (a nil value)". if rule_result.action == "execute" then rule_result.execute.results = ruleset_results[tonumber(rule_result.execute.results_index)] end

Источник: https://www.opennet.ru/opennews/art.shtml?num=64387