Varsayılan çekirdeklerinde yetenekleri destekleyen herhangi bir Google cihazı var mı?


14

/systemBir Nexus cihazını sistemsiz olarak köklendirirsem ( bölümleme için hiçbir değişiklik yapılmazsa ) , orijinal çekirdek ikili dosyasını değiştirmeden yürütülebilir dosyalarda yetenekleri ayarlayabilir miyim?

Sık sık dosyaları terminalimden kısıtlama olmadan yönetmek istiyorum (zorunlu CAP_DAC_READ_SEARCH) . Ancak, süper kullanıcıyı da kullanmak istemiyorum.
Gerekli şeyler, bunları kullanmak için çekirdek desteği boyunca büyük harf ayarlamak için araçlardır (diğer kullanıcı alanı şeylerine güvenmez) .

Sorun şu ki, böyle bir cihazım yok. Bu yüzden herhangi birinin üzerinde çalışıp çalışmayacağını söyleyemem Nexus 5X Nexus 6P Nexus 9 Pixel C.


2
Ayrıca bir bağlantı
taklidi

Şüpheliyim ... Android, standart GNU libc (glibc) kütüphanesini değil Bionic libc kullandığından POSIX uyumlu bile değildir. Kendi çekirdeğinizi Bionic yerine CrystaX NDK gibi farklı bir libc ile derleyebilirsiniz, ancak bu özelliklerin de içinde olup olmadığını bilmiyorum.
acejavelin

@acejavelin: kullanıcı alanı bölümü yalnızca yetenek içeren genişletilmiş öznitelikleri ayarlamak için gereklidir. Diğer her şey çekirdek tarafıdır. /system/bin/pingKomutun gerçek samsung cihazımda setuid olmadığını fark ettim CAP_NET_RAW. Ancak, gerçek bir cihazı köklendirmeyeceğim ve ilgili bilgileri görmek için hangi aracı kullanabileceğimi bilmiyorum, bu yüzden kontrol edemiyorum.
user2284570

Neden bir Nexus cihazını rootlamıyorsunuz? Bunun için tasarlanmıştır ve garantinizi geçersiz kılmaz. Herhangi bir Nexus cihazını varsayılan, köksüz ve kilitli durumuna geri yüklemek çok basittir, cihaz temelde kırılmaz.
acejavelin

@acejavelin: Bir nexus cihazım yok… Amacım güvenlik araştırması ve google yalnızca kendi cihazları için ödül. Bu yüzden sorumun cihazlarından birinin çekirdeğinin xattr yeteneklerini destekleyip desteklemediğini bilmem gerekiyor. Galaksi sekmesinde gördüğüm şey muhtemelen sadece samsung ile ilgili. Soruma kök salmıyorsam, bu net değil gibi kapalı olabilir .
user2284570

Yanıtlar:


1

Soru eski olmasına rağmen, Cevaplanmamış (etiketlerim) soruların üstünde görünmeye devam ediyor . Sanırım buna cevap vermeliyim :)

AOSP'UN KAPASİTELERE DESTEĞİ:

Soru özellikle Google cihazları hakkında, hiç Google cihazı kullanmadım. Ancak kesin olarak söyleyebileceğim, Android 1.6 kadar düşük çalışan cihazların çoğunda (hepsi değilse de) Linux (işlem) özelliklerinin etkinleştirilmiş olması gerektiğidir. AOSP'nin her iki birincil bileşeninde initve system_serverher ikisinde de referans bulunmaktadır . Android 4.2'de, örneğin, installd- başka bir temel bileşen - bırakılan yeteneklerle çalışmak için yapıldı.

Dosya sistemi yetenekleri önemli biri idi Android 4.3 Güvenlik Geliştirmeleri kaldırıldı set-uid/ set-gidgibi ikililer run-asüzerlerinde dosya yetenekleri ayarı. Bu , Android'in köklendirme yolculuğunda devrim niteliğinde değişikliklere neden oldu .

Dosya yeteneklerinin kullanılmasını engelleyen Android 8'de Ortam özellikleri desteği eklendi :

Dosya yetenekleri, bir dosya riski olan bir dosyayı yürüten herhangi bir işlem bu yetenekleri kazanabileceğinden, bir güvenlik riski oluşturur.

Birçok inithizmet bunlara bağlıdır, örneğin storagedkendi hizmetim sshdve dnscrypt-proxyhizmetlerim.

KERNEL'İN KAPASİTE DESTEĞİ:

, Çekirdek kısmına gelince olmadan çekirdek yapı yetenekleri isteğe bağlı değildir:

2.5.27 çekirdeğinden 2.6.26 çekirdeğine, yetenekler isteğe bağlı bir çekirdek bileşeniydi ve CONFIG_SECURITY_CAPABILITIES çekirdek yapılandırma seçeneği ile etkinleştirilebilir / devre dışı bırakılabilir .

Ve:

