The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

06.12.2025 09:44

Спустя две недели с момента прошлого глобального сбоя сеть доставки контента 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


  1. Главная ссылка к новости (https://blog.cloudflare.com/5-...)
  2. OpenNews: Многочасовой сбой Cloudflare оказался результатом некорректной обработки ошибок
  3. OpenNews: По статистике Cloudflare 6.8% интернет-трафика является потенциально мусорным
  4. OpenNews: Компания Cloudflare раскрыла сведения о взломе одного из своих серверов
  5. OpenNews: Уязвимость в cdnjs, позволившая выполнить код на серверах Cloudflare
  6. OpenNews: Cloudflare, Tesla многие другие компании скомпрометированы через камеры наблюдения Verkada
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64387-cloudflare
Ключевые слова: cloudflare, lua
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:45, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ну хоть 25 минут только.
     
     
  • 2.18, Аноним (18), 11:40, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что для нас вообще не проблема:
    https://blog.cloudflare.com/russian-internet-users-are-unable-to-access-the-op
     
     
  • 3.40, Аноним (40), 12:46, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > причиной стала остававшаяся много лет незамеченной проблема в коде на языке Lua, применяемом в системе фильтрации трафика

    Тут явно написано, что клаудьфляра блокирует посетителей.

     

  • 1.2, Аноним (1), 10:46, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Надо lua на rust переписать, правда это не поможет.
     
     
  • 2.6, Аноним (6), 11:03, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > In our replacement for this code in our new FL2 proxy, which is written in Rust, the error did not occur.

    https://blog.cloudflare.com/5-december-2025-outage/

     
     
  • 3.14, Аноним (14), 11:32, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И все равно у клаудфлёра будет падучка.
     
  • 3.24, 12yoexpert (ok), 11:56, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну то есть они неправильно переписали. почитай новость, там в криворукости дело
     
     
  • 4.56, Аноним (14), 13:24, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы как, ни садитесь, в музыканты не годитесь.
     
  • 2.45, Аноним (45), 13:00, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сдать анализ к**ала, для проверки Cloudflare).
     

  • 1.4, Аноним (4), 10:52, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Вот она, типичная проблема всех корпов, а именно - поналепят критикал мишн проектов со стеком аля "сборная солянка" из технологий, а потом ловят сбои из за малюсенькой детали.
    Так что надо всю инфраструктуру писать на одном языке, но это что то нереальное, дешевле же нафигачить кода из разных готовых модулей, и неважно что это франкенштейн.
     
     
  • 2.7, Аноним (7), 11:08, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вот ты-то точно сделал бы лучше.
     
  • 2.9, Аноним (9), 11:20, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Так что надо всю инфраструктуру писать на одном языке

    Все гвозди на стройке здания забивать микроскопом из лаборатории, что будет расположена в этом же здании? Норм логика.

     
     
  • 3.12, Аноним (14), 11:31, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На каждый удар микроскоп по гвоздю ещё нужно 10 смотрящих и 1 начальник. Тогда уж точно безопасно будет (нет)
     
  • 2.54, Dmitry (??), 13:21, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем один язык? Там все равно разные команды.
     

  • 1.8, Аноним (8), 11:10, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А я думаю, чего вчера в нужный момент сайт zoom возвращал 500 ошибку cloudflare. Не прошло незамеченным)
     
     
  • 2.33, Аноним (40), 12:38, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > две проблемы: cloudflare

    Клаудь по всему миру (не) работает.

     

  • 1.20, 12yoexpert (ok), 11:53, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ну, то есть они сами сломали и lua тут ни при чём
     
  • 1.25, Аноним (25), 12:00, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > применяемый для тестирования WAF инструментарий не поддерживает выставленный размер буфера. Так как данный инструментарий не влияет на трафик, было решено отключить его.

    Вот причина, а не код на Lua.

     
     
  • 2.34, Аноним (34), 12:39, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сложно охватить знаниямя всю комплексную инфраструктуру Cloudflare для одного человека, вот и нехватило знаний.
     
  • 2.36, Аноним (40), 12:40, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В коде не было проверок существования объекта

    Вот где ошибка.

     
     
  • 3.48, Аноним (48), 13:00, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    там целый букет, чего вы по одной таскаете: не было проверок, не было тестов, не было обработчика ошибок и т.д. Времени у них судя по всему тоже не было, раз "применяемый для тестирования WAF инструментарий" решили не менять под новые требования, а отключить
     
     
  • 4.51, Аноним (40), 13:09, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > решили не менять под новые требования

    Дак они боятся что-то трогать, т.к. не понимают, как оно работает, иначе весь интернет на планете положат, кроме суверенного некоторых стран.

     

  • 1.26, dannyD (?), 12:11, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ясно, меняются только декорации и прочие несущественные детали.

    в 1986 в Чернобыле было почти тоже самое.

     
     
  • 2.28, Аноним (18), 12:22, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Только здесь на следующий день, публично рассказывают, что произошло.
     
     
  • 3.31, Аноним (34), 12:31, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просто тут легче было выяснить.
     
  • 3.42, dannyD (?), 12:54, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Только здесь на следующий день, публично...

    это несущественные детали.

    зрите в корень произошедшего.

     
     
  • 4.44, Аноним (18), 12:58, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это как раз самое существенное.
    Человеческий фактор и от этого никто не застрахован.
    А вот публичное признание проблемы... на это не все готовы пойти.
     
     
  • 5.49, Аноним (40), 13:01, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > публичное признание

    Странно не заметить, когда полглобуса лишается интернета из-за клаудфляры.

     
     
  • 6.52, Аноним (18), 13:11, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Странно не заметить

    У нас через день инет рубят, а ркн делает вид, что ничего не знает.

     
  • 3.46, Аноним (40), 13:00, 06/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.57, Аноним (14), 13:27, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Во времена Чернобыля не было раста.
     

  • 1.30, Аноним (30), 12:26, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мир усложняется, количество ошибок будет только возрастать. Тем более когда речь про интернет, и про проекты находящиеся, что называется, на острие. Проекты вынужденные решать задачи первыми, при помощи инструментов которых у них ещё нет, а значит - при помощи разного рода костылей и скотча.
    Объемы необходимых знаний увеличиваются, размер хранилища (мозга) остаётся примерно неизменным. Когда твой проект "на острие" - у тебя нет времени пойти в "библиотеку", даже послать кого-то (так называемого ИИ) некогда, ведь ему надо сформулировать задачу, а она у тебя на костылях известных одному тебе и еще парочке чуваков. А еще нужно уметь проверить то, что тебе из "библиотеки" принесли, а для этого опять-же мозг. Готовьтесь к хаосу, господа.
     
     
  • 2.38, Аноним (34), 12:41, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если некоторые немного жадные руководители не будут слишком торопиться половину ошибок удастся избежать.
     
  • 2.53, Аноним (18), 13:19, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Всё так, и отчёты CloudFlare тому подтверждение.
    p.s.:
    https://www.mozilla.org/ru/about/manifesto/
     

  • 1.35, Аноним (35), 12:39, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Раньше во времена SEO приманивали ботов, сейчас блокируют. Чудеса.
     
     
  • 2.39, Аноним (40), 12:43, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > сейчас блокируют

    ...блокируют целыми подсетями, из-за чего обычным людям не зайти на сайты, которые за клаудей находятся. Ещё и MITM в придачу.

     

  • 1.43, Аноним (43), 12:58, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Всегда боялся lua, даже сам синтаксис:

       if rule_result.action == "execute" then
         rule_result.execute.results =  ruleset_results[tonumber(rule_result.execute.results_index)]
       end

    Уже вызывает трепет и ощущение простреленной ноги.

     
  • 1.47, Аноним (47), 13:00, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    1) useEffect в react
    2) unwrap в rust
    3) теперь lua

    Тролить работика vercel для них важнее, чем писать хороший код.

     
  • 1.50, Аноним (40), 13:06, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И опять никого не накажут... Полнейшее покровительство внутри конторы. Имена создавших это программистов не разглашаются.
     
     
  • 2.55, Аноним (55), 13:23, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Имена создавших это программистов

    да их давно уже там нет :) сфарганили на луа ваф и сунули в нджинкс, давайте зарабатывать бабки на этом.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру