Google, KCSAN kullanarak Linux Kernel'de yüzlerce Irk Koşulunu keşfetti

Linux Kernel

Google mühendisleri Linux çekirdeğine katkıda bulunan Çekirdekte KCSAN kullanarak yüzlerce "Irk Koşulu" keşfettiklerini duyurdular. Şirket, bellek bozulmasıyla ilgili hataları bulmak için AddressSanitizer veya koddaki tanımsız davranış için UndefinedBehaviorSanitizer üzerinde uzun süredir çalışıyor.

Bu zaman, Google, KCSAN adlı Linux çekirdeği için yeni bir "Yarış Koşulları" algılayıcı sunuyor (Kernel Concurrency Sanitizer). Bu kritik güvenlik açıkları yeni değil. Aslında Yarış Koşulları, aynı süreçteki iki veya daha fazla iş parçacığı aynı anda aynı bellek konumuna eriştiğinde ortaya çıkar., erişimlerden en az birinin yazmak olduğu ve iş parçacığı bu belleğe erişimlerini kontrol etmek için herhangi bir özel kilit kullanmadığında.

Bu koşullar karşılandığında, erişim sırası belirleyici değildir ve hesaplama, bu sıraya bağlı olarak bir çalıştırmadan diğerine farklı sonuçlar verebilir.

Yarış Koşulları, giderek daha fazla eşzamanlı erişim hataları olarak görülüyor ve kopyalanması zor ve paralel programlarda teşhis edin. Linux çekirdeği, iş parçacığı yoğun paralellik ve deterministik olmayan iş parçacığı serpiştirmenin rekabet koşullarına daha çok tabi olduğu büyük ölçekli bir yazılım sistemidir.

Bazı rekabetçi durumlar zararsız olabilir, ancak şimdiye kadar tespit edilen çoğu hata olarak kabul edilir.

Linux çekirdeği, bu tür koşullardan kaçınmak ve bunları yönetmek için çeşitli mekanizmalar sağlar. Linux Kernel'de kritik yürütme hatalarını tespit etmek için Thread Analyzer veya KTSAN (Kernel Thread Sanitizer) gibi araçlar olduğundan.

Ancak Linux çekirdeğine de katkıda bulunan Google, geçtiğimiz günlerde KCSAN'ı önerdi., KTSAN'a benzer Kernel için yeni bir Yarış Koşulları detektörü.

Google'a göre KCSAN, çekirdek kodundaki rekabetçi durumları keşfetmeye odaklanıyor. Bu dinamik kritik vuruş detektörü, Kernel Thread Sanitizer'a (KTSAN) bir alternatiftir.

Google'ın açıklamasına göre, KCSAN, KTSAN dedektöründen farklı olarak örnekleme izleme noktalarına dayanmaktadır, olaydan önceki kritik vuruş detektörüdür. KCSAN tasarımındaki temel öncelikler, yanlış pozitiflerin olmaması, ölçeklenebilirlik ve basitliktir.

KCSAN, belleğe erişmek için derleme araçları kullanır. KCSAN, GCC ve Clang derleyicileriyle uyumludur. GCC ile, sürüm 7.3.0 veya sonraki bir sürümü gerektirir ve Clang ile sürüm 7.0.0 veya üstünü gerektirir.

Projenin GitHub sayfasındaGoogle'dan Marco Elver, geçen ay yapılan testlerde KCSAN'ı kullanarak sadece iki günde 300'den fazla benzersiz temel rekabet durumu bulduklarını yazdı. KCSAN, davranışını özelleştirmek için çeşitli yapılandırma seçenekleri sunar.

“Syzkaller aracılığıyla birkaç haftadır KCSAN kullanıyoruz ve çok sayıda hata bulduk. İlk olarak Eylül 2019'da, sadece iki gün içinde 300'den fazla benzersiz rekabet durumu belirledik ”diye yazdı.

Google, genel yaklaşımın DataCollider'a dayandığını söyledi, çekirdek modüllerindeki rekabetçi durumların başka bir dinamik detektörü. Ancak DataCollider'dan farklı olarak KCSAN, donanım izleme noktalarını kullanmaz, bunun yerine derleme araçlarına dayanır.

İzleme noktaları, türü, boyutu ve erişim adresini uzun bir dosyada saklayan verimli kodlama kullanılarak uygulanır. Esnek izleme noktaları kullanmanın faydaları taşınabilirlik ve bir izleme noktasının etkinleştirebileceği erişimi sınırlandırmada daha fazla esnekliktir.

KCSAN'ın Google için belirttiği önemli noktalardan bazıları şunlardır:

  • Yüksek performans: KCSAN çalışma zamanı minimumdur ve her erişim için paylaşılan durum kilidi gerektirmez. Sonuç, KTSAN'dan çok daha iyi performanstır.
  • Ek hafıza yok: Google'a göre, önbelleğe gerek yoktur. Mevcut uygulama, izleme noktası bilgilerini kodlamak için ihmal edilebilir olan az sayıda uzunluk kullanır.
  • Bellek komutu: KCSAN, Linux çekirdek bellek modeli (LKMM) kontrol kurallarını bilmiyor. Bu, KTSAN gibi bir yarış öncesi yarış dedektörüne kıyasla kritik yarışların kaybedilmesine (yanlış negatifler) neden olabilir.
  • doğruluk: Google'a göre KCSAN, bir örnekleme stratejisi kullandığı için kesin değildir;
  • Ek açıklama gerektirir: KCSAN çalışma zamanı dışında minimum ek açıklama gereklidir. Bir ön koşul olay dinleyicisi durumunda, herhangi bir ihmal yanlış pozitiflere yol açar ve bu, özel zamanlama mekanizmalarını içeren çekirdek bağlamında özellikle önemlidir.
  • Cihazlardan dinamik yazmaların tespiti: İzleme noktası kurulumu sırasında veri değerlerini kontrol ederek, cihazlardan dinamik yazmalar da tespit edilebilir.

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.