Cloudflare ranap kerana isu Lua

Dua minggu selepas gangguan global terakhir, semalam, rangkaian penghantaran kandungan Cloudflare, yang mengendalikan kira-kira 20% daripada semua trafik web global, mengalami gangguan separa selama 25 minit. Semasa kejadian itu, kira-kira satu pertiga daripada permintaan Cloudflare mengembalikan halaman kosong dengan kod ralat 500. Kali ini, puncanya ialah isu yang sudah lama tertunggak dalam kod Lua yang digunakan oleh sistem penapisan trafik WAF (Web Application Firewall) untuk menyekat permintaan berniat jahat.

 Cloudflare ranap kerana isu Lua

Untuk melindungi sistem pelanggan daripada kerentanan kritikal (CVE-2025-55182) dalam komponen pelayan rangka kerja React, susulan pelancaran eksploit kepada umum, jurutera Cloudflare melaksanakan perlindungan pada peringkat WAF. Pelaksanaan perlindungan tersebut bukan tanpa cabaran: semasa pelaksanaan, saiz penimbal untuk pemeriksaan trafik proksi telah ditingkatkan.pelayan, tetapi ternyata toolkit pengujian WAF tidak menyokong saiz penimbal yang ditentukan. Oleh kerana toolkit ini tidak menjejaskan trafik, ia telah diputuskan untuk dilumpuhkan.

Untuk melumpuhkan ujian, jurutera menggunakan subsistem "killswitch" untuk menukar konfigurasi dengan cepat dan melumpuhkan pengendali Lua individu pada pelayan proksi tanpa mengubah peraturan. Kaedah melumpuhkan peraturan ini kadangkala digunakan untuk menyahpepijat pepijat dengan cepat dan mengakibatkan pelaksanaan beberapa kod Lua dilangkau. Walau bagaimanapun, jurutera gagal mengambil kira bahawa peraturan Lua menggunakan kaedah "laksana" untuk memanggil kit alat ujian dilumpuhkan, yang menjalankan set peraturan tambahan. Mod "killswitch" tidak pernah digunakan sebelum ini dengan peraturan yang dipanggil "laksana," dan gabungan ini belum diuji.

Menggunakan "killswitch" menyahdayakan kod yang mentakrifkan set peraturan ujian tambahan, tetapi seruan set peraturan ini melalui "execute" kekal. Kod tersebut tidak mempunyai pemeriksaan tambahan untuk kewujudan objek dan menganggap bahawa jika tindakan "laksana" hadir dalam set peraturan, objek "rule_result.execute" akan wujud. Akibatnya, percubaan telah dibuat untuk melaksanakan kaedah "laksana" pada objek yang tidak dimulakan, yang menyebabkan pengendali ranap dengan ralat "percubaan untuk mengindeks medan 'melaksanakan' (nilai nil)". jika rule_result.action == "execute" maka rule_result.execute.results = ruleset_results[tonumber(rule_result.execute.results_index)] tamat

Sumber: opennet.ru

Tambah komen