Gibt es Google-Geräte, die Funktionen in ihrem Standardkernel unterstützen?

14

Wenn ich /systemein Nexus-Gerät ohne System-Root (keine Änderung an der Partition) verwende, kann ich dann Funktionen für ausführbare Dateien festlegen , ohne die ursprüngliche Kernel-Binärdatei zu ändern?

Ich möchte häufig Dateien ohne Einschränkungen von meinem Terminal aus verwalten (erforderlich CAP_DAC_READ_SEARCH) . Ich möchte aber auch den Superuser nicht benutzen.
Die erforderlichen Dinge sind Werkzeuge zum Setzen von Caps entlang der Kernelunterstützung, um sie zu verwenden (es hängt nicht von anderen User-Space-Dingen ab) .

Das Problem ist, ich besitze kein solches Gerät. Ich kann also nicht sagen, ob es bei irgendetwas funktionieren würde Nexus 5X Nexus 6P Nexus 9 Pixel C.

user2284570
quelle
2
Ich konnte auch keinen Nexus-Emulator finden ...
user2284570
Ich bezweifle es ... Da Android Bionic libc und nicht die Standardbibliothek GNU libc (glibc) verwendet, ist es nicht annähernd POSIX-konform. Möglicherweise können Sie Ihren eigenen Kernel mit einer anderen libc wie CrystaX NDK anstelle von Bionic kompilieren, aber ich weiß auch nicht, ob diese Funktionen darin enthalten sind.
Acejavelin
@acejavelin: Der Userland-Teil wird nur zum Festlegen erweiterter Attribute mit Funktionen benötigt. Alles andere ist Kernel-Seite. Ich habe gerade bemerkt, dass der /system/bin/pingBefehl auf meinem Samsung-Gerät nicht richtig eingestellt ist, was darauf hindeutet CAP_NET_RAW. Ich werde jedoch kein echtes Gerät rooten und weiß nicht, mit welchem ​​Tool ich die relevanten Informationen anzeigen kann, sodass ich nicht überprüfen kann.
user2284570
Warum würden Sie ein Nexus-Gerät nicht rooten? Es ist dafür vorgesehen und macht Ihre Garantie nicht ungültig. Es ist sehr einfach, ein Nexus-Gerät auf seinen Standardzustand (nicht gerootet und gesperrt) zurückzusetzen.
Acejavelin
@acejavelin: Ich besitze kein Nexus-Gerät. Mein Ziel ist Sicherheitsforschung und Google-Belohnung nur für eigene Geräte. Ich muss also wissen, ob der Kernel eines der in meiner Frage genannten Geräte die Verwendung von Capabilities xattr unterstützt. Was ich auf meinem Galaxy Tab sehe, hat wahrscheinlich nur mit Samsung zu tun. Wenn ich meine Frage nicht verwurzele, wird sie möglicherweise als unklar geschlossen .
user2284570

Antworten:

1

Obwohl die Frage alt ist, wird sie weiterhin über den unbeantworteten Fragen (meinen Tags) angezeigt. Also ich denke ich sollte das beantworten :)

AOSP'S UNTERSTÜTZUNG FÜR FÄHIGKEITEN:

Die Frage bezieht sich speziell auf Google-Geräte. Ich habe noch nie ein Google-Gerät verwendet. Was ich jedoch mit Sicherheit sagen kann, ist, dass Linux- (Prozess-) Funktionen auf den meisten Geräten (wenn nicht allen) aktiviert sein müssen, auf denen nur Android 1.6 ausgeführt wird. Die Referenz finden Sie in initund system_server, den beiden wichtigsten Komponenten von AOSP. In Android 4.2 wurde zum Beispiel eine installdweitere Kernkomponente erstellt, die mit fehlenden Funktionen ausgeführt werden kann.

Die Dateisystemfunktionen waren eine der wichtigsten Sicherheitsverbesserungen in Android 4.3, bei denen Binärdateien entfernt set-uidbzw. set-gidaus diesen entfernt und Dateifunktionen festgelegt wurden run-as. Dies führte zu revolutionären Veränderungen in der Android-Rooting-Reise.

Unterstützung für Ambient - Funktionen wurde in Android 8 hinzugefügt , die schrecken die Verwendung von Datei - Funktionen:

Dateifunktionen stellen wiederum ein Sicherheitsrisiko dar, da jeder Prozess, der eine Datei mit Dateifunktionen ausführt, diese Funktionen nutzen kann.

Viele initDienste hängen von ihnen ab, z storaged. B. meine eigenen sshdund dnscrypt-proxyDienste.

KERNEL'S UNTERSTÜTZUNG FÜR FÄHIGKEITEN:

Im Kernel-Teil ist es nicht optional , einen Kernel ohne Fähigkeiten zu erstellen:

Von Kernel 2.5.27 bis Kernel 2.6.26 waren Funktionen eine optionale Kernelkomponente und konnten über die Kernelkonfigurationsoption CONFIG_SECURITY_CAPABILITIES aktiviert / deaktiviert werden .

