
Reproduzierbare Android-Laboreinrichtung, die CVE-2026-0023 demonstriert, eine Umgehung der Update-Eigentumsprüfung im PackageInstaller. Enthält drei Apps, um das anfällige Verhalten zu beobachten und den Patch zu verstehen.
Eine vollständige Android-Laborumgebung zur Nachstellung und Untersuchung von CVE-2026-0023.
Dieses Repository zeigt, wie CVE-2026-0023 einem regulären Installer erlaubt, ein internes Android-Installationsflag zu beeinflussen, das nur vom System kontrolliert werden sollte, was dazu führt, dass die Android-Warnung zur Update-Besitzerprüfung bei App-Updates unterdrückt wird.
Das Projekt enthält drei Android-Anwendungen, die einen realistischen Workflow für Update-Besitzer modellieren und eine reproduzierbare Umgebung zur Beobachtung des anfälligen Verhaltens bieten.
Android hat die Update-Besitzerprüfung eingeführt, um Apps, App-Stores und Unternehmensumgebungen zu helfen, eine vertrauenswürdige Update-Kette aufrechtzuerhalten.
Wenn eine App einen registrierten Update-Besitzer hat, warnt Android den Benutzer, wenn ein anderer Installer versucht, diese App zu aktualisieren.
Unter normalen Bedingungen teilt diese Warnung dem Benutzer mit, dass die App normalerweise Updates von einer anderen Quelle erhält.
CVE-2026-0023 betrifft den Paketinstallationsablauf von Android innerhalb von PackageInstallerService#createSessionInternal.
Das Problem hängt mit der Behandlung des internen Installationsflags INSTALL_FROM_MANAGED_USER_OR_PROFILE zusammen.
In anfälligen Builds wurde dieses Flag nicht explizit gelöscht, bevor Android prüfte, ob die Installation tatsächlich mit einem verwalteten Benutzer oder einem verwalteten Profil verbunden war.
Infolgedessen konnte ein regulärer Installer das Verhalten der Update-Besitzerprüfung beeinflussen und Android dazu bringen, die erwartete Warnung zur Update-Besitzerprüfung zu unterdrücken.
Dieses Repository zeigt den Unterschied zwischen dem erwarteten Verhalten und dem anfälligen Verhalten mithilfe einer kontrollierten Proof-of-Concept-Umgebung.
| Erwartetes Verhalten | Anfälliges Verhalten |
|---|---|
| Android zeigt die Warnung zur Update-Besitzerprüfung an. | Android zeigt nur ein generisches Update-Dialogfeld an. |
![]() | ![]() |
CVE-2026-0023 ist im Android-Sicherheitsbulletin vom März 2026 unter den Details zu Schwachstellen des Sicherheitspatch-Levels 2026-03-01 aufgeführt.
Android-Sicherheitspatch-Levels von 2026-03-01 oder später adressieren alle Probleme, die mit dem Sicherheitspatch-Level 2026-03-01 verbunden sind.
Android-Sicherheitspatch-Levels von 2026-03-05 oder später adressieren alle Probleme, die mit dem Sicherheitspatch-Level 2026-03-05 und allen vorherigen Patch-Levels verbunden sind.
Das anfällige Verhalten hängt mit der Behandlung des internen Flags INSTALL_FROM_MANAGED_USER_OR_PROFILE zusammen.
Dieses Flag soll das Installationsverhalten darstellen, das mit einem verwalteten Benutzer oder einem verwalteten Profil verbunden ist.
Der offizielle AOSP-Patch löscht dieses Flag explizit, bevor Android prüft, ob die Installation tatsächlich zu einem durch die Organisation verwalteten Benutzer gehört.
Die korrigierte Logik stellt sicher, dass nur das System dieses Flag basierend auf dem Ergebnis von DevicePolicyManagerInternal#isUserOrganizationManaged(userId) setzen kann.
Vereinfachte Patch-Logik:
final var dpmi = LocalServices.getService(DevicePolicyManagerInternal.class);
+ // Nur das System sollte dieses Flag setzen können – daher sicherstellen, dass es nicht gesetzt ist, wenn es nicht benötigt wird.
+ params.installFlags &= ~PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
if (dpmi != null && dpmi.isUserOrganizationManaged(userId)) {
params.installFlags |= PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
}
Vor dem Patch wurde das Flag nicht explizit vor dieser Prüfung des verwalteten Profils gelöscht.
Nach dem Patch entfernt Android zunächst das Flag und setzt es nur dann erneut, wenn das System feststellt, dass der Benutzer tatsächlich durch die Organisation verwaltet wird.
Dies verhindert, dass ein regulärer Installer diesen internen Installationssitzungszustand beeinflusst.
Dieses Repository enthält drei Android-Anwendungen:
CVE-2026-0023-Update-Ownership-PoC
├── Safe Mart
├── Unsafe Mart
└── Ownership Inspector
Safe Mart ist eine Referenz-Installer-Anwendung.
Es installiert die Ziel-App und fordert bei der Erstinstallation den Update-Besitzer an.
Sein Zweck ist es, einen legitimen App-Store zu simulieren, der zum registrierten Update-Besitzer der Ziel-App wird.
Unsafe Mart ist eine zweite Installer-Anwendung, die zur Reproduktion von CVE-2026-0023 verwendet wird.
Es unterstützt zwei Installationspfade:
Der normale Pfad löst die erwartete Android-Warnung zur Update-Besitzerprüfung aus.
Der CVE-Pfad unterdrückt die Besitzerwarnung und veranlasst Android stattdessen, ein generisches Update-Bestätigungsdialogfeld anzuzeigen.
Ownership Inspector ist die in der Demonstration verwendete Zielanwendung.
Die Anwendung deklariert Unterstützung für Update-Besitzer und zeigt vom Android PackageManager gemeldete Installer-bezogene Metadaten an.
Sein Zweck ist es, die Beobachtung zu erleichtern, wie die Zielanwendung in jeder Phase des Proof-of-Concept installiert oder aktualisiert wurde.
| Vor CVE-2026-0023 | Nach CVE-2026-0023 |
![]() | ![]() |
Der Proof-of-Concept demonstriert zwei verschiedene Update-Abläufe:
flowchart LR
A["Safe Mart<br/>Referenz-Installer"] -->|"Installiert Ziel-App<br/>+ fordert Update-Besitzer an"| B["Ownership Inspector<br/>Ziel-App"]
C["Unsafe Mart<br/>Alternativer Installer"] --> D{"Update-Pfad"}
D -->|"Normaler Update-Pfad"| E["Android zeigt<br/>Warnung zur Update-Besitzerprüfung an"]
D -->|"CVE-2026-0023-Pfad"| F["Android zeigt nur<br/>generisches Update-Dialogfeld an"]
E --> G["Benutzer wird gewarnt:<br/>Safe Mart ist der Update-Besitzer"]
F --> H["Besitzerwarnung<br/>wird unterdrückt"]
Installieren Sie beide Installer-Anwendungen auf dem Testgerät.
Erlauben Sie beiden Anwendungen, unbekannte Apps zu installieren, wenn Android diese Berechtigung anfordert.
Öffnen Sie Safe Mart und wählen Sie das Ownership Inspector APK aus.
Safe Mart installiert die Zielanwendung und fordert während der ersten Installationssitzung den Update-Besitzer an.
Zu diesem Zeitpunkt fungiert Safe Mart als Referenz-Installer und wird zur erwarteten Update-Quelle für die Ziel-App.
Öffnen Sie Ownership Inspector.
Die Anwendung zeigt vom Android PackageManager gemeldete Installer-bezogene Metadaten an.
Dieser Schritt hilft, den anfänglichen Installationszustand zu bestätigen, bevor Sie Updates von Unsafe Mart versuchen.
Öffnen Sie Unsafe Mart und wählen Sie das Ownership Inspector APK aus.
Wählen Sie den normalen Update-Pfad.
Da Ownership Inspector ursprünglich über Safe Mart mit aktiviertem Update-Besitzer installiert wurde, zeigt Android eine Warnung zur Update-Besitzerprüfung an.
Dies ist das erwartete Android-Verhalten.
Die Warnung teilt dem Benutzer mit, dass die App normalerweise Updates von Safe Mart erhält, während der aktuelle Update-Versuch von Unsafe Mart kommt.
Kehren Sie zu Unsafe Mart zurück und wählen Sie erneut das Ownership Inspector APK aus.
Wählen Sie den CVE-2026-0023-Reproduktionspfad.
In diesem Ablauf zeigt Android die Warnung zur Update-Besitzerprüfung nicht mehr an.
Stattdessen zeigt das System nur ein generisches Update-Bestätigungsdialogfeld an.
Dies ist das anfällige Verhalten, das vom Proof-of-Concept demonstriert wird.
Der wichtige Unterschied ist nicht nur die visuelle Änderung im Dialog.
Das Sicherheitssignal über den registrierten Update-Besitzer wird aus dem Update-Ablauf entfernt.
Nach Abschluss des Updates öffnen Sie Ownership Inspector erneut.
Die Anwendung kann verwendet werden, um Installer-bezogene Metadaten zu beobachten, nachdem der CVE-2026-0023-Reproduktionspfad abgeschlossen wurde.
Dieser Proof-of-Concept demonstriert eine Umgehung des Vertrauensmodells der Update-Besitzerprüfung.
Genauer gesagt zeigt er, dass:
Der PoC versucht nicht, Root-Zugriff, beliebige Codeausführung, Persistenz, Heimlichkeit oder malwareähnliches Verhalten bereitzustellen.
Die Schwachstelle wurde auf Android 15 reproduziert.
Der Proof-of-Concept erfordert nicht:
Die gesamte Demonstration wird durch reguläre Android-Anwendungen durchgeführt, die in der standardmäßigen Android-Anwendungssandbox ausgeführt werden.
Die Sicherheitsinformationen des getesteten Geräts können in den Anwendungsprotokollen beobachtet werden.
Beispielwerte, die vom PoC erfasst werden, umfassen:
Build.VERSION.SECURITY_PATCH
Build.VERSION.SDK_INT
Build.VERSION.RELEASE
Build.VERSION.INCREMENTAL
Build.FINGERPRINT
Zum Erstellen und Ausführen des Projekts benötigen Sie:
Es ist keine spezielle Gerätemodifikation erforderlich.
Öffnen Sie jedes Anwendungsprojekt in Android Studio und erstellen Sie die Debug-APKs:
Installieren Sie dann Safe Mart und Unsafe Mart auf dem Testgerät.
Ownership Inspector sollte während des Reproduktionsablaufs über Safe Mart installiert werden.
Der PoC interagiert mit den PackageInstaller-APIs von Android und verändert Parameter der Installationssitzung, um das anfällige Verhalten zu reproduzieren.
Während des CVE-Reproduktionspfads verwendet der PoC das Systemflag, das mit dem Verhalten der Installation durch verwaltete Benutzer oder Profile zusammenhängt:
INSTALL_FROM_MANAGED_USER_OR_PROFILE
Die Schwachstelle wird nicht durch den Zugriff auf verborgene APIs selbst verursacht.
Der Zugriff auf verborgene APIs wird nur als Implementierungsdetail verwendet, um die erforderlichen Framework-Schnittstellen aus einem regulären Anwendungskontext zu erreichen.
Die wichtige Sicherheitsgrenze ist, dass dieses Installationsflag nur dann vertrauenswürdig sein sollte, wenn es vom System gesetzt wird, nachdem der Zustand des verwalteten Benutzers oder des verwalteten Profils validiert wurde.
Dieses Projekt verwendet die RestrictionBypass-Bibliothek von ChickenHook, um auf Nicht-SDK-Android-Framework-Schnittstellen zuzugreifen, die für den Proof-of-Concept erforderlich sind.
Der Mechanismus für den Zugriff auf verborgene APIs steht nicht im Zusammenhang mit der Grundursache von CVE-2026-0023 und wird nur verwendet, um mit den erforderlichen PackageInstaller-APIs zu interagieren.
RestrictionBypass: https://github.com/ChickenHook/RestrictionBypass
Dank an die ursprünglichen Autoren für ihre Arbeit.
Google hat CVE-2026-0023 als Schwachstelle mit hohem Schweregrad zur Erhöhung von Privilegien eingestuft.
Das Problem gewährt keinen Root-Zugriff oder beliebige Codeausführung.
Es erlaubt jedoch einem privilegierten Installer, eine Operation durchzuführen, die normalerweise durch das Android-Paketinstallationssicherheitsmodell geschützt werden sollte.
Die relevantesten Auswirkungen liegen wahrscheinlich in Unternehmens- und Geräteverwaltungsszenarien.
Organisationen können sich auf die Update-Besitzerprüfung verlassen, um sicherzustellen, dass Anwendungen über einen genehmigten App-Store oder einen Unternehmensinstaller aktualisiert werden.
Durch die Unterdrückung der Besitzerwarnung schwächt CVE-2026-0023 ein Vertrauenssignal, das Android normalerweise bereitstellen würde, bevor ein Update von einer anderen Quelle zugelassen wird.
Für normale Verbrauchergeräte hängen die praktischen Auswirkungen stark vom Installationsverhalten des Benutzers, dem Geräte-Patch-Level und davon ab, ob die Zielanwendung auf die Semantik der Update-Besitzerprüfung angewiesen ist.
Dieses Repository soll die Schwachstelle in einer kontrollierten Forschungsumgebung demonstrieren.
Es versucht nicht:
Der Proof-of-Concept konzentriert sich speziell auf das Verhalten der Umgehung der Update-Besitzerwarnung, das mit CVE-2026-0023 verbunden ist.
Android-Sicherheitsbulletin - März 2026 https://source.android.com/docs/security/bulletin/2026/2026-03-01
CVE-2026-0023 - CVE-Eintrag https://www.cve.org/CVERecord?id=CVE-2026-0023
CVE-2026-0023 - NVD https://nvd.nist.gov/vuln/detail/CVE-2026-0023
AOSP-Patch - Explizit INSTALL_FROM_MANAGED_USER_OR_PROFILE-Flag löschen
https://android.googlesource.com/platform/frameworks/base/+/09055276288a68cf35b0f84ba32e28822f74ecf9
RestrictionBypass von ChickenHook https://github.com/ChickenHook/RestrictionBypass
Dieses Repository wird für Sicherheitsforschung, Bildungszwecke und Schwachstellenanalyse bereitgestellt.
Der Code ist ausschließlich dazu bestimmt, CVE-2026-0023 in kontrollierten Umgebungen und auf Geräten, auf denen Tests autorisiert sind, zu reproduzieren und zu untersuchen.
Der Autor ermutigt nicht zu oder befürwortet nicht unbefugte Tests gegen Geräte, Anwendungen, Benutzer, Organisationen oder Systeme ohne Erlaubnis.
Benutzer sind dafür verantwortlich, alle geltenden Gesetze, Richtlinien und organisatorischen Anforderungen einzuhalten, wenn sie Android-Geräte testen oder modifizieren.
Nutzen Sie dieses Repository verantwortungsvoll.
| Feld | Wert |
|---|
| CVE | CVE-2026-0023 |
| Komponente | Framework / PackageInstaller |
| Betroffene Datei | PackageInstallerService.java |
| Betroffene Methode | createSessionInternal |
| Schwachstellentyp | Erhöhung von Privilegien |
| Schweregrad | Hoch |
| CVSS v3.1 | 7.8 |
| CVSS-Vektor | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Angriffsvektor | Lokal |
| Angriffskomplexität | Niedrig |
| Erforderliche Privilegien | Niedrig |
| Benutzerinteraktion | Keine |
| Auswirkungsbereich | Unverändert |
| Auswirkungen | Erhöhung von Privilegien durch unbefugtes Verhalten der Update-Besitzerprüfung |
| Android-Sicherheitsbulletin | März 2026 |
| Android-Fehlerreferenz | A-459461121 |
| Von Google aufgeführte betroffene AOSP-Versionen | Android 14, 15, 16, 16-qpr2 |
| Ereignis | Wert |
|---|
| Android-Sicherheitsbulletin | März 2026 |
| Veröffentlichungsdatum des Bulletins | 2. März 2026 |
| Abschnitt des Sicherheitspatch-Levels | 2026-03-01 |
| Im Bulletin vollständig adressiertes Patch-Level | 2026-03-05 oder später |
| Android-Fehlerreferenz | A-459461121 |
| AOSP-Patch | 09055276288a68cf35b0f84ba32e28822f74ecf9 |
| Patch-Titel | Explizit INSTALL_FROM_MANAGED_USER_OR_PROFILE-Flag löschen |