OnePlus 3/3T Bootloader Güvenlik Açığı, Fastboot'ta SELinux'un İzin Verme Moduna Geçilmesine İzin Veriyor

click fraud protection

OnePlus 3/3T önyükleyicisindeki ciddi bir güvenlik açığı, saldırganların SELinux durumunu Zorlayıcı durumdan İzin Veren duruma geçirmesine olanak tanıyor! Daha fazlasını öğrenmek için okumaya devam edin!

OnePlus 3 ve OnePlus 3T şu anda satın alabileceğiniz en iyi telefonlar arasında yer alıyor. 2017'nin yaklaşmakta olan amiral gemileri henüz tüketicilere açıklanmamış olsa da, onların yokluğunda OnePlus 3/3T gerçek dünya performansına hükmediyor uygun bir fiyata.

Ancak cihazı değerlendirmede adil olmamız gerekirse, OnePlus'ın tüm çabalarına rağmen OnePlus 3/3T'nin hatasız olmadığını kabul etmemiz gerekiyor. Örneğin, daha önce aşağıdaki gibi güvenlik sorunları hakkında rapor vermiştik: OnePlus IMEI ayrıntılarını sızdırıyor Telefonunuzdaki güncellemeleri kontrol ettiğinizde ağ üzerinden. Ve şimdi listeye eklememiz gereken başka bir güvenlik sorunu daha var, bu sorun potansiyel olarak daha tehlikeli sonuçlar doğurabilir.

OnePlus 3/3T'nin önyükleyicisindeki bir güvenlik açığı, kötü niyetli saldırılara kapı açıyor. IBM X-Force Uygulama Güvenliği Araştırma Ekibinden Roee Hay tarafından bulunduğu üzere ve 

IBM X-Force Exchange platformunda açıklandıBu güvenlik açığı, bir saldırganın cihazlardaki SELinux durumunu değiştirmesine ve böylece onu izin verilen moda geçirmesine olanak tanır. Saldırganın ihtiyacı olan tek şey fiziksel erişim cihaza veya ADB bağlantısına uzaktan erişim cihaza.

SELinuxveya Güvenliği Geliştirilmiş Linux, güvenlik politikalarına erişime ve yönetime izin veren bir Linux çekirdek güvenlik modülüdür. SELinux, Android 4.3'ten başlayarak Android'e tanıtıldı ve şu şekilde ayarlandı: Uygulama Android 4.4'ten beri varsayılan moddur. Bu zorunlu erişim kontrol sistemi, mevcut erişim kontrol haklarının uygulanmasına yardımcı olur ve ayrıcalık yükseltme saldırılarını önlemeye çalışır. Bu, kötü niyetli olarak root erişimi elde etmeyi amaçlayan bir uygulama veya güvenlik açığı gibi, cihazınız üzerinde yetkisiz kontrol yapılmasına engel teşkil eder. SELinux'u şu şekilde ayarlama: Uygulama Android'de varsayılan olarak normal kullanıcıları bu tür saldırılardan korumanın ilk adımı olarak hizmet eder.

Güvenlik açığının istismar edilmesi oldukça basittir; aslında, tipik bir istismarın nasıl görüneceğini hayal ettiğinizden ziyade, OnePlus açısından büyük bir dikkatsizlik gibi görünüyor. İlk olarak, bir saldırgan OnePlus 3/3T'yi 'hızlı önyükleme' moduna yeniden başlatır; fiziksel erişiminiz varsa, önyükleme sırasında Sesi Artırma düğmesine basmanız yeterlidir, ancak bunu yapmazsanız ADB komutunu verebilirsiniz. adb reboot bootloader cihaza. Cihazdaki fastboot modu, kilitli cihazlarda güvenliğe duyarlı herhangi bir komutun tamamlanmasına izin vermemesi gereken bir USB arayüzünü açığa çıkarır. Ancak OnePlus 3/3T'de, yalnızca fastboot oem selinux permissive fastboot arayüzü aracılığıyla komut SELinux modunu değiştirir Uygulama ile Müsamahakar.

fastboot oem selinux permissive
...
OKAY[ 0.045s]
finished. totaltime: 0.047s

...

OnePlus3:/ $ getenforce
Permissive
OnePlus3:/ $

Sorunu daha da karmaşık hale getirmek için, OnePlus 3 ve 3T'nin 'Hakkında Ekranı'nda cihazın mevcut SELinux durumunu belirtecek herhangi bir girişin bulunmaması. Kurban, istismarın aktif olarak kullanıldığına tanık olmadıysa cihazının tehlike altındaki durumundan habersiz kalmaya devam edecektir. 'Hakkında Ekranı'nda bir SELinux durumu girişinin olmaması, hem Android 6.0 tabanlı Açık Beta sürümlerinde hem de Android 7.0 resmi ROM'larında eksik.

