Çekirdek güvenlik açıkları işletim sistemlerinde yaygındır ve milyarlarca cihazı etkileyebilir. Çekirdek bulanıklaştırma için en yaygın kullanılan araçlardan biri, zlang ile yazılmış önceden tanımlanmış spesifikasyonlara dayalı sistem çağrısı dizileri üreten “Syzkaller”dir.
Halen manuel olarak yapılmakta olan Syzkaller spesifikasyonlarının oluşturulmasının otomatikleştirilmesine yönelik mevcut araştırmalar bulunmaktadır. Bununla birlikte, gelişmiş bulanıklaştırma sağlayabilecek LLM’leri (Büyük Dil Modelleri) ve Syskaller spesifikasyonlarını birleştiren yeni bir araştırma makalesi önerilmiştir. Buna “KernelGPT” adı verildi.
KernelGPT Güvenlik Açıklarını Otomatik Olarak Algılar
LLM’ler ön eğitimde çeşitli kullanım durumlarına girmiş ve geliştirmeleri sırasında geçerli sistem çağrıları yapmak için kullanılabilecek birçok çekirdek kodu görmüştür. Ayrıca KernelGPT, tüm spesifikasyon bileşenlerini otomatik olarak dahil etmek için yinelemeli bir yaklaşım kullanır.
Araştırmanın başlangıç seviyesi, KernelGPT’nin Syzkaller’ı daha yüksek kapsama alanı elde edecek ve daha önce bilinmeyen birçok hatayı bulacak şekilde geliştirdiğini gösterdi. Bu, çekirdek bulanıklaştırma için LLM’leri kullanmaya yönelik ilk otomatik yaklaşımdır.
Çekirdek ve Cihaz Sürücüleri
Sistem çağrısı arayüzü, kullanıcı alanı ile çekirdek arasındaki etkileşimlerin gerçekleştiği yerdir. Çökmeleri ve çekirdek hatalarını tetikleyen kullanıcı alanı uygulamaları, tüm çekirdek uygulamalarını etkileyebilecekleri ve çekirdek tarafından zorlanan tüm güvenlik politikalarını atlayabilecekleri için oldukça risklidir.
Öte yandan, Aygıt sürücülerinin sistem çağrısı işleyicilerini başlatma sırasında çekirdeğe kaydettikleri kabul edilir. Pek çok sürücü aynı zamanda sistem çağrısı arayüzünde benzeri olmayan benzersiz bir kontrol mantığı gerektirir; dolayısıyla dağıtım için genel sistem çağrısını kullanırlar.
Bununla birlikte, işletim sistemi çekirdeklerinin karmaşıklığını ve sürekli gelişimini ele almak amacıyla çekirdek hatalarını tespit etmek için çeşitli yöntemler kullanılır. En etkili tekniklerden biri, hedef çekirdekte sistem çağrıları oluşturup yürüten Fuzz testidir.
KernelGPT, çekirdek bulanıklığını geliştirebilecek sürücü özelliklerini oluşturmak için kod çıkarıcıyı ve analiz LLM’yi kullanır. Ayrıca aygıtın genel işleyicilerini tanımlamak için komut değerlerini, bağımsız değişken türlerini ve tür tanımlarını da belirler.
Ayrıca, bu KernelGPT hakkında, KernelGPT, yaklaşım, yöntemler, teknikler ve diğer bilgiler hakkında ayrıntılı bilgi sağlayan tam bir rapor yayınlandı.