· kaynak dev.to (home feed)
Dify'nin XLS ayrıştırıcısındaki tırnak kaçış hatası, hazırlanmış hücrelerin CSV satır ve sütunları enjekte etmesine izin veriyordu
Açık kaynak Dify AI platformunu inceleyen bir araştırmacı, XLS'den CSV'ye dönüştürmenin hücre değerlerini tırnaksız bıraktığını tespit etti; bu da hazırlanmış elektronik tablo hücrelerinin aşağı akıştaki içe aktarımlara satır veya sütun enjekte etmesine olanak tanıyordu.

Ne oldu
Açık kaynak AI uygulama geliştirme platformu Dify'yı denetleyen bir güvenlik araştırmacısı, yüklenen XLS elektronik tablolarını CSV'ye dönüştürme biçiminde tek satırlık bir kusur buldu. dev.to'da yayımlanan bir yazıya göre, dönüştürme kodu her çıktı satırını hücre değerlerinin string karşılıklarını virgülle birleştirerek oluşturuyordu — tırnaklama yok, kaçış yok. Kullanıcı kontrollü hücre içerikleri olduğu gibi serileştirildiği için, çift tırnak içeren bir değer kendi alanını erken sonlandırabilecek ve gerçek bir sütuna karşılık gelmeyen alanlar üretebiliyordu.
Enjeksiyon nasıl çalışıyor
CSV, tam olarak bu durum için kurallara sahiptir: virgül, tırnak veya satır sonu içeren bir alan çift tırnak içine alınır ve alan içindeki bir gerçek tırnak iki kez yazılır. Bu kuralları atladığınızda saldırı yüzeyi, tüketicinin ayrıştırıcısı haline gelir. Araştırmacının örneğinde, içeriği iki tırnaklı alan gibi düzenlenmiş bir hücre, tek bir mantıksal değeri birkaç görünen değere bölmek için yeterlidir; hazırlanmış değerler benzer şekilde ekstra satırlar da tanıtabilir. Hasar aşağı akışta gerçekleşir: üretilen CSV daha sonra başka bir süreç tarafından içe aktarılırsa, enjekte edilen alanlar içe aktarıcının korumalı olarak ele aldığı yuvalara düşebilir, onları doldurabilir veya üzerine yazabilir.
dev.to yazısı hatayı CSV enjeksiyonu, diğer adıyla formula injection olarak çerçeveliyor — elektronik tablo biçimine aktarılan verinin, daha sonraki bir tüketicinin üzerinde hareket ettiği yapı veya etkin içerik taşıdığı güvenlik açıkları ailesi. Daha iyi bilinen varyant, elektronik tablo uygulamalarının formül başlatıcı olarak yorumladığı karakterlerle başlayan hücrelerle ilgilidir; Dify vakası ise enjeksiyonun formül motorunu değil CSV kaydının kendisini hedeflediği yapısal bir varyanttır.
Düzeltme
Yama, elle yapılan string birleştirmeyi Python'ın standart csv modülüyle değiştiriyor. Her satır, bellek içi bir buffer ile desteklenen bir csv writer'a veriliyor ve doğru şekilde tırnaklanıp kaçışlanan sonuç satırı yazılıyor. csv modülü, özgün kodda eksik olan tırnaklama kurallarını uygular: sınırlayıcıya ihtiyaç duyan alanlar onları alır ve gömülü tırnak karakterleri iki katına çıkar, böylece bir değer ne içerirse içersin tek bir değer olarak kalır. Araştırmacının anlatımına göre, yaklaşık bir satırlık bir değişiklik anlamlı bir veri sızıntısı ve enjeksiyon yolunu kapatıyor.
Yazının açık bıraktıkları
Yazı, etkilenen Dify sürümlerini adlandırmıyor, bir CVE'ye atıfta bulunmuyor veya düzeltmenin upstream'de birleştirildiğini doğrulamıyor. Ayrıca istismar senaryosunu da genel bir biçimde ele alıyor — aşağı akıştaki bir sürecin CSV'yi yeniden içe aktarması — belirli bir Dify dağıtımına yönelik bir saldırıyı göstermek yerine. Dify çalıştıran herkes bu detayı, doğrulanmış ve silahlanmış bir açıklama değil, kendi sürümünü ve dışa aktarma yollarını kontrol etmesi için bir neden olarak görmeli.
Neden önemli
Dışa aktarma ve dönüştürme kodu bir güven sınırıdır ve rutin olarak sanki değilmiş gibi yazılır. Dify gibi AI platformları güvenilmeyen belgeler alır — elektronik tablolar standart bir bilgi tabanı biçimidir — dolayısıyla bu içeriği yeniden serileştiren her adım, hücre değerlerinin yalnızca metin değil düşmanca bir yapı olduğunu varsaymak zorundadır. Buradaki başarısızlık modu ayrıca önlemesi ucuz türdendir: Python standart kütüphanesinde doğru bir CSV serileştiricisiyle gelir, çoğu dilde eşdeğerleri vardır ve virgülle birleştirmeyi elle yazmak bir zorunluluk değil bir tercihtir. Son olarak, bu bulgu açık kaynak AI araçlarının bağımsız denetimi için küçük bir argüman — kendi kendine yürütülen bir bug bounty çabası, özellik odaklı bir incelemenin muhtemelen zararsız olarak okuyacağı bir tırnaklama hatasını gün yüzüne çıkardı.
- #dify
- #csv-injection
- #security
- #open-source
- #python