
Ambiente laboratorial Android reproduzível demonstrando a CVE-2026-0023, um bypass de confiança de propriedade de atualização no PackageInstaller. Inclui três aplicativos para observar o comportamento vulnerável e entender a correção.
Um ambiente de laboratório Android completo para reproduzir e estudar o CVE-2026-0023.
Este repositório demonstra como o CVE-2026-0023 permite que um instalador comum influencie uma flag interna de instalação do Android que deveria ser controlada apenas pelo sistema, resultando na supressão do aviso de Propriedade de Atualização do Android durante as atualizações de aplicativos.
O projeto contém três aplicações Android que modelam um fluxo de trabalho de propriedade de atualização realista e fornecem um ambiente reproduzível para observar o comportamento vulnerável.
O Android introduziu a Propriedade de Atualização para ajudar aplicações, lojas de aplicativos e ambientes empresariais a manter uma cadeia de atualização confiável.
Quando uma aplicação possui um proprietário de atualização registrado, o Android avisa o usuário se outro instalador tentar atualizar essa aplicação.
Em condições normais, esse aviso informa ao usuário que a aplicação geralmente recebe atualizações de uma fonte diferente.
O CVE-2026-0023 afeta o fluxo de instalação de pacotes do Android dentro de PackageInstallerService#createSessionInternal.
O problema está relacionado ao tratamento da flag interna de instalação INSTALL_FROM_MANAGED_USER_OR_PROFILE.
Em builds vulneráveis, essa flag não era explicitamente limpa antes de o Android verificar se a instalação estava realmente associada a um usuário gerenciado ou perfil gerenciado.
Como resultado, um instalador comum podia influenciar o comportamento da propriedade de atualização e fazer com que o Android suprimisse o aviso esperado de Propriedade de Atualização.
Este repositório demonstra a diferença entre o comportamento esperado e o comportamento vulnerável usando um ambiente de prova de conceito controlado.
| Comportamento esperado | Comportamento vulnerável |
|---|---|
| O Android exibe o aviso de Propriedade de Atualização. | O Android exibe apenas um diálogo genérico de atualização. |
![]() | ![]() |
O CVE-2026-0023 está listado no Boletim de Segurança Android de Março de 2026 sob os detalhes da vulnerabilidade do nível de patch de segurança 2026-03-01.
Níveis de patch de segurança Android de 2026-03-01 ou posteriores abordam todas as questões associadas ao nível de patch de segurança 2026-03-01.
Níveis de patch de segurança Android de 2026-03-05 ou posteriores abordam todas as questões associadas ao nível de patch de segurança 2026-03-05 e todos os níveis de patch anteriores.
O comportamento vulnerável está relacionado ao tratamento da flag interna INSTALL_FROM_MANAGED_USER_OR_PROFILE.
Esta flag destina-se a representar o comportamento de instalação associado a um usuário gerenciado ou perfil gerenciado.
O patch oficial do AOSP limpa explicitamente esta flag antes de o Android verificar se a instalação realmente pertence a um usuário gerenciado pela organização.
A lógica corrigida garante que apenas o sistema possa definir esta flag com base no resultado de DevicePolicyManagerInternal#isUserOrganizationManaged(userId).
Lógica simplificada do patch:
final var dpmi = LocalServices.getService(DevicePolicyManagerInternal.class);
+ // Only the system should be able to set this flag - so ensure it is unset when not needed.
+ params.installFlags &= ~PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
if (dpmi != null && dpmi.isUserOrganizationManaged(userId)) {
params.installFlags |= PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
}
Antes do patch, a flag não era explicitamente limpa antes desta verificação de perfil gerenciado.
Após o patch, o Android primeiro remove a flag e só a define novamente se o sistema determinar que o usuário é realmente gerenciado pela organização.
Isso impede que um instalador comum influencie este estado interno de sessão de instalação.
Este repositório contém três aplicações Android:
CVE-2026-0023-Update-Ownership-PoC
├── Safe Mart
├── Unsafe Mart
└── Ownership Inspector
Safe Mart é uma aplicação instaladora de referência.
Ela instala a aplicação alvo e solicita a propriedade de atualização durante a instalação inicial.
Seu propósito é simular uma loja de aplicativos legítima que se torna o proprietário de atualização registrado da aplicação alvo.
Unsafe Mart é uma segunda aplicação instaladora usada para reproduzir o CVE-2026-0023.
Ela suporta dois caminhos de instalação:
O caminho normal aciona o aviso esperado de Propriedade de Atualização do Android.
O caminho CVE suprime o aviso de propriedade e faz com que o Android exiba um diálogo genérico de confirmação de atualização.
Ownership Inspector é a aplicação alvo usada na demonstração.
A aplicação declara suporte para propriedade de atualização e exibe metadados relacionados ao instalador relatados pelo PackageManager do Android.
Seu propósito é facilitar a observação de como a aplicação alvo foi instalada ou atualizada durante cada etapa da prova de conceito.
| Antes do CVE-2026-0023 | Após o CVE-2026-0023 |
![]() | ![]() |
A prova de conceito demonstra dois fluxos de atualização diferentes:
flowchart LR
A["Safe Mart<br/>Instalador de referência"] -->|"Instala app alvo<br/>+ solicita propriedade de atualização"| B["Ownership Inspector<br/>App alvo"]
C["Unsafe Mart<br/>Instalador alternativo"] --> D{"Caminho de atualização"}
D -->|"Caminho de atualização normal"| E["Android exibe<br/>aviso de Propriedade de Atualização"]
D -->|"Caminho CVE-2026-0023"| F["Android exibe apenas<br/>diálogo genérico de atualização"]
E --> G["Usuário é avisado:<br/>Safe Mart é o proprietário da atualização"]
F --> H["Aviso de propriedade<br/>é suprimido"]
Instale ambas as aplicações instaladoras no dispositivo de teste.
Permita que ambas as aplicações instalem aplicativos desconhecidos quando o Android solicitar esta permissão.
Abra o Safe Mart e selecione o APK do Ownership Inspector.
O Safe Mart instala a aplicação alvo e solicita a propriedade de atualização durante a sessão de instalação inicial.
Neste ponto, o Safe Mart atua como o instalador de referência e se torna a fonte de atualização esperada para a aplicação alvo.
Abra o Ownership Inspector.
A aplicação exibe metadados relacionados ao instalador relatados pelo PackageManager do Android.
Este passo ajuda a confirmar o estado inicial da instalação antes de tentar atualizações a partir do Unsafe Mart.
Abra o Unsafe Mart e selecione o APK do Ownership Inspector.
Escolha o caminho de atualização normal.
Como o Ownership Inspector foi originalmente instalado através do Safe Mart com a propriedade de atualização ativada, o Android exibe um aviso de Propriedade de Atualização.
Este é o comportamento esperado do Android.
O aviso informa ao usuário que a aplicação normalmente recebe atualizações do Safe Mart, enquanto a tentativa de atualização atual está vindo do Unsafe Mart.
Volte para o Unsafe Mart e selecione novamente o APK do Ownership Inspector.
Escolha o caminho de reprodução do CVE-2026-0023.
Neste fluxo, o Android não exibe mais o aviso de Propriedade de Atualização.
Em vez disso, o sistema mostra apenas um diálogo genérico de confirmação de atualização.
Este é o comportamento vulnerável demonstrado pela prova de conceito.
A diferença importante não é apenas a mudança visual no diálogo.
O sinal de segurança sobre o proprietário de atualização registrado é removido do fluxo de atualização.
Após a conclusão da atualização, abra o Ownership Inspector novamente.
A aplicação pode ser usada para observar metadados relacionados ao instalador após a conclusão do caminho de reprodução do CVE-2026-0023.
Esta prova de conceito demonstra um bypass do modelo de confiança da Propriedade de Atualização.
Mais especificamente, mostra que:
A PoC não tenta fornecer acesso root, execução arbitrária de código, persistência, ocultação ou comportamento semelhante a malware.
A vulnerabilidade foi reproduzida no Android 15.
A prova de conceito não requer:
Toda a demonstração é realizada através de aplicações Android comuns executando no sandbox padrão de aplicações Android.
As informações de segurança do dispositivo testado podem ser observadas nos logs da aplicação.
Exemplos de valores coletados pela PoC incluem:
Build.VERSION.SECURITY_PATCH
Build.VERSION.SDK_INT
Build.VERSION.RELEASE
Build.VERSION.INCREMENTAL
Build.FINGERPRINT
Para construir e executar o projeto, você precisa de:
Nenhuma modificação especial no dispositivo é necessária.
Abra cada projeto de aplicação no Android Studio e compile os APKs de depuração:
Em seguida, instale o Safe Mart e o Unsafe Mart no dispositivo de teste.
O Ownership Inspector deve ser instalado através do Safe Mart durante o fluxo de reprodução.
A PoC interage com as APIs PackageInstaller do Android e modifica parâmetros de sessão de instalação para reproduzir o comportamento vulnerável.
Durante o caminho de reprodução do CVE, a PoC usa a flag do sistema relacionada ao comportamento de instalação de usuário gerenciado ou perfil:
INSTALL_FROM_MANAGED_USER_OR_PROFILE
A vulnerabilidade não é causada pelo acesso a APIs ocultas em si.
O acesso a APIs ocultas é usado apenas como um detalhe de implementação para alcançar as interfaces de framework necessárias a partir de um contexto de aplicação comum.
A fronteira de segurança importante é que esta flag de instalação só deve ser confiável quando definida pelo sistema após validar o estado do usuário gerenciado ou perfil gerenciado.
Este projeto utiliza a biblioteca RestrictionBypass do ChickenHook para acessar interfaces de framework Android não SDK necessárias para a prova de conceito.
O mecanismo de acesso a API oculta não está relacionado à causa raiz do CVE-2026-0023 e é usado apenas para interagir com as APIs PackageInstaller necessárias.
RestrictionBypass: https://github.com/ChickenHook/RestrictionBypass
Créditos aos autores originais pelo seu trabalho.
O Google classificou o CVE-2026-0023 como uma vulnerabilidade de Elevação de Privilégio de Alta gravidade.
O problema não fornece acesso root ou execução arbitrária de código.
No entanto, permite que um instalador sem privilégios realize uma operação que normalmente deveria ser protegida pelo modelo de segurança de instalação de pacotes do Android.
O impacto mais relevante está provavelmente em cenários de implantação empresarial e de dispositivos gerenciados.
As organizações podem confiar na Propriedade de Atualização para garantir que os aplicativos sejam atualizados através de uma loja de aplicativos aprovada ou instalador empresarial.
Ao suprimir o aviso de propriedade, o CVE-2026-0023 enfraquece um sinal de confiança que o Android normalmente forneceria antes de permitir uma atualização de uma fonte diferente.
Para dispositivos de consumo comuns, o impacto prático depende fortemente do comportamento de instalação do usuário, do nível de patch do dispositivo e se a aplicação alvo depende da semântica de propriedade de atualização.
Este repositório destina-se a demonstrar a vulnerabilidade em um ambiente de pesquisa controlado.
Não tenta:
A prova de conceito concentra-se especificamente no comportamento de bypass do aviso de Propriedade de Atualização associado ao CVE-2026-0023.
Boletim de Segurança Android - Março de 2026 https://source.android.com/docs/security/bulletin/2026/2026-03-01
CVE-2026-0023 - Registro CVE https://www.cve.org/CVERecord?id=CVE-2026-0023
CVE-2026-0023 - NVD https://nvd.nist.gov/vuln/detail/CVE-2026-0023
Patch AOSP - Desativar explicitamente a flag INSTALL_FROM_MANAGED_USER_OR_PROFILE
https://android.googlesource.com/platform/frameworks/base/+/09055276288a68cf35b0f84ba32e28822f74ecf9
RestrictionBypass por ChickenHook https://github.com/ChickenHook/RestrictionBypass
Este repositório é fornecido para fins de pesquisa de segurança, educacionais e análise de vulnerabilidades.
O código destina-se exclusivamente a reproduzir e estudar o CVE-2026-0023 em ambientes controlados e em dispositivos onde o teste é autorizado.
O autor não incentiva ou endossa testes não autorizados contra dispositivos, aplicações, usuários, organizações ou sistemas sem permissão.
Os usuários são responsáveis por cumprir todas as leis, políticas e requisitos organizacionais aplicáveis ao testar ou modificar dispositivos Android.
Use este repositório com responsabilidade.
| Campo | Valor |
|---|
| CVE | CVE-2026-0023 |
| Componente | Framework / PackageInstaller |
| Arquivo afetado | PackageInstallerService.java |
| Método afetado | createSessionInternal |
| Tipo de vulnerabilidade | Elevação de Privilégio |
| Gravidade | Alta |
| CVSS v3.1 | 7.8 |
| Vetor CVSS | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Vetor de Ataque | Local |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Baixo |
| Interação do Usuário | Nenhum |
| Escopo | Inalterado |
| Impacto | Elevação de Privilégio através de comportamento não autorizado de propriedade de atualização |
| Boletim de Segurança Android | Março de 2026 |
| Referência de bug do Android | A-459461121 |
| Versões AOSP afetadas listadas pelo Google | Android 14, 15, 16, 16-qpr2 |
| Evento | Valor |
|---|
| Boletim de Segurança Android | Março de 2026 |
| Data de publicação do boletim | 2 de março de 2026 |
| Seção de nível de patch de segurança | 2026-03-01 |
| Nível de patch totalmente abordado do boletim | 2026-03-05 ou posterior |
| Referência de bug do Android | A-459461121 |
| Patch AOSP | 09055276288a68cf35b0f84ba32e28822f74ecf9 |
| Título do patch | Explicitly unset INSTALL_FROM_MANAGED_USER_OR_PROFILE flag |