Sınır dışı okuma güvenlik açığı, Counter-Strike: Global Offensive ve Portal 2 gibi milyonlarca aylık oyuncuya sahip oyunlarda ve Twilio Electric Imp gibi bulut hizmetlerinde bir saldırganın bir Squirrel VM’den kaçmasına olanak tanır.
Squirrel programlama dilindeki bir sınır dışı okuma güvenlik açığı, saldırganların sanal alan kısıtlamalarını aşmasına ve bir Squirrel sanal makinesinde (VM) rasgele kod yürütmesine, böylece kötü niyetli bir aktörün temeldeki makineye tam erişim sağlamasına olanak tanır.
Squirrel’in nerede yaşadığı göz önüne alındığında – oyunlarda ve nesnelerin internetinde (IoT) yerleşik olarak – bu hata, Counter-Strike: Global Offensive ve Portal 2 gibi video oyunlarının yanı sıra bulut hizmetleri oynayan milyonlarca aylık oyuncuyu potansiyel olarak tehlikeye atıyor.
Squirrel, özelleştirme ve eklenti geliştirme için video oyunları ve bulut hizmetleri tarafından kullanılan açık kaynaklı, nesne yönelimli bir programlama dilidir. Video oyunları ve gömülü sistemler gibi uygulamaların boyutuna, bellek bant genişliğine ve gerçek zamanlı gereksinimlerine uyan hafif bir betik dilidir.
Yukarıda bahsedilen oyunların her ikisi de herkesin özel oyun modları ve haritalar oluşturmasını sağlamak için Squirrel Engine oyun kitaplığını kullanır.
CVE-2021-41556 olarak izlenen Squirrel sınır dışı okuma güvenlik açığı, Twilio Electric Imp veya belirli video oyunlarında olduğu gibi güvenilmeyen kodu yürütmek için bir Squirrel Engine kullanıldığında kullanılabilir.
Güvenlik açığı SonarSource tarafından keşfedildi ve Salı günü yayınlanan bir gönderide detaylandırıldı. Bu yazıda, güvenlik açığı araştırmacıları Simon Scannell ve Niklas Breitfeld, bir saldırganın kötü niyetli bir Squirrel komut dosyasını bir topluluk haritasına gömebileceği ve onu güvenilir Steam Atölyesi aracılığıyla dağıtabileceği söyledi.
Araştırmacılar, “Bir sunucu sahibi bu kötü amaçlı haritayı indirip sunucusuna yüklediğinde, Squirrel komut dosyası yürütülür, VM’sinden kaçar ve sunucu makinesinin kontrolünü ele geçirir” dedi.
Güvenlik açığı, Squirrel’in sınıfları tanımlanırken “dizin karışıklığı yoluyla sınır dışı erişim” ile ilgilidir. Araştırmacılar, “Bir saldırganın 0x02000000 yöntemleriyle bir sınıf tanımı oluşturması tamamen mümkün olduğundan, bit işaretlerinin dizinler içinde ayarlanması sorunludur” dedi. Aşağıdaki “çok basit” kavram kanıtını (PoC) yarattılar: bir programı ele geçirmek ve bir saldırgana Squirrel VM’nin tam kontrolünü vermek için kullanılabilecek bir nibble değerindeki kod.
Analize göre, “Ham küme ve ham öğe işlevleri, belirli bir sınıfın üyelerine kolayca erişmemizi sağlar”. “Bu PoC’de, Squirrel yorumlayıcısı, _defaultvalues dizisi henüz tahsis edilmediğinden, bir boş gösterici ve segfault başvurusunu kaldıracaktır.”
Bir saldırgan, güvenlik açığını şu şekilde tetikleyebilir:
- 0x02000005 yöntemleri ve 0x1 alanları ile sınıf tanımı oluşturma
- İlgili dizin 0x02000005 ile yönteme erişme
- 0x02000000 bit işareti ayarlandığından, _isfield() makrosu bu dizin için true değerini döndürür
- _defaultvalues dizisine 0x5 indeksi ile erişilir. Ancak, yalnızca 0x1 girişleri içerir ve bu nedenle saldırgan, sınırların dışına erişmiştir.
Güvenlik açığı tehlikelidir çünkü kötü niyetli bir aktör, değerleri okuyabilen ve yazabilen sahte bir dizi oluşturabilir. Bunu kendileri yaparak, araştırmacılar “programın kontrol akışını ele geçirebileceklerini ve Squirrel VM’nin tam kontrolünü kazanabileceklerini” buldular ve bunu fonksiyon işaretçilerinin üzerine yazarak yaptılar.
SonarSource, tüm adres alanına okuma ve yazmayı sağlayan saldırgan kontrollü işaretçi zincirini gösteren aşağıdaki grafiği sağladı:
Squirrel GitHub Deposu Yamalı
Squirrel GitHub deposunun sorumlusu, Ağustos ayında güvenlik açığını kabul etti. 16 Eylül’de bir kod taahhüdünün parçası olarak bir yama çıkarıldı.
Ancak belirtildiği gibi, değişiklikler yeni bir kararlı sürüme dahil edilmedi ve son resmi sürüm (v3.1) 27 Mart 2016’da yayınlandı.
Bu nedenle, güvenlik açığını keşfeden araştırmacılar, projelerinde Squirrel’i kullanan bakımcıların saldırılara karşı korunmak için mevcut düzeltme taahhüdünü uygulamalarını “son derece” tavsiye ediyor.