Im Android-System wurden kritische Sicherheitslücken im verwendeten Linux-Kernel entdeckt, die mit dem Dezember Update geschlossen wurden (zum jetzigen Zeitpunkt werden wahrscheinlich noch einige auf das Update warten). Eine dieser Schwachstellen betrifft pKVM. Was genau ist das?
Zunächst einmal: Der Android-Kernel unterscheidet sich vom ursprünglichen Linux-Kernel. Die Android-Versionen 14, 15 und 16 basieren zwar auf einem offiziellen Linux-Kernel der 6er-Serie, wurden jedoch angepasst.
Die Unterschiede sind vielfältig. Es gibt Unterschiede in der IPC-Kommunikation, der Speicherverwaltung, dem Power-Management, der Integration von Treibermodulen, und der Kernel für Android wird anders erstellt. Diese Anpassungen waren einerseits notwendig, um Linux mit mobilen Geräten kompatibel zu machen, und andererseits, um bestimmte Sicherheitsstrukturen im System zu implementieren. Dazu gehört auch die Trennung von Herstellertreibern und herkömmlichen Treibern für die Hardware, wobei gleichzeitig eine Abgrenzung zwischen Open Source und Closed Source besteht. Closed Source ist Software, deren Programmcode in keinster Weise öffentlich zugänglich ist. Damit versuchen bestimmte Hersteller, wie Qualcomm, ihr geistiges Eigentum zu schützen. Dem gegenüber steht Open Source, bei der der Programmcode offen und frei zugänglich ist. Das bedeutet nicht zwangsläufig, dass das komplette Programm einsehbar ist, z. B. könnten einzelne Module/Librarys davon ausgenommen sein.
Google versucht seit einiger Zeit, die Unterschiede zum herkömmlichen Kernel zu verringern, um die Bereitstellung von Updates zu beschleunigen.
Die IPC-Kommunikation ist mit einer der größten Unterschiede zwischen dem Android- und dem Linux-Kernel. IPC steht für „Interprozesskommunikation“ und ermöglicht den Datenaustausch zwischen einem Programm und dem System. Das herkömmliche Linux verwendet dafür gemeinsame Speicherbereiche im flüchtigen Speicher, auf die Programme zugreifen können, oder es werden Pipes eingesetzt (die ebenfalls mit gemeinsamen Speicherbereichen arbeiten, aber zusätzlich zum flüchtigen Speicher auch im Dateisystem liegen) sowie Sockets (Speicherbereiche, die ausschließlich im Dateisystem vorhanden sind). Unter Android kommt der sogenannte „Binder“ zum Einsatz. Dabei handelt es sich um einen Treiber, der direkt im Kernel integriert wurde. Dieser Treiber wird immer dann aufgerufen, wenn eine App im Framework eine Verbindung zum System benötigt (z. B. zu Kamera, Display usw.).
Der Kernel ist das zentrale Steuerungsprogramm des Systems. Ohne ihn gibt es keinen Zugriff auf die Hardware, und die Nutzerinnen und Nutzer können ihr Gerät nicht bedienen. Man kann daher sagen: Wird der Kernel kompromittiert, ist das Mobilgerät unbrauchbar.
"KVM" steht für Kernel-based Virtual Machine im Linux-Kernel und ist dort der Standard für Virtualisierung. Diese Funktion wird standardmäßig nach dem Systemstart aktiviert, sofern sie im BIOS des Host-Systems eingeschaltet ist. Bei AMD-Systemen muss AMD-V und bei Intel-Systemen Intel VT-x aktiviert sein. Zusätzlich werden Programme im Userspace benötigt, die diese Funktion nutzen können. Das bekannteste Programm hierfür ist QEMU. Damit kann man auf dem Host mehrere virtuelle Systeme bereitstellen und über das ursprüngliche System sowie QEMU steuern. Beim Android-System ist der Host das Android-Betriebssystem, das PKVM bereitstellt. Spezielle Funktionen werden in einer kleinen virtuellen Umgebung, der PKVM, mit einem Microandroid ausgeführt und sind so vom ursprünglichen Kernel isoliert.
„pKVM“ steht für „Protected Kernel-based Virtual Machine“ und wird im Android-Kernel eingesetzt. Es handelt sich um eine Weiterentwicklung der im Kernel standardmäßig integrierten „KVM“ (Kernel-based Virtual Machine). Der Hauptunterschied liegt im Speicherzugriff: Während die „KVM“ davon ausgeht, dass der Host (der Linux-Kernel) vertrauenswürdig ist – das heißt, ein kompromittierter Kernel wird möglicherweise weiterhin als vertrauenswürdig betrachtet –, geht „pKVM“ grundsätzlich davon aus, dass der Kernel nicht vertrauenswürdig ist, und isoliert ihn entsprechend. Man kann sich das bildlich so vorstellen, dass „pKVM“ zwischen der Hardware des Mobilgeräts und dem Kernel sitzt und sämtliche Zugriffe des Kernels kontrolliert und blockiert – ähnlich einer Sicherheitsschleuse oder Firewall.
Der Clou an diesem Ansatz ist, dass kryptografische biometrische Schlüssel oder Funktionen, die höchste Sicherheitsanforderungen erfüllen müssen, nicht direkt vom Kernel angegriffen werden können, da dieser keinen direkten Zugriff auf den Speicher hat. Das bedeutet, Schadprogramme können auf diesen Speicher nicht einfach zugreifen. Theoretisch! Blöderweise gab es jetzt eine Sicherheitslücke im „pKVM“. Das bedeutet, dass die gesamte Sicherheitslogik ausgehebelt werden konnte.
Noch ein paar Worte zu Linux und Android. Viele Linux-Nutzerinnen und Nutzer betrachten Android nicht als echtes Linux, da es stark angepasst wurde. Letztlich muss das jeder für sich selbst entscheiden. Ich persönlich bin dem Thema gegenüber eher tolerant, da die Basis vorhanden ist. Man muss jedoch berücksichtigen, dass das Android der Endanwender viele Closed-Source-Komponenten enthalten kann. Sogar die Mehrzahl der verfügbaren Apps ist Closed Source. Beim Debian Linux würde es wahrscheinlich zu einer Revolte kommen, wenn man dermaßen viel Closed Source integrieren wollen würde.
###www.xcomweb.de,12.25###