Büyük dil modellerini sunmak için en yaygın kullanılan açık kaynak çerçevelerden biri olan SGLang, kimlik doğrulaması yapmamış bir saldırganın çıkarım sunucusunda rastgele kod çalıştırmasına olanak tanıyan kritik bir açık barındırıyor. CVE-2026-86793 olarak izlenen güvenlik açığı 0.5.14 dahil olmak üzere bu sürüme kadarki tüm sürümleri etkiliyor ve 11 Eylül'de kamuya açıklandığında yaması yoktu.

Hata, çok dar bir izin listesinin nasıl amaçlandığı gibi görünürken başarısız olabileceğinin ders niteliğinde bir örneği. SGLang, daha önceki bir serileştirme açığından (CVE-2025-10164) sonra SafeUnpickler adlı özel bir unpickler ekledi. Sınıf, serileştirme çözme sırasında hangi modül, sınıf ve fonksiyonların çözülebileceğini iki listeyle kısıtlıyor: "torch." ve "numpy." gibi izinli modül önekleri ile ("builtins", "eval") gibi belirli tehlikeli çiftleri engelleyen bir kara liste.

"builtins." öneki fazla geniş. Açıkça yasaklanmayan tüm builtins isimlerine izin veriyor. Kara liste eval, exec, compile ve open'ı engelliyor; ancak __import__ veya getattr'ı engellemiyor. İki pickle opcode'uyla zincirlendiğinde bu iki izinli fonksiyon, içe aktarılabilen her şeye ulaşabiliyor. VicOne araştırmacısı Reuel Magistrado'nun kavram kanıtı, os'u içe aktarmak için builtins.__import__'ı çözüyor, unpickler'dan hiçbir zaman doğrudan ("os", "system") çiftini çözmesini istemeden os.system'i almak için builtins.getattr'ı çağırıyor ve ardından fonksiyonu çalıştırıyor. Kısıtlamalar kurallar yıkılarak değil, kuralların içinde kalınarak aşılıyor.

Kod yoluna ulaşmak için SGLang'in /update_weights_from_tensor uç noktasına POST isteği gerekiyor; bu uç nokta ADMIN_OPTIONAL olarak tanımlı: Ne API anahtarı ne de yönetici anahtarı yapılandırıldığında istekleri hiçbir kimlik doğrulaması olmadan kabul ediyor. Yük, serialized_named_tensors dizisi içinde base64 ile kodlanmış bir pickle olarak gidiyor. Yani açık, yalnızca hem erişilebilir hem de kimlik doğrulaması yapılandırılmamış sunucularda sömürülebiliyor; bu yapılandırma iç dağıtımlarda ve laboratuvar kümelerinde yaygın, açık internette ise nadir değil.

Açıklama takvimi başlı başına bir hikâye. Magistrado 29 Haziran'da özel bir güvenlik bildirimi gönderdi, e-postayla takip etti ve 2 Temmuz'da Slack üzerinden bir teyit aldı — yama ya da düzeltme takvimi olmadan. 16 Temmuz'da koordineli açıklama için CERT/CC'ye taşıdı. CERT/CC açığı 30 Temmuz'da doğruladı, CVE'yi 8 Eylül'de atadı; VicOne analizini 11 Eylül'de yayımladı ve o tarihte hâlâ düzeltme yayımlanmamıştı. CERT/CC'nin VU#281278 numaralı uyarısı, uzaktan kod çalıştırma ve sunucu tarafı istek sahteciliği dahil SGLang'deki altı güvenlik açığını kapsıyor.

Yama gelene kadarki pratik öneri gösterişsiz: kimlik doğrulamayı yapılandırın, SGLang'i güvenilir bir ağın arkasına bağlayın ve ağırlık güncelleme uç noktasına erişimi kısıtlayın. Önerilen kod düzeltmesi de aynı ölçüde küçük: __import__, getattr, setattr ve delattr'ı kara listeye eklemek ya da daha iyisi "builtins." önekini tamamen kaldırıp yalnızca tensör serileştirmesinin gerektirdiği sınıflara izin vermek.

Bağlam durumu daha da kötüleştiriyor: CVE-2026-86793, son haftalarda Ollama'dan Langflow'a kadar yapay zeka çıkarım altyapısında açıklanan ciddi açıklar zincirinin son halkası. Model ağırlıklarını ve hesaplama gücünü barındıran sunucuların artık hizmet ettikleri uygulamalarla aynı güven sınırında durduğunu hatırlatıyor.