SELinux durumunu İzin Veren olarak değiştirmek için çeşitli uygulamalar mevcuttur; SELinuxModeChange başvuru. SELinux'un bu yöntemle değiştirilmesi, yeniden başlatma sırasında durumun devam etmesine izin vermez. Yine de yapabilirsin komut dosyalarını kullan sürdürmek için Müsamahakar Sabit yeniden başlatmalarda SELinux durumu. Bu yöntemlerin her ikisi de root erişimi gerektirir; bu da kullanıcının maruz kaldığı riskler hakkında zaten bilgi sahibi olduğu anlamına gelir. Ancak SELinux modunun değiştirilmesindeki en büyük fark Müsamahakar Yukarıdaki güvenlik açığını kullanmak yalnızca Sabit yeniden başlatmalarda devam ediyor, öyle yapıyor root erişimine ihtiyaç duymadan.

Bugün itibariyle güvenlik açığına karşı herhangi bir çözüm mevcut değildir.


GÜNCELLEME:

Ulaştık SultanxdaBu sorun hakkında daha fazla bilgi edinmemize yardımcı olup olamayacağını görmek için OnePlus cihazları için en tanınmış özel ROM geliştiricilerinden biri olan. Kök kaynağı bulmak için hemen kodu inceledi ve bulduğu şey şu:

"Fastboot oem selinux"un yolu " komutunun işe yaraması, Linux'u başlatırken çekirdek komut satırına fazladan bir argüman eklemesidir. Ekstra argüman "androidboot.selinux=" biçiminde gelir", Neresi "izin verici" olabilir. İşlerin komikleştiği yer burası: "androidboot."Çekirdek komut satırındaki argümanlar Android'in init'i tarafından ayrıştırılır. Normal bir Android üretim yapısında ("kullanıcı" yapısı), "androidboot.selinux" argümanı tamamen göz ardı edilir ve selinux her zaman uygulamaya zorlanır. Yani bu hata iki sorundan oluşuyor:

  1. Kullanıcılar, önyükleyicinin normalde bir mühendislik/hata ayıklama ROM yapısında selinux'a izin verecek bir bayrak geçirmesini sağlayabilir
  2. OnePlus, üretim ROM yapıları için bile "androidboot.selinux" bayrağını onurlandırmak amacıyla Android'in init'ini değiştirdi

Android'in init'inin üretim yapıları için "androidboot.selinux" bayrağını yok sayacak şekilde yapılandırıldığı yer burasıdır: https://android.googlesource.com/platform/system/core/+/android-6.0.0_r41/init/Android.mk#7

Kaynak kodundaki ALLOW_DISABLE_SELINUX bayrağı yalnızca kullanıcı hata ayıklama ve mühendislik yapıları için 1'e ayarlanmıştır.

(ROM'umu üretim (kullanıcı) modunda oluşturduğum için ROM'um bundan etkilenmiyor)

Yani "androidboot.selinux" ROM'umda göz ardı ediliyor, "fastboot oem selinux" " komutu aynı zamanda OnePlus'ın yarattığı bir şey gibi görünüyor, çünkü CAF'ın genel önyükleyici kaynaklarında böyle bir komut mevcut değil. Aklımda kalan, kilidi açılmış önyükleyicilere sahip kullanıcılar için bunu düzeltmenin 4 yolunu düşünebilirim:

  1. "selinux" dizisinin tüm örneklerini farklı bir şeye ("sclinux" gibi) değiştirmek için önyükleyiciyi hex-düzenleyin, böylece bayrak Android'in init'i tarafından tanınmayacaktır.
  2. Tüm "androidboot.selinux" örneklerini değiştirmek için OxygenOS'taki Android başlangıç ​​ikili dosyasını hex ile düzenleyin. farklı bir şey ("androidboot.sclinux" gibi) böylece Android init androidboot.selinux bayrağı
  3. "Androidboot.selinux" bayrağını Android'in başlangıcından gizlemek için çekirdek komut satırı sürücüsüne SafetyNet bypass'ıma benzer bir hack ekleyin

Sultanxda'ya perde arkasında neler olup bittiğini anlamamıza yardımcı olmak için ayırdığı zaman ve çaba için teşekkür ederiz. Durumun farkında olan ve konuyu inceleyen OnePlus'a da ulaştık.


OnePlus'ın bu ciddi sorunu kamuoyu önünde kabul etmesini ve sorunu düzeltmeye yönelik planlarında şeffaf olmasını umuyoruz.