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 обязательно


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

  • 4.37, Аноним (18), 12:40, 06/12/2025 [ответить]  
  • +/
    Вы бы разобрались, кто кого гасит.
     

  • 1.2, Аноним (1), 10:46, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо lua на rust переписать, правда это не поможет.
     
     
  • 2.6, Аноним (6), 11:03, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 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 [^] [^^] [^^^] [ответить]  
  • +/
    ну то есть они неправильно переписали. почитай новость, там в криворукости дело
     

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

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

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

  • 1.8, Аноним (8), 11:10, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А я думаю, чего вчера в нужный момент сайт zoom возвращал 500 ошибку cloudflare. Не прошло незамеченным)
     
  • 1.11, Аноним (11), 11:29, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    у интернета есть две проблемы: cloudflare и роскомнадзор
     
     
  • 2.13, Аноним (14), 11:31, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Роблокс закрыли и ты сюда прибежал?
     
  • 2.15, онанист (?), 11:34, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ещё дети
     
  • 2.16, penetrator (?), 11:37, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    не ошибусь, если скажу, что эта секта дегенератов намного обширнее
     
     
  • 3.22, 12yoexpert (ok), 11:54, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    тем не менее, ты собственность этих дегенератов, а не они - твоя. думай
     
     
  • 4.29, Аноним (29), 12:25, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это говорит только в его пользу. Значит он ещё не скатился до такого как они.
     
  • 2.17, Аноним (18), 11:38, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://blog.cloudflare.com/russian-internet-users-are-unable-to-access-the-op
     
  • 2.33, Аноним (33), 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, Аноним (29), 12:39, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сложно охватить знаниямя всю комплексную инфраструктуру Cloudflare для одного человека, вот и нехватило знаний.
     
  • 2.36, Аноним (33), 12:40, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В коде не было проверок существования объекта

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

     

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

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

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

  • 1.27, Аноним (33), 12:13, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > из-за проблемы в коде на языке Lua

    Как так-то, опять не сишники?

     
  • 1.30, Аноним (30), 12:26, 06/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мир усложняется, количество ошибок будет только возрастать. Тем более когда речь про интернет, и про проекты находящиеся, что называется, на острие. Проекты вынужденные решать задачи первыми, при помощи инструментов которых у них ещё нет, а значит - при помощи разного рода костылей и скотча.
    Объемы необходимых знаний увеличиваются, размер хранилища (мозга) остаётся примерно неизменным. Когда твой проект "на острие" - у тебя нет времени пойти в "библиотеку", даже послать кого-то (так называемого ИИ) некогда, ведь ему надо сформулировать задачу, а она у тебя на костылях известных одному тебе и еще парочке чуваков. А еще нужно уметь проверить то, что тебе из "библиотеки" принесли, а для этого опять-же мозг. Готовьтесь к хаосу, господа.
     
     
  • 2.38, Аноним (29), 12:41, 06/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если некоторые немного жадные руководители не будут слишком торопиться половину ошибок удастся избежать.
     

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

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



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

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