Ich habe ein bestimmtes ROM installiert, das mit SELinux im "Permissive" -Modus geliefert wird. Dies ist das einzige (gute) ROM, das zu meinem Gerät passt, und es gibt keine Möglichkeit, den Status von SELinux zu ändern.
Jetzt bin ich mir nicht wirklich sicher, was die Konsequenzen einer solchen Entscheidung sind und würde mich freuen, wenn mir jemand erklären könnte (ich habe gegoogelt und weiß, was es theoretisch ist ... nur nicht in der Praxis). Das besagte ROM hat seine Wurzel auf "disabled", also ist das Gerät angeblich nicht gerootet, aber wie das mit dem SELinux zusammenpasst, weiß ich nicht.
cyanogenmod
rooting
custom-roms
selinux
j.d'oh
quelle
quelle
setenforce 1
vom Terminal-Emulator aus (als root) auszugeben ?Antworten:
TL; DR: Fühlen Sie sich frei, direkt zu der Schlussfolgerung unten zu springen, wenn Sie möchten :)!
Ziel von SELinux ist es, die Eskalation von Berechtigungen zu verhindern, indem eine verbindliche Richtlinie durchgesetzt wird, die mögliche Aktionen von nicht privilegierten und privilegierten Benutzern einschränkt.
Der Begriff "Benutzer" umfasst hier auch alle Prozesse, die auf dem Gerät ausgeführt werden, unabhängig davon, ob sie in direktem Zusammenhang mit den physischen Benutzeraktionen stehen (der Mensch, Sie;)), da jeder Prozess mit einem Systemkonto "Benutzer" ausgeführt wird.
In der Vergangenheit werden Berechtigungen auf Unix-basierten Systemen mit einem sogenannten DAC-System (Discretionary Access Control) verarbeitet. In diesem Modell:
root
auf Unix-basierten Systemen genannt), der der administrative Benutzer ist und Zugriff auf alles auf dem System hat. Dieses Konto kann interaktiv von einem Benutzer (normalerweise einem Systemadministrator) für die Wartung oder Reparatur des Geräts verwendet werden. In der Regel wird dieses Konto jedoch hauptsächlich von Hintergrunddiensten oder Diensten auf niedriger Ebene verwendet, für die eine solche Berechtigungsstufe erforderlich ist: Gerätetreiber, Netzwerkkonfigurationsdienste, Dienste Zugriff auf Dateien von jedem Benutzer oder Abwicklung der internen Kommunikation zwischen Benutzern.Das ist sehr schön und bietet schon eine gute Sicherheit. Was ist jedoch mit solchen Umständen:
root
gefunden wird, der so läuft, wie er es einem Angreifer ermöglicht, diesen Dienst dazu zu bringen, beliebigen Code auszuführen? Ein solcher Angreifer würde einen vollständigen Zugriff auf das Gerät erhalten. Um einige konkrete Beispiele zu nennen, könnte ein solcher Fehler ausgelöst werden, indem speziell gestaltete Netzwerkkonfigurationsinformationen ( DHCP ) oder eine MMS an das Telefon gesendet werden.Hier kommt SELinux.
SELinux ist ein MAC-System (Mandatory Access Control). Während in dem zuvor beschriebenen DAC-System Benutzer dafür verantwortlich waren, angemessene Rechte für ihre eigenen Ressourcen festzulegen, wird bei einem MAC-System eine systemweite Richtlinie (die mit dem Betriebssystem bereitgestellt wird) sowohl für privilegierte als auch für nichtprivilegierte Benutzer durchgesetzt.
Dies löst die beiden oben genannten Probleme auf folgende Weise:
Die DAC- und MAC-Systeme schließen sich nicht gegenseitig aus, im Gegenteil, das MAC-System (SELinux) fungiert als zweite Verteidigungsschicht hinter dem DAC-System (die traditionellen Unix-ähnlichen Berechtigungen). Die Aufgabe von SELinux ist es, alle Aktivitäten zu blockieren, die gegen die Richtlinie verstoßen, die ansonsten nur im DAC-System akzeptiert würden.
Das Schwierige ist, dass das Schreiben einer solchen Richtlinie sehr komplex sein kann: Sie muss in der Tat die Komponenten jedes Geräts für jede mögliche Verwendung in jeder Situation abdecken. Tatsächlich ist es egal, ob eine Handlung in Ihrer Situation legitim ist: Wenn sie nicht in der Police enthalten ist, ist sie verboten . Schlecht gestaltete Richtlinien können daher zufällige Konsequenzen haben, z. B. Anwendungsabstürze, unbrauchbare Funktionen usw.
Aus diesem Grund war SELinux in den ersten Versionen von Android standardmäßig im "Permissive" -Modus enthalten. In diesem Modus protokolliert SELinux Richtlinienverletzungen, versucht jedoch nicht, die zugehörige Aktivität zu blockieren. Durch die Analyse der resultierenden Protokolldateien wird es möglich, die Richtlinie so weit zu korrigieren und zu verbessern, dass nur noch böswillige oder unerwünschte Verhaltensweisen gegen die Richtlinie verstoßen. Zu diesem Zeitpunkt kann SELinux in den "Enforcing" -Modus versetzt werden: Es wird nun nicht nur protokolliert, sondern auch jede störende Aktion blockiert.
Fazit
SELinux ist eine Abhilfemaßnahme. Es verhindert nicht, dass Angreifer in Ihr Telefon eindringen, stellt jedoch sicher, dass sie dort so wenig wie möglich Dinge tun können, die im Idealfall nicht sinnvoll sind, und beseitigt so das Interesse, das Telefon überhaupt anzugreifen.
Je älter das ROM ist, desto größer ist die Anzahl der Sicherheitslücken, die einen solchen Zugriff ermöglichen. SELinux wäre eine effiziente Methode, um trotz dieser bekannten Sicherheitslücken ein Minimum an Sicherheit zu gewährleisten. Um jedoch ordnungsgemäß zu funktionieren, ist SELinux auf eine komplexe Richtlinie angewiesen.
Wenn Ihr ROM standardmäßig mit SELinux im "Permissive" -Modus ausgestattet ist, bedeutet dies wahrscheinlich, dass die darin enthaltene Richtlinie nicht zuverlässig genug ist, um sicher in den "Enforcing" -Modus zu wechseln.
Wenn Sie technisch versiert genug sind und Zugriff auf das Telefonprotokoll haben (
dmesg
zumindest, aber normalerweise werden sie auch kopiertlogcat
: Es gibt Anwendungen, die das letztere sehen können, aber abhängig von Ihrer Android-Version benötigen sie möglicherweise Root-Zugriff), können Sie überprüfen, ob Sie finden "avc" -Einträge: Dies sind Meldungen, die Ihnen mitteilen, dass SELinux gerade eine gegen die Richtlinie verstoßende Aktion erkannt hat.Hier ist ein Beispiel für einen solchen Eintrag von der CyanogenMod-Website :
Wenn es keine gibt, nur ein paar von ihnen oder aus irgendeinem Grund, von dem Sie glauben, dass sie Sie nicht davon abhalten, das Telefon zu benutzen, können Sie versuchen, SELinux in den "Enforcing" -Modus zu versetzen. In älteren CyanogenMod-ROMs war dies einfach und möglich, indem einfach eine versteckte Option in der GUI verwendet wurde (es ist nicht erforderlich, das Telefon zu rooten oder eine bestimmte Anwendung zu installieren). Ich weiß nicht, ob andere ROMs die gleiche Funktion bieten, aber Sie haben das CyanogenMod verwendet tag Ich nehme an, du hast Glück;).
quelle