
Prova de conceito demonstrando o CVE-2026-0023, uma bypass de confiança de propriedade de atualização do Android que suprime o aviso de propriedade durante atualizações de aplicativos. Inclui três aplicativos Android para reproduzir e estudar a vulnerabilidade.
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. |
![]() | ![]() |
| 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 |
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.