Ana içeriğe geç
Güvenlik

SQLite sanal tablosuyla paylaşımlı kütüphane yazma yöntemi bulundu

Öne çıkanlar

  • sqlite_dbpage sanal tablosu SQLite başlık baytlarının doğrudan üzerine yazılmasına imkan tanıdı.
  • ELF Program Header tablosunun dosya sonuna taşınmasıyla geçerli paylaşımlı kütüphaneler üretildi.
  • Bellek tüketimiyle tetiklenen süreç yeniden başlatmaları sahte modüllerin yüklenmesini sağladı.

SQLite veritabanlarında harici uzantı yükleme kapalıyken keyfi kod çalıştırmanın zorluğunu aşan yeni bir dosya yazma tekniği açıklandı. Geliştirici, veritabanı sayfalarına doğrudan erişim sağlayan dahili sqlite_dbpage sanal tablosunu kullanarak katı dosya biçimi kısıtlamalarını baypas ettiğini duyurdu. Geleneksel ATTACH DATABASE sorgularının bıraktığı ve Python ya da Ruby gibi dillerde sözdizimi hatasına yol açan veritabanı başlık verileri, bu yöntemle büyük oranda geçersiz kılındı.

Araştırmacı, sistemde kalan az sayıdaki sabit başlık baytını atlatmak için derlenen ELF biçimindeki paylaşımlı kütüphane (.so) dosyalarının Program Header tablosunu dosya sonuna taşıdı. LIEF kütüphanesi yardımıyla yeniden yapılandırılan ikili dosyalar, SQL sorguları aracılığıyla sayfa sayfa diske yazıldı. Linux dinamik bağlayıcısının hasarlı başlık nedeniyle çökmesini engelleyen bu adım, veritabanı sorguları üzerinden doğrudan paylaşımlı kütüphane üretilmesine olanak tanıdı.

Zararlı kütüphanenin hedef süreç tarafından yüklenmesini tetiklemek amacıyla Gunicorn zaman aşımı ve bellek tüketimi yöntemleri test edildi. SQLite sorgularıyla oluşturulan bellek tüketimi Docker kapsayıcısının yeniden başlatılmasını sağladı ve uygulamanın sahte modülü yüklemesiyle uzaktan kod çalıştırma aşaması tamamlandı. Yöntemin Python ve Ruby ortamlarında başarılı sonuç verdiği, Node.js ortamında ise kütüphane yapılandırması nedeniyle pratik sınırları bulunduğu aktarıldı.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.