· kaynak dev.to (home feed)
CVE-2026-17633: Langflow OSS'ta 1.0.0–1.10.3 sürümlerinde custom_component endpoint'i üzerinden uzaktan kod çalıştırma
Langflow OSS 1.0.0'dan 1.10.3'e kadar olan sürümler, kimliği doğrulanmış herhangi bir kullanıcının /api/v1/custom_component endpoint'ine bir Python sınıfı göndererek keyfi kod çalıştırmasına izin veriyor. 1.10.4 sürümü içerik doğrulaması ekliyor.

Ne oldu
CVE-2026-17633 olarak takip edilen yüksek önemde bir uzaktan kod çalıştırma açığı, Langflow'un açık kaynak sürümünü 1.0.0'dan 1.10.3'e kadar etkiliyor. 5 Ağustos 2026 tarihli bir IBM güvenlik bültenine dayanan dev.to'daki teknik incelemeye göre açık, POST /api/v1/custom_component API rotası üzerinden erişilebilir durumda. CVSS puanı 8.5 olan açık, CWE-94 yani kod üretiminin hatalı denetimi olarak sınıflandırılıyor.
Langflow, LLM uygulamalarını ve agent iş akışlarını görsel olarak kurmak için kullanılan bir low-code platformu. Custom components özelliği, bir bileşenin nasıl davranacağını tanımlayan Python kodunu kabul ediyor ve bu kod sunucuda çalışıyor. Ön koşullar düşük: dev.to analizine göre, dağıtımda LANGFLOW_ALLOW_CUSTOM_COMPONENTS true olarak ayarlanmış olması şartıyla, ayrıcalık düzeyi ne olursa olsun kimliği doğrulanmış herhangi bir hesap yeterli — yazarın üretim ortamlarında yaygın olduğunu söylediği bir ayar bu.
Açık nasıl çalışıyor
Sorun denetimlerin tamamen yokluğu değil, mevcut denetimin yanlış soruyu yanıtlaması. dev.to incelemesinin açıkladığı gibi, langflow/api/v1/endpoints.py içindeki savunmasız handler üzerindeki tek kontrol, custom-component özelliğinin açık olup olmadığını doğruluyor. Gönderilen kodun gerçekte ne yaptığını hiç incelemiyor ve Langflow'un sunduğu ayrı bir AST tabanlı güvenlik tarayıcısı bu yolda hiç çağrılmıyor.
Yığının daha derinlerinde istek, build_custom_component_template() üzerinden create_class() fonksiyonuna akıyor; bu da lfx/custom/validate.py içindeki prepare_global_scope() fonksiyonunu çağırıyor. Bu fonksiyon gönderilen kodu soyut sözdizimi ağacına (AST) ayrıştırıyor ve yalnızca seçili düğüm türlerini tutuyor: import'lar, sınıf tanımları, fonksiyon tanımları ve atamalar. Bunların dışındaki her şey — örneğin os.system çağrısı gibi en üst düzeyde çıplak bir çağrı — AST düzeyinde basit bir ifade ifadesidir ve sessizce atılır.
Bu filtreleme mantığı açığı yaratıyor. Modül düzeyindeki bir payload atılıyor, ancak sınıf gövdesine yerleştirilen bir payload sınıf tanımı düğümünün parçası oluyor. Toplanan kod derlenip Python'un exec() fonksiyonuna verildiğinde, sınıf gövdesi sınıf tanımlandığı anda çalışıyor. Saldırganın tek yapması gereken kötü niyetli ifadeyi sınıfın içine yerleştirmek — ne kodlama hilesi ne de filtre engelleme numarası gerekiyor.
Sömürü zinciri
Uçtan uca saldırı şöyle işliyor: kimliği doğrulanmış bir kullanıcı, payload içeren bir Python sınıfını /api/v1/custom_component adresine gönderiyor. Kod build_custom_component_template() ve create_class() üzerinden ilerliyor, prepare_global_scope() ClassDef düğümünü topluyor ve exec() sınıf gövdesini çalıştırarak kod çalıştırmayı sağlıyor. dev.to incelemesi, tek bir HTTP isteğinin yeterli olduğunu ve zincirin hiçbir noktasında LLM etkileşimi bulunmadığının altını çiziyor.
Yerleşik tarayıcı neden yardımcı olmadı
Langflow, langflow/agentic/helpers/code_security.py konumunda AST tabanlı bir tarayıcı olan scan_code_security() fonksiyonunu içeriyor. Analize göre bu tarayıcı yalnızca Agentic Assistant yoluna bağlı; burada bir LLM tarafından üretilen bileşen kodunu doğruluyor. Savunmasız endpoint bu tarayıcıyı hiç çağırmıyor; yani bu bir tarayıcıyı atlatma örneği değil — o kod yoluna baştan hiç tarayıcı bağlanmamış.
Tarayıcının kendisinin de ayrı bir zayıflığı var: vars() çağrılarının kapsam dışı kalması, yanlış bir "güvenli" sonucu üretebiliyor. Bu sorun CVE-2026-17632 olarak takip ediliyor ve aynı kod tabanının analizinden ortaya çıktı, ancak RCE'den bağımsız.
Yama ve azaltım
dev.to incelemesi birkaç adım öneriyor:
- Custom_component endpoint'ine içerik doğrulaması ekleyen Langflow 1.10.4 veya sonraki bir sürüme yükseltin.
- Özellik gerçekten gerekmiyorsa üretimde LANGFLOW_ALLOW_CUSTOM_COMPONENTS ayarını false tutun.
- Custom components etkin kalmak zorundaysa, özelliğe hangi hesapların erişebileceğini kısıtlayın.
- Yatay hareket ve container kaçış yüzeyini azaltmak için container'ın runtime kullanıcısının grup üyeliklerini denetleyin — analiz özellikle gid=0 üyeliğine dikkat çekiyor.
Neden önemli
Langflow kullanıcıların Python göndermesini sağlamak için var; bu yüzden tasarım gereği sunulan bir özellik ile keyfi kod çalıştırma arasındaki çizgi alışılmadık ölçüde ince. Bu açık, bir yetenek denetiminin — özellik açık mı — bir güvenlik denetiminin — bu kod çalıştırılmak için güvenli mi — yerine geçtiğinde ne olduğunu gösteriyor. Etkilenen bir sürümü custom components etkin ve birden fazla kimliği doğrulanmış kullanıcıyla çalıştıran her kendi sunucusunda barındırılan (self-hosted) örnek, bu endpoint'i açık olarak görmeli ve yamayı öncelikli uygulamalıdır. 1.10.4'teki düzeltme eksik içerik doğrulamasını ekliyor; ancak daha geniş ders her genişletilebilir platform için geçerli: bir ürünün temel işlevi kullanıcının sağladığı kodu çalıştırmaksa, doğrulama her kod yolunu kapsamak zorundadır ve yalnızca tek bir rotayı koruyan bir güvenlik tarayıcısı yüzeyin geri kalanını açık bırakır.
- #security
- #vulnerability
- #langflow
- #python
- #open-source