Chromium'daki güvenlik sorunlarının %70'i bellek hatalarından kaynaklanıyor

Chromium projesinin geliştiricileri analiz 912 yılından bu yana Chrome'un kararlı sürümlerinde 2015 adet yüksek riskli ve kritik güvenlik açığı tespit edildi ve bunların %70'inin bellek güvensizliğinden (C/C++ kodundaki işaretçilerle çalışırken oluşan hatalar) kaynaklandığı sonucuna vardı. Bu sorunların yarısı (%36.1), ara belleğe, kendisiyle ilişkili belleğin boşaltılmasından sonra (boşta kullan) erişimden kaynaklanmaktadır.

Chromium'daki güvenlik sorunlarının %70'i bellek hatalarından kaynaklanıyor

Chromium'u tasarlarken başlangıçta ortaya konmuşKodda hataların ortaya çıkmasının mümkün olduğu düşünüldüğünde, güvenlik açıklarının sonuçlarını sınırlamak için korumalı alan izolasyonunun kullanımına büyük önem verildi. Şu anda, bu teknolojiyi kullanma olanakları, yeteneklerinin sınırına ulaşmış durumdadır ve süreçlere daha fazla parçalanma, kaynak tüketimi açısından pratik değildir.

Kod tabanının güvenliğini korumak için Google aynı zamanda "iki kuralıBuna göre eklenen herhangi bir kod şu üç koşuldan en fazla ikisini karşılamalıdır: doğrulanmamış giriş verileriyle çalışma, güvenli olmayan bir programlama dili (C/C++) kullanma ve yükseltilmiş ayrıcalıklarla çalıştırma. Bu kural, harici verileri işlemeye yönelik kodun ya minimum ayrıcalıklara indirgenmesi (yalıtılmış) ya da güvenli bir programlama dilinde yazılması gerektiği anlamına gelir.

Kod tabanının güvenliğinin daha da artırılması amacıyla, bellek hatalarının kod tabanında görünmesinin önlenmesine yönelik bir proje başlatılmıştır. Üç ana yaklaşım vardır: Belleğin güvenli çalışması için işlevlere sahip C++ kitaplıkları oluşturmak ve donanım koruma mekanizmalarını kullanarak çöp toplayıcının kapsamını genişletmek MTE (Memory Tagging Extension) ve bellekle güvenli çalışmayı sağlayan dillerde (Java, Kotlin, JavaScript, Rust, Swift) bileşenlerin yazılması.

Çalışmaların iki alanda yoğunlaşması bekleniyor:

  • C++ geliştirme sürecinde, performans üzerindeki olumsuz etkiyi göz ardı etmeyen önemli değişiklik (ek sınır kontrolleri ve çöp toplama). Ham işaretçiler yerine türün kullanılması önerilmektedir. MucizePtrBu, performans, bellek tüketimi ve kararlılık üzerinde gözle görülür bir olumsuz etki yaratmadan, kullanılabilir serbest kullanımdan sonra hataları güvenlik tehdidi oluşturmayan çökmelere indirmenize olanak tanır.
  • Derleme zamanında bellek güvenliği kontrolleri gerçekleştirmek için tasarlanmış dillerin kullanılması (kod yürütme sırasında bu tür kontrollerin doğasında bulunan performans üzerindeki olumsuz etkiyi ortadan kaldıracaktır, ancak kodun yeni bir dilde kodla etkileşimini organize etmek için ek maliyetlere yol açacaktır) C++).

Bellek açısından güvenli kitaplıkları kullanmak en basit ama aynı zamanda daha az etkili yoldur. Rust'ta kodu yeniden yazmak en etkili ama aynı zamanda çok pahalı yol olarak değerlendiriliyor.

Chromium'daki güvenlik sorunlarının %70'i bellek hatalarından kaynaklanıyor

Kaynak: opennet.ru

Yorum ekle