Und:

In Kerneln vor Linux 2.6.33 waren Dateifunktionen eine optionale Funktion, die über die Option CONFIG_SECURITY_FILE_CAPABILITIES konfiguriert werden konnte . Seit Linux 2.6.33 wurde die Konfigurationsoption entfernt und Dateifunktionen sind immer Teil des Kernels.

Die älteste gemeinsame Kernel-Version auf Android-Repositories ist 2.6.39, die auch Dateifunktionen unterstützt.

Die Unterstützung von Dateisystemfunktionen auf der Kernelseite muss von einigen OEMs verzögert worden sein , sie mussten jedoch umsteigen, da sonst die Funktionalität beeinträchtigt würde. Zum Beispiel wird surfaceflinger(Android's Surface Composer ) ohne Dateifunktionen seit Android 7.1 nicht mehr funktionieren.

Magistrale Linux - Kernel 4.3 in in Sep'15 gepatcht wurde für Ambient (Prozess) Fähigkeiten, zurückportiert zu Android - Kernel 3.18 und 4.1 in 2016. So sie unbedingt ein Teil des Kernels ist.

FAZIT:

In Linux-Distributionen nutzen nur wenige Programme Linux-Funktionen. Zwar gibt es pam_cap, vor allem (oder alle?) Distros noch verwendet set-uidauf su, sudo, ping, mount, passwdund so weiter. Unter Android sind die Funktionen jedoch tief in das Framework und die Kerndienste integriert. Um sie zu entfernen, müssten Hunderte oder möglicherweise Tausende von Zeilen in AOSP- und Kernel-Quellen bearbeitet werden. Es macht keinen Sinn, dass ein OEM (insbesondere Google, das AOSP und einen modifizierten Linux-Kernel für Android entwickelt hat) diese kostenlose Sicherheitsfunktion nicht nutzt, wenn sie im Android-Kernel verfügbar ist. Es handelt sich um eine reine OS-bezogene Funktion, die keine zusätzliche Hardwareunterstützung erfordert. Daher muss jedes Telefon eines beliebigen Herstellers über unterstützte Funktionen verfügen.


FRAGEN:

Kann ich Funktionen für ausführbare Dateien festlegen, ohne die ursprüngliche Kernel-Binärdatei zu ändern?

Ja, das musst du sein.

Die erforderlichen Dinge sind Werkzeuge zum Setzen von Kappen ...

Ich habe mit capsh, getcap, setcap, getpcapsab libcapund netcap, pscapaus libcap-ngohne Probleme. Ich bevorzuge jedoch Ambient-Funktionen. Diese sind einfach zu konfigurieren und hängen nicht von Dateisystemfunktionen wie Extended Attributes ab, wie dies bei Dateifunktionen der Fall ist. Sie können auch verwendet werden listxattr, getxattr, setxattrund removexattrWerkzeuge aus xattr_syscall_wrapperzu manipulieren security.capabilityoder anderen xattr direkt.

Aus Ihrem Kommentar:

Ich habe gerade bemerkt, dass der /system/bin/pingBefehl nicht setuidauf meinem echten Samsung-Gerät ist, was darauf hindeutetCAP_NET_RAW

Android's Ping hat weder set-uidnoch CAP_NET_RAW. Es wird ein spezieller Nicht-RAW- Socket erstellt, IPPROTO_ICMPder - im Gegensatz zu IPPROTO_RAW- keine Berechtigungen erfordert.


WEITERE REFERENZEN:

Zusätzlich zu mehr als 10 Referenzen, die oben angegeben wurden, sind hier einige andere Teile des AOSP-Codes, der Linux-Fähigkeiten unterstützt und nutzt:

  • Kernkomponenten: Bionic libc, init, trusty(O)
  • Externe Komponenten: libcap ,libcap-ng
  • Daemons / Dienstleistungen: zygote (gegabelt Anwendungen und system_server) hostapd, wpa_supplicant, dnsmasq, logd, netd( NetLinkManager, private DNS), debuggerd(Test), sdcardDämon performanced, incidentd, mtpd, traced_probes(perfetto), racoon(IPSec), wificondeine Reihe von HAL Daemons einschließlich rild.
  • Executables: reboot (init), dumpstate, tcpdump, strace, iputils( ping, tracerouteetc.)
  • Minijail: Ein dediziertes Sandbox-Tool und eine Bibliothek, die sich um Funktionen dreht. adbdverwendet diese Bibliothek, um Berechtigungen zu löschen.
  • SELinux verwendet capabilityclass, um Domänen Funktionen zu gewähren / zu verweigern.

Es kommt zu dem Schluss, dass Android in hohem Maße von Linux-Fähigkeiten abhängt, es ist keine wenig genutzte Funktion.


VERBUNDEN:

Irfan Latif
quelle
Antwortet gar nichts. Alles, was Sie gesagt haben, ist bekannt. Die Frage ist, ob Google-Geräte sie enthalten, da sie kaum genutzt werden.
user2284570