Ekim 2000’e kadar uzanan bir kod değişikliğinin parçası olarak tanıtılan ve saldırganların programları çökertmesine veya kontrol etmesine olanak sağlayabilecek SQLite veritabanı kitaplığında yüksek önemde bir güvenlik açığı açıklandı.
CVE-2022-35737 (CVSS puanı: 7.5) olarak izlenen 22 yıllık sorun, SQLite 1.0.12 ila 3.39.1 sürümlerini etkiler ve 21 Temmuz 2022’de yayınlanan 3.39.2 sürümünde giderildi.
Trail of Bits araştırmacısı Andreas Kellas bugün yayınlanan teknik bir yazıda, “CVE-2022-35737, 64-bit sistemlerde kullanılabilir ve sömürülebilirlik programın nasıl derlendiğine bağlıdır.” Dedi.
“Kütüphane yığın kanaryaları olmadan derlendiğinde keyfi kod yürütme onaylanır, ancak yığın kanaryaları mevcut olduğunda onaylanmaz ve her durumda hizmet reddi onaylanır.”
C’de programlanan SQLite, varsayılan olarak Android, iOS, Windows ve macOS’ta ve ayrıca Google Chrome, Mozilla Firefox ve Apple Safari gibi popüler web tarayıcılarında bulunan en yaygın kullanılan veritabanı motorudur.
Trail of Bits tarafından keşfedilen güvenlik açığı, printf işlevlerinin SQLite uygulamalarına parametre olarak aşırı büyük dize girdileri geçirildiğinde oluşan bir tamsayı taşması hatasıyla ilgilidir; bu da, dize biçimlendirmesini (“sqlite3_str_vappendf”) işlemek için başka bir işlevi kullanır. “).
Bununla birlikte, hata bankalarının başarılı bir şekilde silahlandırılması, dizenin %Q, %q veya %w biçim değiştirme türlerini içermesi ön koşuluna dayanır ve bu, kullanıcı tarafından kontrol edilen veriler yığın sınırlarının ötesine yazıldığında potansiyel olarak bir program çökmesine yol açar. ayrılmış tampon.
“Biçim dizesi ‘!’ unicode karakter taramasını etkinleştirmek için özel bir karakter, o zaman en kötü durumda rastgele kod yürütme elde etmek veya programın süresiz olarak askıda kalmasına ve (neredeyse) döngü yapmasına neden olmak mümkündür,” diye açıkladı Kellas.
Güvenlik açığı aynı zamanda, on yıllar önce bir zamanlar pratik olmadığı düşünülen bir senaryonun bir örneğidir – girdi olarak 1 GB’lık diziler tahsis etmek – 64-bit bilgi işlem sistemlerinin ortaya çıkmasıyla mümkün kılındı.
Kellas, “Sistemler öncelikle 32 bit mimariler olduğunda, yazıldığı sırada (SQLite kaynak kodunda 2000’e kadar uzanan) bir hata gibi görünmeyen bir hatadır” dedi.