Glibc'ten ARMv7 için memcpy işlevinin uygulanmasında kritik güvenlik açığı

Cisco Güvenlik Araştırmacıları ortaya çıkarılmış ayrıntılar güvenlik açıkları (CVE-2020-6096) 32 bit ARMv7 platformu için Glibc tarafından sağlanan memcpy() işlevinin uygulanmasında. Sorun, imzalı 32 bit tamsayıları işleyen montaj optimizasyonlarının kullanılması nedeniyle, kopyalanan alanın boyutunu belirleyen parametrenin negatif değerlerinin yanlış işlenmesinden kaynaklanmaktadır. ARMv7 sistemlerinde negatif boyutlu memcpy() işlevinin çağrılması, değerlerin yanlış karşılaştırılmasına ve belirtilen arabelleğin sınırları dışındaki bir alana yazılmasına neden olur.

Saldırganın, kopyalanan verinin boyutunun iletildiği değişkenin negatif değerinin oluşumunu organize edebileceği bir durumda (örneğin, 2 GB'tan fazla veri aktarılırken negatife dönecektir) bu güvenlik açığından kod çalıştırmak için yararlanılabilir. ancak saldırı sırasında arabellek sınırlarının ötesine geçmek için en az 4 GB aktarmanız gerekir). Memcpy() işlevi uygulamalarda yaygın olarak kullanılmaktadır ve ARMv7 işlemcileri, Bluetooth, HD Radyo/DAB, USB, CAN veri yolu, Wi-Fi Fi ve diğer harici veri kaynakları (örneğin, ağ üzerinden erişilebilen ve giriş verilerini boyut sınırlaması olmaksızın kabul eden hizmetlere ve uygulamalara saldırı yapılabilir).

Bunun bir örneği, otomobil Wi-Fi ağı üzerinden erişilebilen, otomobil bilgi sistemlerine yerleşik bir HTTP sunucusuna saldırmak için çalışan bir istismarın oluşturulmasıdır. Dışarıdan bir saldırgan, çok büyük bir GET isteği göndererek bu sunucudaki memcpy açığından yararlanabilir ve sisteme root erişimi sağlayabilir.

Glibc'ten ARMv7 için memcpy işlevinin uygulanmasında kritik güvenlik açığı

32 bit x86 sistemlerinde, bu mimarinin memcpy uygulaması size değişkenini size_t tipindeki işaretsiz bir tamsayı değeri olarak doğru şekilde yorumladığından sorun görünmüyor (montaj dilinde) uygulama ARMv7 için size_t yerine işaretli tamsayı olarak kabul edilir). Düzeltme şu anda şu şekilde mevcuttur: yamaAğustos Glibc 2.32 güncellemesine dahil edilecek.
Düzeltme, imzalı işlenenler (bge ve blt) üzerinde çalışan derleme talimatlarının kullanımının imzasız karşılıklarla (blo ve bhs) değiştirilmesiyle özetleniyor.

Sorun henüz çözülmedi Debian 9 ve 10 (Debian 8'de görünmez), Fötr şapka, Ubuntu, OpenEmbedded, Tizen (glibc tarafından kullanılır). RHEL и SUSE 32 bit ARMv7 sistemlerini desteklemediklerinden sorun etkilenmemektedir. Android, kendi libc (Biyonik) uygulamasını kullandığından bu güvenlik açığından etkilenmemektedir. İÇİNDE OpenWRT Varsayılan olarak çoğu yapı Musl'u kullanır, ancak glibc de depoda mevcuttur.

Kaynak: opennet.ru

Yorum ekle