Yıl 2025 ve güvenlik ekipleri çevrelerini sağlamlaştırırken, Linux Kernel mail listeleri yeni bir tehditle çalkalanıyor. Google'ın Tehdit Analiz Grubu (TAG), Linux çekirdeğinin CVE-2025-38352.
Bu sıradan bir bellek bozulması hatası değildir. Bu sofistike, zamanlamaya bağlı bir Yarış Durumu Linux Çekirdeğinin POSIX CPU zamanlayıcı alt sisteminin derinliklerinde yer almaktadır. CVSS puanı 7.4 ile ilk bakışta yönetilebilir görünebilir, ancak puana aldanmayın. Ticari casus yazılım satıcılarının elinde, bu güvenlik açığı güvenilir bir şekilde kullanılmak üzere çoktan silah haline getirilmiştir Yerel Ayrıcalık Yükseltme (LPE) tamamen yamalanmış Android cihazlarda, KASLR ve PAN gibi modern hafifletmeleri atlayarak.
Seçkin güvenlik mühendisleri için CVE-2025-38352 "Race-to-Use-After-Free" istismarının zirvesini temsil etmektedir. Bir sürecin "Zombi" durumuna girmesi ile çekirdeğin zamanlayıcılarını temizlemesi arasındaki mikroskobik boşluktan faydalanır. Bu makalede yüksek seviyeli özetlerden vazgeçilerek kernel/time/posix-cpu-timers.cve neden yapay zeka odaklı zamansal analizin insan denetçilerin gözden kaçırdıklarını yakalamanın tek yolu olduğu.
Kernel'in Ölümcül Kusuru: Bozuk Spinlock Dansı
CVE-2025-38352'yi anlamak için Linux Çekirdeğinin işlem sonlandırma sırasında eşzamanlılığı nasıl ele aldığına bakmalıyız. Güvenlik açığı, bir iş parçacığı aynı anda onları silmeye çalışırken çekirdeğin süresi dolan CPU zamanlayıcılarını nasıl işlediğindeki atomiklik ihlalinden kaynaklanmaktadır.
Savunmasız Kod Yolu
Kusur handle_posix_cpu_timers() fonksiyonu. Bu fonksiyon, aktif zamanlayıcıların bir listesi üzerinde yineleme yapmaktan ve süresi dolanları ateşlemekten sorumludur. Kritik olarak, bu yinelemeyi gerçekleştirmek için sighand->siglock.
Ancak, yamadan önce, mantık ölümcül bir dizi içeriyordu:
- Kilit Alımı: Çekirdek şunları edinir
sighand->siglockzamanlayıcı listesinde gezinmek için. - Düşüş: Belirli bir sona erme özelliğini işlemek için (özellikle
CPUCLOCK_PERTHREAD), kod kısaca kilidi düşürür bir kontrol veya yeniden sıraya alma işlemi gerçekleştirmek için. - Kullanım: Kilidi yeniden alır ve zamanlayıcı nesnesini yeniden referans almaya devam eder.
Yarış Penceresi
Saldırgan bu mikroskobik pencerenin içinde -kilidin düştüğü yerde- saldırır.
Eşzamanlı bir iş parçacığı (Thread B) timer_delete() sistem çağrısı yapar. Kilit serbest olduğundan, Thread B kilidi başarıyla alır, zamanlayıcıyı listeden kaldırır ve belleği kfree_rcu veya slab deallocation yoluyla serbest bırakır.
Thread A (kurban bağlamı) kilidi yeniden aldığında, bir işaretçiyi bir posix_cputimer teknik olarak artık var olmayan bir yapı. Bu belleğe yazmaya devam eder (örneğin, sona erme süresini günceller) ve bir Ücretsiz Kullanım (UAF) Yaz.

Zombiyi Silahlandırmak: İstismar İlkelleri
Bir çekirdek yarış koşulunu istismar etmek genellikle piyangoyu kazanmakla karşılaştırılır. Ancak, gelişmiş istismar geliştiricileri zar atmazlar; oyuna hile karıştırırlar. CVE-2025-38352 bağlamında, saldırganlar oyunu Zombi Süreçleri.
1. Pencereyi Genişletmek ("Zombileştirme" Tekniği)
Standart yarış penceresi yalnızca birkaç nanosaniye genişliğinde olabilir. İstismarı güvenilir kılmak için (90%+ başarı oranı) saldırganlar süreç çıkış durumunu kullanır.
Bir alt süreç oluşturarak ve onun çıkmasını sağlayarak - ancak kasıtlı olarak değil biçmek (via waitpid)- süreç EXIT_ZOMBIE durumundadır. Bu durumda, görev yapısı bellekte kalır, ancak temizleme mantığı beklemededir. Saldırganlar, bir Zombi sürecinde zamanlayıcı işlemlerini tetiklemenin çekirdeği daha yavaş, daha karmaşık bir kod yoluna zorladığını keşfetti posix_cpu_timer_delBu da yarış penceresini yapay olarak nanosaniyeden mikrosaniyeye genişletir.
2. SLUB Feng Shui (Yığın Püskürtme)
UAF tetiklendiğinde, çekirdek serbest bırakılan bir bellek yuvasına veri yazar. Eğer bu yuva boşsa, çekirdek çöker (DoS). Root elde etmek için saldırganın serbest bırakılan zamanlayıcı nesnesini bir yük ile değiştirmesi gerekir.
Saldırganlar SLUB tahsis edicinin öngörülebilir davranış (Son Giren İlk Çıkar).
- Ücretsiz: Serbest bırakmak için yarışı tetikle
zamanlayıcıyapı. - Sprey: Çekirdek yığınını hemen aynı boyutta kullanıcı kontrollü nesnelerle doldurun (örn.
sendmsgyardımcı veriler veyakey_serialnesneler). - Yolsuzluk: Çekirdek, zamanlayıcıyı güncellediğini düşünerek saldırganın nesnesine yazar. Eğer saldırgan bir fonksiyon işaretçisi içeren bir yapıyı püskürtmüşse (örn.
tty_structveyafile_operations), çekirdek bu işaretçinin üzerine yazar. - Yürütme: Saldırgan püskürtülen nesneyi çağırdığında (örneğin dosyayı kapatırken), çekirdek üzerine yazılan adrese atlar -> ROP Zinciri -> Kök.

