Checkpoint, güvenlik açıklarından yararlanmayı zorlaştıran Güvenli Bağlantı koruma tekniğini önerdi

Kontrol Noktası Şirketi sunulan Bir malloc çağrısı yürütülürken tahsis edilen arabelleklere yönelik işaretçilerin tanımını veya değiştirilmesini manipüle eden istismarların oluşturulmasını zorlaştıran Güvenli Bağlantı koruma mekanizması. Güvenli Bağlantı, güvenlik açıklarından yararlanma olasılığını tamamen engellemez, ancak asgari düzeyde ek yük ile belirli güvenlik açıklarından yararlanma kategorilerinin oluşturulmasını önemli ölçüde karmaşık hale getirir, çünkü yararlanılabilir arabellek taşmasına ek olarak, hakkında bilgi sızıntısına neden olan başka bir güvenlik açığının bulunması gerekir. yığının belleğe yerleştirilmesi.

Güvenli Bağlantıyı uygulayan yamalar Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ve Google TCMalloc için hazırlanmıştır ve ayrıca Chromium'daki korumayı yükseltmek için de önerilmektedir (içinde).
Chromium, 2012'den beri aynı sorunu çözmeyi amaçlayan MaskPtr koruma tekniğini zaten geliştirmiştir, ancak Checkpoint'in çözümü daha yüksek performans göstermektedir).
Önerilen yamalar Ağustos sürümünde teslim edilmek üzere zaten onaylandı Glibc 3.32 ve Güvenli Bağlantı varsayılan olarak etkin olacaktır. uClibc-NG Güvenli Bağlantıyı destekler girilen 1.0.33 sürümüne dahil edilmiştir ve varsayılan olarak etkindir. Gperftools'taki değişiklikler (eski tcmalloc) kabul edilmiş, ancak gelecekteki bir sürümde seçenek olarak sunulacaktır.

Geliştiriciler TCMalloc (yeni tcmalloc) kabul etmeyi reddetti değiştirmek, ciddi performans düşüşünü ve her şeyin beklendiği gibi çalıştığını düzenli olarak kontrol etmek için kapsamlı testlerin eklenmesi ihtiyacını öne sürdü. Checkpoint mühendisleri tarafından yapılan testler, Güvenli Bağlantı yönteminin ek bellek tüketimine yol açmadığını ve yığın işlemleri gerçekleştirirken performansın ortalama olarak yalnızca %0.02 ve en kötü senaryoda %1.5 oranında azaldığını gösterdi (karşılaştırma için, ek yük Chromium'da kullanılan yöntemin “%2'den az” olduğu tahmin edilmektedir. Dahil etme
Güvenli Bağlantı, free() her çağrıldığında 2-3 ek montaj talimatının yürütülmesine ve malloc() her çağrıldığında 3-4 talimatın yürütülmesine neden olur. Başlatma ve rastgele değer oluşturma aşamalarının çalıştırılması gerekli değildir.

Checkpoint, güvenlik açıklarından yararlanmayı zorlaştıran Güvenli Bağlantı koruma tekniğini önerdi

Güvenli Bağlantı, yalnızca çeşitli yığın uygulamalarının güvenliğini artırmak için değil, aynı zamanda ara belleklerin yanına yerleştirilen tek bağlantılı işaretçi listelerini kullanan tüm veri yapılarına bütünlük kontrolleri eklemek için de kullanılabilir. Yöntemin uygulanması çok basittir ve yalnızca bir makro eklemeyi ve onu koddaki bir sonraki bloğa işaretçilere uygulamayı gerektirir (örneğin, Glibc için) değişiklikler yalnızca birkaç satır kod). Yöntem aşağıdaki değişikliklere indirgenir:

+#define PROTECT_PTR(konum, ptr) \
+ ((__typeof (ptr)) ((((size_t) konum) >> 12) ^ ((size_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

- sonrakip = p->fd;
+ sonrakip = REVEAL_PTR (p->fd);
...

Yöntemin özü, Fast-Bins ve TCache gibi tek bağlantılı listeleri korumak için ASLR adres rastgeleleştirme mekanizmasından (mmap_base) gelen rastgele verileri kullanmaktır. Değer, listedeki bir sonraki öğeye işaret eden bir işaretçiye uygulanmadan önce, bir maske dönüşümü gerçekleştirir ve sayfa hizalamasını kontrol eder. İşaretçinin yerini "(L >> PAGE_SHIFT) XOR (P)" işleminin sonucu alır; burada P, işaretçinin değeridir ve L, işaretçinin saklandığı bellek konumudur.

Checkpoint, güvenlik açıklarından yararlanmayı zorlaştıran Güvenli Bağlantı koruma tekniğini önerdi

Sistemde kullanıldığında ASLR (Adres Alanı Düzeni Rastgeleleştirme) yığın tabanı adresine sahip L bitlerinin bir kısmı, P'yi kodlamak için anahtar olarak kullanılan rastgele değerler içerir (12 baytlık sayfalar için 4096 bitlik bir kaydırma işlemiyle çıkarılır). Bu manipülasyon, işaretçi orijinal biçiminde saklanmadığından ve değiştirilmesi yığın tahsisi bilgilerine ilişkin bilgi gerektirdiğinden, bir istismar sırasında işaretçinin ele geçirilmesi riskini azaltır. Buna ek olarak yama kodu, saldırganın bir işaretçiyi hizalanmamış bir değerle değiştirmesine izin vermeyen ve hizalanmış bit sayısı hakkında bilgi gerektiren, 64 bit sistemlerde ek olarak engellemeye izin veren, blok hizalaması için ek bir kontrol içerir. Hizalamayı hesaba katmayan 15 saldırı girişiminden 16'i.

Yöntem, kısmi işaretçi yeniden yazma (düşük baytları değiştirme), işaretçiyi tam olarak yeniden yazma (saldırganın koduna yönlendirme) ve hizalanmamış bir adresteki liste konumunu değiştirme kullanan saldırılara karşı koruma sağlamak için etkilidir. Örnek olarak, malloc'ta Güvenli Bağlantı kullanımının yakın zamanda istismarın engellenmesine izin vereceği gösterilmiştir. tanımlanmış aynı güvenlik açığı araştırmacıları tarafından CVE-2020-6007 Philips Hue Bridge'deki akıllı ışık, arabellek taşmasından kaynaklanır ve cihazın kontrolünü ele geçirmenizi sağlar.

Kaynak: opennet.ru

Yorum ekle