- GhostLock (CVE-2026-43499), Linux 2.6.39’da eklenip 7.1’de düzeltilen bir kernel açığıdır; ayrıcalıksız yerel bir saldırgan, yalnızca sıradan thread sistem çağrılarıyla stack UAF oluşturarak bunu root yetkisi elde etme ve container’dan kaçma için kullanabilir
- Requeue-PI proxy yolundaki
remove_waiter(), gerçek bekleyen task yerinecurrentınpi_blocked_onalanını temizlediği için, kullanıcı alanına dönen task’ta serbest bırakılmış bir stack frame’ini gösteren pointer kalır - Üç futex ve üç thread ile bir PI bağımlılık döngüsü oluşturularak
-EDEADLKrollback’i tetiklenir;PR_SET_MM_MAP’in kontrol edilebilir stack buffer’ında sahte birrt_mutex_waiterkurularak kısıtlı pointer yazma elde edilir - Exploit,
prefetchile KASLR ve physmap taban adreslerini bulur; CPU entry area’da (CEA) sahte yapılar ve ROP stack’i yerleştirdikten sonrainet6_protos[IPPROTO_UDP]değerinin üzerine yazarak IPv6 UDP loopback paketiyle kontrol akışını ele geçirir - Araştırmacılar, %97 kararlı yetki yükseltme ve container’dan kaçma exploit’iyle Google kernelCTF’ten 92.337 dolar aldı; yamalanmamış tüm Linux dağıtımları en güncel LTS’ye yükseltilmelidir
Etki kapsamı ve açığın özeti
- GhostLock, VEGA tarafından keşfedilen bir Linux kernel açığıdır; yerel ayrıcalıksız bir kullanıcı tarafından ek yetki veya kullanıcı namespace’i olmadan tetiklenebilir
8161239a8bccile yapılan rtmutex yeniden çalışması sırasında eklendi; etki kapsamıv2.6.39-rc1ilev7.1-rc1arasıdır- Nisan 2026’da
3bfdc63936ddile düzeltildi; gereken tek kernel ayarıCONFIG_FUTEX_PI=y’dir - Saldırgan şu süreçle yetkisini yükseltebilir
- Yalnızca sıradan thread sistem çağrılarıyla kernel stack belleğini gösteren dangling kernel pointer elde eder
- Neredeyse keyfi bir adrese pointer veya 8 baytlık sıfır yazabilen kısıtlı bir primitive oluşturur
- Bir fonksiyon tablosunu ele geçirerek kontrol akışını devralır ve root yetkisi elde eder
- Yamalanmamış tüm Linux dağıtımları etkilendiğinden en güncel LTS sürümüne yükseltilmelidir
remove_waiter() neden yanlış task’ı temizliyor?
kernel/locking/rtmutex.ciçindekiremove_waiter(), aslında bloklanmış thread’in kendi bekleme durumunu doğrudan temizlediği yol için yazılmıştır- Normal slow path’te çalışmakta olan
current, waiter’ın sahibi olan task olduğundancurrent->pi_blocked_onalanını temizlemek doğru davranıştır - Requeue-PI proxy yolunda ise
rt_mutex_start_proxy_lock(), başka bir uyuyan task adınart_mutex_waiter’ı kuyruğa ekler ve hata oluşursa bunu geri alır- Bu sırada
current,FUTEX_CMP_REQUEUE_PIçağıran requeuer’dır - Gerçek waiter ise
FUTEX_WAIT_REQUEUE_PIiçinde uyuyan ayrı bir task’tır
- Bu sırada
__rt_mutex_start_proxy_lock()-EDEADLKdöndürdüğünderemove_waiter(), waiter’ı lock’tan kaldırırken yalnızcacurrent->pi_blocked_onalanınıNULLyapar- Gerçek waiter’ın
pi_blocked_onalanı, kendi kernel stack’indekirt_mutex_waiter’ı göstermeye devam eder; waiter kullanıcı alanına döndüğünde bu stack frame’i serbest bırakılmış kabul edilir - Daha sonra PI chain araması bu task üzerinden geçtiği anda serbest bırakılmış stack nesnesini dereference eder
- lockdep yalnızca hangi
pi_lockın tutulduğunu kontrol eder; bunun kimin lock’ı olduğunu denetlemediği için bu hatayı yakalayamaz
-EDEADLK rollback’i oluşturan üç futex döngüsü
- Hata yoluna ulaşmak için üç futex ve üç thread ile bir PI bağımlılık döngüsü kurulur
f_pi_chain: waiter’ın önce kilitlediği PI futexf_pi_target: owner’ın önce kilitlediği ve requeue hedefi olan PI futexf_wait: waiter’ınFUTEX_WAIT_REQUEUE_PIile beklediği normal futex
- Tetikleme sırası şöyledir
- waiter
f_pi_chain’i kilitledikten sonraFUTEX_WAIT_REQUEUE_PI(f_wait -> f_pi_target)içinde bloklanır vert_mutex_waiterkendi kernel stack’ine yerleşir - owner
f_pi_target’ı kilitledikten sonra waiter’ın tuttuğuf_pi_chainüzerinde bloklanır - main thread
FUTEX_CMP_REQUEUE_PI(f_wait -> f_pi_target)çağırır
- waiter
- Proxy requeue, waiter’ı
f_pi_targeta bağlamaya çalıştığındawaiter → f_pi_target → owner → f_pi_chain → waiterdöngüsü kapanır - PI chain araması
-EDEADLKdöndürür ve hatalı rollback’i çalıştırır; bunun sonucunda waiter, danglingpi_blocked_onile uyanır - Kritik koşul, waiter hâlâ stack nesnesini tutarken requeuer’ın rollback yapmasıdır; döngü tamamlandıktan sonra süreç kendi kendine ilerler
- waiter kullanıcı alanına döndüğünde artık zaman baskısı yoktur; daha sonra istenen herhangi bir anda
sched_setattr()ile chain araması tetiklenebilir - Kurulumda üç thread kullanılsa da UAF yarışı tek CPU çekirdeğinde bile tetiklenebilir
Stack UAF’nin sağladığı ilk primitive
- Dangling pointer, önceki
FUTEX_WAIT_REQUEUE_PIframe’inde bulunanrt_mutex_waiter’ı gösterir - Aynı task’ın aynı stack derinliğine kontrol edilebilir baytlar yeniden yerleştirilirse, kernel’in bunu sahte bir
rt_mutex_waiterolarak dereference etmesi sağlanabilir - Sahte yapının nasıl yerleştirildiğine bağlı olarak tek bir erişimde iki ana primitive elde edilir
- Kısıtlar altında neredeyse keyfi bir adrese pointer yazılabilir
- Kısıtlar altında neredeyse keyfi bir adrese 8 baytlık sıfır yazılabilir
- Yazmadan önce birden fazla pointer dereference işlemi ve bütünlük kontrolü yapılır; ancak koşullar sağlanırsa yazma sonrasında da kernel çökmeden normal şekilde geri döner
- Exploit’i tamamlamak için stack frame yeniden kullanımı, sahte waiter’ın yapı kontrollerinden geçmesi ve yazma kısıtlarını karşılayan bir hedef seçilmesi gerekir
PR_SET_MM_MAP ile serbest bırakılmış stack frame’i yeniden kullanma
- waiter, futex sistem çağrısından döner dönmez
prctl(PR_SET_MM, PR_SET_MM_MAP, ...)çağırır prctl_set_mm_map(), kullanıcının sağladığı auxv’yi sabit boyutlu stack buffer’ıunsigned long user_auxv[AT_VECTOR_SIZE]içine kopyalar- Bu buffer, serbest bırakılmış waiter’a benzer bir stack derinliğinde yer aldığından, büyük ve hizalanmış, kontrol edilebilir bir qword bloğu önceki
rt_mutex_waiter’ın üzerine biner - auxv’nin çakışan alanı şu şekilde yapılandırılır
tree: silme sırasında seçilen child pointerW0_BASE’i tree root’a çıkaran bir rb node yapılırtask: zincir taramasındaki dereference’ların güvenle geçmesi için&init_taskolarak ayarlanırlock: yazma hedefini denk getirmek için&inet6_protos[IPPROTO_UDP] - 8olarak belirtilirwake_state:0olarak ayarlanır
- auxv memfd’ye konur ve kopyalama sayfa sınırını aşacak şekilde yerleştirilir; ardından kardeş thread,
prctlçalışırken arka sayfayafallocate(PUNCH_HOLE)yarışı sokarakcopy_from_usersüresini uzatır - Başka bir CPU’daki consumer thread, sahte waiter stack’te kalırken waiter üzerinde
sched_setattr()çağırarak PI zincirini tarar clone,setsockopt,pselect,keyctlgibi kontrol edilebilir büyük stack yerel değişkenleri kullanan diğer sistem çağrıları da aynı rolü oynayabilirprctl, buffer’ı büyük ve hizalanmış olduğu ve namespace gerektirmediği için seçildi; ek adaylar açık PoC kodunda yer alıyor
rb-tree silme ile kısıtlı pointer yazımı oluşturma
- Sahte waiter kontrol edilse bile hemen tam anlamıyla rastgele yazma elde edilmez; zincir taraması şu yolu yürütür
task->pi_blocked_oniçinde sahte waiter’ı bulurfake waiter->locküzerinden sahtert_mutex_base’i bulurrt_mutex_dequeue(lock, waiter),lock->waitersüzerinde rb-tree silme işlemi yapar
- Yalnızca tek child’ı olan root node silindiğinde bu child’ın root slot’una yazılması özelliğinden yararlanılır
lock,target - 8olarak belirtilirse çevredeki veri aşağıdakirt_mutex_basealanları olarak yorumlanırtarget - 8: kilitli değilmiş gibi okunması gerekenwait_locktarget: üzerine yazılacakwaiters.rb_root.rb_nodetarget + 8:waiters.rb_leftmosttarget + 16:owner
- Sonuçta çalıştırılan tekil yazma
*(uint64_t *)target = W0_BASEolur - Hedef adres kabaca şu koşulları sağlamalıdır
target - 0x08’in alt 32 biti0olmalıtarget + 0x08’deki 64 bitlik değer0olmalıtarget + 0x10’daki owner pointer’ında alt flag’ler çıkarıldıktan sonraki değer0olmalı
- Öndeki qword kilitli bir spinlock gibi görünürse trylock başarısız olur ve hiçbir şey yazmadan çıkar
- Arkadaki değer kontrol edilmeyen bir top waiter’a veya owner’a işaret ederse ya da eşlenmemiş bir değer olursa kernel panic oluşabilir
W0_BASE, karşılaştırma, yeniden kuyruğa alma, öncelik güncelleme ve owner’sız wakeup bitene kadar geçerli kalması gerektiğinden CEA’nın direct-map alias’ı kullanılır
prefetch sızıntısı ve CPU entry area
-
KASLR·physmap taban adresini bulma
- Belirli bir adres için
prefetchçalışma süresi, o adresin mevcut page table’da map edilip edilmediğine göre değişir - Yetkisiz bir process kernel adres aralığındaki çalışma sürelerini ölçerse mapping konumunu tahmin edebilir; ayrıntılı prensipler prefetch makalesinde özetlenmiştir
- Varsayılan Linux kernel image taban adresinin entropisi yaklaşık 9 bit olduğundan, tekrarlı ölçümlerle KASLR taban adresi neredeyse %100 güvenilirlikle geri kazanılır
- Teorik olarak
prefetchbulunan ve uygun KPTI bulunmayan CPU’lar etkilenir; pratikte ise bu teknik çoğunlukla KPTI’nin kapalı olduğu x86’da kullanılır - kernelCTF image’ında KPTI kapalıdır; KPTI açık olsa bile
prefetchile EntryBleed birleştirilirse trampoline üzerinden kernel image taban adresi geri kazanılabilir
- Belirli bir adres için
-
CEA adres rastgeleleştirmesini aşma
- CPU entry area (CEA), giriş ve exception işleme stack’leri ile register context’lerini tutan, x86’da CPU başına bir yapıdır
- Yetkisiz bir program yazılımsal exception tetiklediğinde kendi register context’ini CEA exception stack’indeki
pt_regsalanına yazar ve yaklaşık 120 baytlık ardışık, kontrol edilebilir bellek oluşturabilir - Linux 6.2’den önce CEA sanal adresi tamamen sabitti; sahte yapılar, pointer dereference yan etkilerini soğurma ve ROP stack’i kurma için doğrudan kullanılabiliyordu
- Project Zero’nun Bringing back the stack attack yayınının ardından Linux 6.2’den itibaren CEA sanal adresi güçlü şekilde rastgeleleştirildi
- Her CPU’nun CEA sanal adresi farklı şekilde rastgeleleştirilir, ancak fiziksel adres sabit olduğundan physmap taban adresi bilinirse direct-map alias’ı hesaplanabilir
prefetch, aday sınır normalizasyonu ve beklenen CEA sayfa kontrolü birleştirilerek çevredeki alias’lar elenir vecea_direct = physmap_base + CPU1_CEA_BASEelde edilir- kernelCTF LTS
6.12.80’in 3,5 GB’lık boot ortamında ilgili offset0x11c517000(+0x1f58)’dir
CEA’yı sahte waiter ve takip eden nesneler olarak yeniden kullanma
- İlk yazmadan önce CEA’daki
W0alanına kendi içinde tutarlı bir sahte waiter ve lock yerleştirilirtask,&init_taskolarak ayarlanırprioiçin geçerli bir değer konur- lock’un
wait_lockalanı kilitli değilmiş gibi görünecek hale getirilir - owner, dequeue, yeniden kuyruğa alma, öncelik güncelleme ve wakeup aşamalarını güvenle geçecek şekilde yapılandırılır
- rb-tree yazımı tamamlandıktan sonra
W0artık waiter olmak zorunda değildir; üzerine yazılan hedefin gerektirdiği yapı ile CEA yeniden doldurulabilir - CEA yaklaşık 120 baytla küçüktür, ancak hesaplanabilir sabit bir kernel adresine veri yerleştirmeyi sağladığı için verimlidir
- NPerm ve kernelsnitch gibi öğeler daha geniş bir alanda aynı rolü üstlenebilir
- Exploit, tek bir CEA bölgesini sahte
rt_mutex_waiter, sahte lock,inet6_protocol, JOP ve stack pivot slot’ları, son ROP stack’i olarak sıralı veya eşzamanlı biçimde kullanır
inet6_protos[IPPROTO_UDP] ile denetim akışını ele geçirme
- Tipik bir x86_64 Linux’ta KASLR taban adresi elde edildikten sonra, koşullara uyan bir fonksiyon tablosunun ya da onu içeren bir nesnenin üzerine yazan kısa bir yol seçilebilir
- Yazılabilir veri alanındaki
inet6_protos[IPPROTO_UDP]çevresi, gerekli kısıtları doğal biçimde karşılarinet6_protos[16] == NULL, sahtewait_lockiçin kilitli olmayan durum olurinet6_protos[17] == &udpv6_protocol, gerçekten üzerine yazılacak hedeftirinet6_protos[18] == NULL, sahterb_leftmostolurinet6_protos[19] == NULL, sahte owner olur
- Yazma tamamlandığında
inet6_protos[IPPROTO_UDP], CEA sayfası içindeki sahteinet6_protocolü işaret eder - CEA yeniden püskürtülerek yapı şu şekilde düzenlenir
handler: ilk pivot gadget’ı olarak belirlenirerr_handler: kullanılmazflags:INET6_PROTO_NOPOLICY | INET6_PROTO_FINALolarak ayarlanır
::1adresineconnectettikten sonra veri yazan bir IPv6 UDP loopback paketi gönderildiğinde çekirdek sahtehandlerı çağırır ve program sayacını kontrol etmeyi mümkün kılar
Kısa pivot ve DirtyMode ile yetki yükseltme
- Google kernelCTF’nin
lts-6.12.80hedefinde uygun tekil bir stack pivot gadget’ı bulunamadığından, ek bir load/call ile CEA adresirbpiçine konduktan sonramov rsp, rbp; pop rbp; retile pivot yapılır ret2usrya da/proc/%P/fd/xüzerine tamamen yazma, yaklaşık 10 gadget qword’u gerektirdiği için sınırlı CEA alanına göre fazla büyüktür- Son aşamada, tek bir yazmayla yetki bitlerini değiştirip kalan süreci kullanıcı alanında yürüten DirtyMode kullanılır
- Yazma hedefi, çekirdek verilerindeki
coredump_sysctls[1].mode, yanicore_patternsysctl’inin erişim modudur - Çekirdek imajıyla aynı KASLR kaymasını paylaştığı için adres hesaplanabilir; yazma biti olan sondan ikinci bitin set edilmiş olduğu bir değer yeterlidir
- Kısa bir
pop reg; mov [reg], reg; retzinciriyle mod değeri değiştirilir ve ele geçirilen iş parçacığımsleepile güvenli biçimde durdurulur /proc/sys/kernel/core_patterntüm kullanıcılar tarafından yazılabilir hale geldiğinde, yetkisiz bir süreç|/proc/%P/fd/666 %Pyazar ve helper’ı çökertir; böylece çekirdek saldırganın ikilisini root yetkileriyle çalıştırır- İlk rb-tree yazması, hizalama/yerleşim kısıtları nedeniyle
coredump_sysctls[1].modeadresine doğrudan ulaşamadığından, mod değişikliği kısa ROP aşamasında yapılır
Tam exploit akışı ve sonuç
- Saldırı şu sırayla ilerler
prefetchile çekirdek imajı kayması ve physmap taban adresi sızdırılır- GhostLock ile waiter’ın
pi_blocked_onalanında danglingrt_mutex_waiterbırakılır PR_SET_MM_MAPile aynı çekirdek stack frame’i yeniden kullanılarak sahte waiter oluşturulur- rtmutex rb-tree silme işlemi kullanılarak
inet6_protos[IPPROTO_UDP]içine CEA işaretçisi yazılır - CEA’ya sahte
inet6_protocol, pivot slotu ve ROP stack’i yerleştirilir - IPv6 UDP loopback paketiyle üzerine yazılmış handler çağrılır
- DirtyMode ile
core_patternın mod biti değiştirilir ve yetki yükseltme kullanıcı alanında tamamlanır
- kernelCTF uzak ortamında CEA ve DirtyMode’u birleştiren yol yaklaşık 5 saniyede bayrağı elde etti
- Tam exploit CyberMeowfia projesinde yayımlanmış durumda
- Android’de stack frame’inin yeniden kullanımı ve ASLR·CFI atlatma yöntemleri farklılaşır; bunlar ayrı bir devam yazısında ele alınacak
Alternatif yollar ve hafifletmeler
-
Daha büyük ROP alanı
- NPerm tabanlı bellek, denetim akışı ele geçirildikten sonra büyük bir sahte stack olarak kullanılabilir
- Lukas Maar’ın heap-KASLR sızıntısı gibi daha ağır yollar da mümkündür, ancak ek aşamalar nedeniyle çalışma süresi uzar
- kernelCTF’de en kısa ve en güvenilir zincir avantajlı olduğundan CEA ve DirtyMode kombinasyonu kullanılır
-
Çekirdek yaması
- Nihai yama,
currentyerinewaiter->tasktemel alınarakpi_lockalır vepi_blocked_onalanını temizler remove_waiter(),waiter_task = waiter->taskdeğerini kaydettikten sonra şu sırayla işlem yaparwaiter_task->pi_lockkilitlenir- waiter rtmutex kuyruğundan kaldırılır
waiter_task->pi_blocked_on = NULLolarak ayarlanır- Sonraki
rt_mutex_adjust_prio_chain()çağrısına dacurrentyerinewaiter_taskgeçirilir
- Araştırmacıların v1’den önce gönderdiği ayrı düzeltme önerisi, çağıranın sahip task’ı açıkça ileteceği şekilde yapılandırılmıştır
- Kendi kendisinin bloklandığı yollarda
currentiletilir - Proxy rollback’te proxy hedefi olan
taskgeçirilir pi_blocked_onhâlâ ilgili waiter’ı gösteriyorsa temizlenir ve task’ınpi_locku ile korunur
- Kendi kendisinin bloklandığı yollarda
- Nihai yama,
-
RANDOMIZE_KSTACK_OFFSET- Exploit, serbest bırakılmış waiter frame’i ile sonraki
user_auxvframe’inin deterministik olarak çakışmasına dayanır RANDOMIZE_KSTACK_OFFSETaçılırsa stack ofseti değişir ve bu aşama yaklaşık 1/32 olasılıklı 5 bitlik bir tahmine dönüşür- Gönderilen iki genel hedefte bu ayar varsayılan olarak kapalıydı; hafifletme hedefinde ise açık olduğundan bu exploit yolu kullanılmadı
- Exploit, serbest bırakılmış waiter frame’i ile sonraki
-
STATIC_USERMODE_HELPERSTATIC_USERMODE_HELPERbu belirli DirtyMode yolunu engeller- Ancak erişim izninin
ctl_table::modeile denetlendiği ve tablonun tahmin edilebilir, yazılabilir çekirdek verilerinde bulunduğu başka/proc/sysayarlarında aynı yöntem genelleştirilebilir
Açıklama takvimi
- 18 Nisan 2026: Zafiyet ve taslak yama
security@kernel.orgadresine iletildi - 20 Nisan 2026: Zafiyet başka bir yamayla düzeltildi
- 4 Mayıs 2026: Düzeltme v1’i geriye dönük olarak uygulandı
- 30 Haziran 2026: Google, kernelCTF gönderimini doğruladı
- 7 Temmuz 2026: Teknik analiz yayımlandı
- VEGA’nın bulduğu zafiyete standart 90+30 gün açıklama politikası uygulandı
1 yorum
Hacker News yorumları
Android 9·13·16 ve farklı Firefox 150 öncesi sürümlerini kullanan 3 cihazda test ettim; 2’si boot loop’a girip kurtarma moduna alınmak zorunda kaldı, kalan 1’inin ise gücü kesildi. Demo, desteklenen Pixel cihazlarında duvar kağıdını değiştiriyor; test sayfasına IonStack üzerinden bakılabilir
Kişisel cihazlarda bloglara ya da rastgele sitelere bakarken, ana tarayıcıdan ayrı olarak Chromite gibi Chromium tabanlı bir tarayıcı kurup, bayraklardan JavaScript’i ve sık hedef alınan donanım hızlandırmalı video kod çözücüsünü kapatmak, ardından bozulan sitelerde okuma modunu kullanmak daha güvenli. Alternatif olarak buna ayrılmış bir tablet de tutulabilir
adbkurup doğruladıktan sonra tüm sonuçları açıklayacağımTest sayfasına girince Firefox sekmesinde çıktı belirdi ve kavram kanıtı kodu çalışmış gibi göründü, ancak ardından telefon dondu ve tüm girdileri reddetti. Yalnızca yeniden başlatma işe yaradı; çekirdek donmuş gibi görünürken yeniden başlatma olayına nasıl yanıt verebildiğini merak ediyorum. Ekran, çalıştırma sonucunun bir kısmını göstermeye devam ederek açık kaldı, sonra ekran koruyucu devreye girdi
Sadece exploit’i bulmakla kalmayıp, copyfail’den farklı olarak herkesin hemen kullanabileceği bir zero-day yerel ayrıcalık yükseltme betiği yayımlamayan güvenlik araştırmacılarına büyük övgü
Rocky Linux 9 üzerinde saatlerce yerel ayrıcalık yükseltme (LPE) denedim ama neyse ki başarılı olamadım. Çok fazla zamanı ya da çok yüksek becerisi olmayan biri için kurumsal dağıtımlarda gerçek saldırıda kullanılması zor görünüyor
Normalde bootloader kilidi açılamayan telefonlarda bile bu açıkla bootloader kilidini açmanın mümkün olup olmadığını merak ediyorum. Mümkünse Android ekosisteminde yaşanan en büyük olaylardan biri olabilir
Başlığa yerel ayrıcalık yükseltmesini ifade eden LPE eklenseydi çoğu kişi içi rahatlayıp hafta sonuna dönebilirdi gibi geliyor
Ama bu saldırı, Firefox’un izole tarayıcı süreci gibi güçlü biçimde sandbox’lanmış süreçler içinde de tetiklenebiliyor. Saldırgan, bir JavaScript açığıyla izole sandbox içinde yerel kod çalıştırdıktan sonra bu açıkla çekirdek moduna kadar yükselen iki aşamalı saldırıyı birleştirebilir; bu yüzden hem Firefox’u hem de Linux çekirdeğini güncellemek gerekiyor
“Google, kernelCTF ödülü olarak 92.337 dolar ödedi” kısmı özellikle dikkat çekici
Bunun, Android uygulamalarının NDK ile yerel kod çalıştırıp root yetkisi alabileceği anlamına gelip gelmediğini ve SELinux’un savunmada işe yarayıp yaramadığını merak ediyorum
Eski çekirdeklere yamaları backport etmek mümkün, ancak akıllı telefon güncelleme notlarında CVE’lerin açıkça belirtilmesi nadir olduğu için, zafiyet tarama araçları pratikte tek doğrulama yöntemi oluyor. Play Store’dan ya da dışarıdan alınan bir uygulama ele geçirilmişse anında root yetkisi kazanabilir; bu yüzden kurulum sırasında güven ve denetimi doğrulama ilkesi hâlâ önemli. Gelecekte bunun, tüm Google Play Integrity seviyelerine eklenip yaması yapılmamış telefonlara çeşitli uygulamaların kurulmasını engellemesi mümkün olabilir. Rastgele sitelerden ve reklamlardan kaçınmanın zor olduğu tarayıcılarda ise sandbox escape, uygulama izolasyonunu da aştığı için daha ciddi; iOS’taki JailbreakMe’ye benziyor
Son 15 yılda çıkan Linux sürümlerinde yerel kod çalıştırabilen herhangi bir uygulama, cihaza çekirdek güncellemesi gelene kadar root yetkisi elde edebilir
GhostLock’un Linux 2.6.39’da eklenmiş olması ve ancak Linux 7.1’de düzeltilmesi sarsıcı
Yorumları sanki dün okumuşum gibi geliyor ama yazım zamanı hepsinde 10 saatin altında görünüyor; HN’nin zaman gösterimi yanlış mı diye merak ediyorum
Her gün bakılan “underwater” listesinde, yani çok oy almasına rağmen bir nedenle ana sayfaya çıkamayan gönderiler arasında bu yazı en üstteydi, bu yüzden yeniden öne çıkarıldı. Garip görünüyor ama bundan daha az kafa karıştırıcı bir alternatif henüz bulunmuş değil