Linux 2.6.33 öncesi çekirdeklerde, dosya özellikleri CONFIG_SECURITY_FILE_CAPABILITIES seçeneği ile yapılandırılabilen isteğe bağlı bir özellikti . Linux 2.6.33'ten bu yana, yapılandırma seçeneği kaldırılmıştır ve dosya özellikleri her zaman çekirdeğin bir parçasıdır.

Android depolarındaki en eski ortak çekirdek sürümü 2.6.39'dur ve dosya özellikleri için destek içerir .

Çekirdek tarafındaki dosya sistemi yetenekleri için destek bazı OEM'lerden ertelenmiş olmalı, ancak geçiş yapmak zorundaydı, aksi takdirde işlevler bozulacaktı. Örneğin surfaceflinger(Android'in yüzey bestecisi ), Android 7.1'den beri dosya özellikleri olmadan çalışmaz.

Anahat Linux 4.3 Ortam (süreç) yetenekleri için Sep'15 in yamalı çekirdek backported Android'e mutlaka çekirdeğin bir parçası olan Böylece 2016 yılında 3.18 ve 4.1 çekirdek.

SONUÇ:

Linux dağıtımlarında, çok az program Linux yeteneklerinden yararlanır. Orada olmasına rağmen pam_capçoğunlukla, (veya tüm?) Dağıtımlar hala kullanmak set-uidüzerine su, sudo, ping, mount, passwdvb. Ancak Android yetenekleri çerçeve ve çekirdek hizmetlere derinlemesine entegre edilmiştir. Bunları kaldırmak için AOSP ve çekirdek kaynağında yüzlerce satırın düzenlenmesi gerekebilir. Bir OEM'in (özellikle AOSP'yi geliştiren ve Android için Linux çekirdeğini değiştiren Google), Android çekirdeğinde hazır olduğunda bu ücretsiz güvenlik özelliğini kullanmaması mantıklı değildir . İşletim sistemi ile ilgili saf bir özelliktir, ekstra donanım desteği talep etmez. Bu nedenle, herhangi bir üreticinin herhangi bir telefonunun desteklenen yetenekleri olmalıdır.


SORULAR:

çekirdek ikilisini değiştirmeden yürütülebilir dosyalarda yetenekleri ayarlayabilir miyim?

Evet, olmalısın.

Gerekli olan şey, büyük harfleri ayarlamak için araçlar ...

Ben kullanıyorum capsh, getcap, setcap, getpcapsgelen libcapve netcap, pscapgelen libcap-ngherhangi bir sorun olmadan. Ancak Ortam yeteneklerini tercih ediyorum, bunların yapılandırılması kolay ve dosya özellikleri durumunda Genişletilmiş Özellikler gibi herhangi bir dosya sistemi özelliğine bağlı değil . Ayrıca kullanabilirsiniz listxattr, getxattr, setxattrve removexattrgelen araçları xattr_syscall_wrapperişlemek için security.capabilityveya başka bir xattr doğrudan.

Yorumunuzdan:

/system/bin/pingKomutun setuidgerçek Samsung cihazımda olmadığını fark ettim,CAP_NET_RAW

Android'in pinginde ne var set-uidne de CAP_NET_RAW. RAW olmayan özel bir soket IPPROTO_ICMPoluşturur - aksine IPPROTO_RAW- herhangi bir ayrıcalık gerektirmez.


DAHA FAZLA REFERANSLAR:

Yukarıda verilen 10'dan fazla referansa ek olarak, AOSP kodunun Linux yeteneklerini destekleyen ve kullanan birkaç diğer kısmı aşağıda verilmiştir:

  • Çekirdek bileşenleri: Bionic libc, init, trusty(OS)
  • Dış bileşenler: libcap ,libcap-ng
  • Cinler / hizmetler: zygote (çatallı uygulamalar ve system_server) hostapd, wpa_supplicant, dnsmasq, logd, netd( NetLinkmüdür, özel DNS) debuggerd(test), sdcardcin, performanced, incidentd, mtpd, traced_probes(perfetto), racoon(IPSec), wificonddahil HAL cinleri bir dizi rild.
  • Yürütülebilir oluşturma: reboot (init) dumpstate, tcpdump, strace, iputils( ping, traceroutevs.)
  • Minijail: Yetenekler etrafında dönen özel bir sanal alan aracı ve kütüphane. adbdayrıcalıkları bırakmak için bu kitaplığı kullanır.
  • SELinux , capabilityalanlara yetenek vermek / reddetmek için sınıfı kullanır .

Android'in Linux yeteneklerine büyük ölçüde bağlı olduğu, az kullanılan bir özellik olmadığı sonucuna varıyor .


İLİŞKİLİ:


Hiçbir şeye cevap vermiyor. Belirttiğiniz her şey biliniyor. Sorunun asıl nedeni, çok az kullanıldığı için Google markalı cihazların içerip içermediği.
user2284570
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.