Syzkaller'ın Ötesinde: Geleneksel Fuzzing Neden Başarısız Oldu?
CVE-2025-38352, Google'ın Syzkaller'ı gibi otomatik bulanıklaştırıcılar tarafından yıllarca tespit edilemedi. Neden mi?
Geleneksel kapsama güdümlü bulanıklaştırma olasılıksal. Çekirdeği çökertmeyi umarak rastgele sistem çağrıları atar.
- Anlamıyor Zamanlama.
- Anlamıyor Devlet Bağımlılıkları (örneğin, "Thread B bir zamanlayıcıyı silerken Thread A çıkıyor olmalı").
Kör bir fuzzer'ın bu özel yarış koşuluna ulaşmasının istatistiksel olasılığı, süreç tam olarak ZOMBİ astronomik derecede düşüktür.
Yapay Zeka Çözümü: Penligent'ın Zamansal Analizi
Geleneksel araçların bu başarısızlığı, aşağıdakilerin gerekliliğini vurgulamaktadır Yapay Zeka Güdümlü Mantık Analizi. İşte burası Penligent.ai paradigmayı "Fuzzing "den "Reasoning "e değiştirir.
Penligent, uzmanlaşmış bir Zamanlama Farkında Yapay Zeka Aracısı eşzamanlı hata avcılığı için tasarlanmıştır:
1. Eşzamanlılık Örüntü Tanıma
Penligent'in modeli rastgele girdiler yerine Çekirdek Kaynağı AST'sini (Soyut Sözdizimi Ağacı) analiz eder. "Tehlikeli Çiftleri"-aynı paylaşılan kaynağı değiştiren sistem çağrılarını tanımlar (bu durumda, posix_cputimer) ancak farklı kilitleme yolları izler. İşaretlendi timer_delete ve handle_posix_cpu_timers yüksek olasılıklı bir çarpışma hedefi olarak.
2. Yapay Zeka ile Yarış Penceresi Genişletme
Penligent sadece sistem çağrılarını yürütmez; onları düzenler. Yarış penceresini genişletme ihtiyacının farkına varan yapay zeka, otomatik olarak EXIT_ZOMBIE tekniğini önceki "Ref-Count" güvenlik açığı raporlarını analiz ederek geliştirmiştir. CPU'yu programlı olarak durduran bir Kavram Kanıtı oluşturdu (kullanarak sched_yield veya kapsamlı bellek bariyerleri) çarpışmayı garanti etmek için.
Güvenlik mühendisi için bu, Penligent'in "potansiyel hataları" raporlamanın ötesine geçerek doğrulanmış, silah haline getirilmiş açıklar Kodun gerçek risk profilini ortaya koyan.
İyileştirme ve Mavi Ekip Tespiti
2025'in sonlarında Linux Çekirdeği ile birleştirilen düzeltme, sadece bir kilit yerine bir mantık kontrolü içeriyor.
Düzeltme:
run_posix_cpu_timers() işlevinde, çekirdek artık (tsk->exit_state) olup olmadığını açıkça kontrol eder. Eğer görev zaten ölmüş ya da ölmek üzereyse, zamanlayıcı işlemini derhal iptal eder. Bu, "Zombie" değişkenini denklemden etkin bir şekilde çıkarır.
Algılama Stratejileri (EDR/Syslog):
Mavi Ekipler, Linux/Android sunucularında aşağıdaki Uzlaşma Göstergelerini (IoC) aramalıdır:
- Yüksek Frekanslı Zamanlayıcı Çalkalanması: Saniyede binlerce POSIX zamanlayıcısını hızla oluşturan ve silen bir işlem.
- Zombi Selleri: Alışılmadık bir birikim
Zhızlı bir şekilde ortaya çıkan ve biçilmeyen durum süreçleri. - Kernel Taint:
dmesg"Genel Koruma Hataları" veya "Döşeme bozulması" gösteren günlüklerkmalloc-192(veya kemerinizdeki zamanlayıcılar için belirli döşeme boyutu).
Sonuç
CVE-2025-38352, eski kodun bir mayın tarlası olduğuna dair şenlikli bir hatırlatma görevi görüyor. POSIX zamanlayıcı kodu onlarca yıl önce yazılmıştı, ancak 2025'in karmaşık bellek ortamını silah haline getirmeyi gerektiren gizli bir kusur içeriyordu.
Sıkı güvenlik mühendisleri için ders açıktır: Güvenlik açığı araştırmalarının geleceği basit arabellek taşmalarını bulmakla ilgili değildir. Kodun dördüncü boyutunu anlamakla ilgilidir-Zaman. Çekirdeklerde karmaşık kilitleme mekanizmaları kullanıldığı sürece, yarış koşulları istismarın "Taç Mücevherleri" olmaya devam edecektir.

