Android 14, uyumlu cihazlarda bellek güvenliği hatalarına karşı koruma sağlayabilecek "gelişmiş bellek koruması" adı verilen yeni bir beta özelliği ekleyebilir.
Bellek güvenliği hataları yazılım geliştirmedeki en ciddi hatalardan bazıları olduğundan, bellek güvenliği son zamanlarda Google için büyük bir öncelik haline geldi. Aslına bakılırsa, ciddi Android vakalarının çoğunluğunu bellek güvenliği açıkları oluşturuyordu. Google'ın Android'in yeni yerel sürümünün önemli bir bölümünü yazdığı 2022 yılına kadar güvenlik açıkları içindeki kod Rust programlama dili C/C++ yerine. Google, Android'deki bellek güvenliği açıklarını azaltmak için diğer yöntemleri desteklemek için çalışıyor; bunlardan biri bellek etiketleme olarak adlandırılıyor. Çalışan desteklenen cihazlarda Android14, bu özelliği değiştirebilecek yeni bir "gelişmiş hafıza koruması" ayarı olabilir.
Bellek Etiketleme Uzantısı (MTE), Arm v9 CPU'ların belleğe karşı koruma sağlayan zorunlu bir donanım özelliğidir Bellek hakkında ayrıntılı bilgi sağlayarak güvenlik hataları (hafif çalışma zamanı performansı maliyeti ek yüküyle birlikte) ihlaller.
Google'ın açıkladığı gibi, “yüksek düzeyde, MTE her bellek ayırmayı/yer ayırmayı ek meta verilerle etiketler. Bir bellek konumuna bir etiket atar ve bu etiket daha sonra o bellek konumuna referans veren işaretçilerle ilişkilendirilebilir. Çalışma zamanında CPU, işaretçinin ve meta veri etiketlerinin her yükleme ve depolamada eşleşip eşleşmediğini kontrol eder.Google, birkaç sürümden beri Android yazılım yığınında MTE'yi desteklemek için çalışıyor. Android 12'de, Android'in yığın ayırıcısı Scudo, uyumlu cihazlarda üç MTE işletim modu için destek ekledi: senkronize mod, senkronize olmayan mod ve asimetrik mod. Google ayrıca derleme sırasında veya sistem özellikleri ve/veya ortam değişkenleri aracılığıyla sistem işlemleri için MTE'nin etkinleştirilmesini de mümkün kıldı. Uygulamalar, MTE'yi desteklemeyi tercih edebilir. android: memtagMode bağlanmak. Android'deki işlemler için MTE etkinleştirildiğinde, serbest kullanım sonrası kullanım ve arabellek taşmaları gibi tüm bellek güvenliği hataları sınıfları, sessiz bellek bozulması yerine bir çökmeyi tetikler.
İçinde Android 13Google, istenen MTE işletim modunu önyükleyiciye iletmek amacıyla kullanıcı alanına bir ABI ekledi. Bu, varsayılan olarak etkinleştirilmiş olarak gönderilmeyen uyumlu cihazlarda MTE'yi etkinleştirmek için kullanılabilir. veya alternatif olarak, etkinleştirildiği uyumlu cihazlarda devre dışı bırakmak için kullanılabilir. varsayılan. Android 13'te ro.arm64.memtag.bootctl_supported sistem özelliğini "true" olarak ayarlamak, sisteme önyükleyicinin ABI'yi destekler ve ayrıca Geliştirici Seçenekleri menüsünde kullanıcının bir sonraki adımda MTE'yi etkinleştirmesine olanak tanıyan bir düğmenin görünmesini tetikler. yeniden başlatın. Bu, uygulamalarının davranışını MTE etkinken test etmek isteyen geliştiricileri hedefliyordu.
Ancak Android 14'te, uyumlu cihazlarda MTE'yi etkinleştirmek, Geliştirici Seçeneklerine daha fazla dalmayı gerektirebilir. Cihazda MTE destekli bir Arm v8.5+ CPU bulunuyorsa cihaz uygulaması, istenen MTE işletim modunu önyükleyiciye iletmek için ABI'yi ve yeni 'ro.arm64.memtag.bootctl_settings_toggle' sistem özelliği true olarak ayarlanırsa, Ayarlar > Güvenlik ve gizlilik > Daha fazla güvenlik bölümünde yeni bir "gelişmiş bellek koruması" sayfası görünebilir ayarlar. Bu sayfa aynı zamanda yeni aracılığıyla da başlatılabilir. ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS niyet eylemi.
Özellikle Tensor G2 yonga seti Google Piksel 7 serisi Arm v8.2 CPU çekirdeklerini kullanıyor, dolayısıyla MTE'yi desteklemiyor. Yaklaşan Google Pixel 8 serisi, diğer birçok amiral gemisi Android cihazında olduğu gibi yeni Arm v9 CPU çekirdeklerini kullanıyorsa, MTE'yi destekleyebilecek donanıma sahip olacaklar. Ancak bu "gelişmiş bellek koruma" özelliğinin gerçekten kararlı sürümde yer alıp almayacağı henüz bilinmiyor.
Güvenlik araştırmacısına teşekkürler @flawedworlddev Bu makaledeki yardımları için!