Voltar aos artigos
HIGH7.8/10CVE-2011-1823NVD

CVE-2011-1823 (Gingerbreak): Como o Daemon de Volume do Android Entregou Root para Quem Pediu Educadamente

`vold` — o Volume Daemon — é um processo de sistema Android que roda como root. Seu trabalho é gerenciar volumes de armazenamento: cartões SD, drives USB, particionamento, montagem.

@0xrafasecFebruary 18, 2026cve-analysis

CVSS: 7.8/10 (HIGH)

Affected: cpe:2.3:o:google:android:*:*:*:*:*:*:*:* from 2.0 to (excl) 2.3.4; cpe:2.3:o:google:android:3.0:*:*:*:*:*:*:*

Available in English

Share:

Legal & Ethical Disclaimer

This content is provided for EDUCATIONAL and AUTHORIZED SECURITY TESTING purposes only.

DO
  • Use these techniques on systems you own or have explicit written permission to test
  • Practice in authorized lab environments (VulnHub, HackTheBox, DVWA, etc.)
  • Follow responsible disclosure practices when finding vulnerabilities
  • Use knowledge for defensive security and authorized penetration testing
DO NOT
  • Access systems without explicit authorization
  • Use these techniques for malicious purposes
  • Deploy exploits against production systems you don't own
  • Share working exploits for unpatched vulnerabilities

Legal warning

Unauthorized access to computer systems is illegal in most jurisdictions (e.g. CFAA in the US, Computer Misuse Act in the UK). Violators may face criminal prosecution and civil liability. The author and publisher assume no liability for misuse of this information. By continuing, you agree to use this knowledge ethically and legally.

CVE-2011-1823 (Gingerbreak): Como o Daemon de Volume do Android Entregou Root para Quem Pediu Educadamente

Antes das soluções MDM, antes da criptografia obrigatória, antes do Android ter qualquer presença empresarial séria — uma escalação de privilégios local que funcionava em praticamente todo telefone Android em 2011 estava escondida dentro do daemon responsável por montar seu cartão SD.


🎯 Impacto: Escalação de privilégios local para root no Android 2.x–3.0 via corrupção de memória em vold
🔓 Vetor de Ataque: Local (app instalado, nenhuma permissão necessária)
💥 Exploitabilidade: Fácil — exploit público (Gingerbreak) era confiável com clique
🛡️ Correção Disponível: Sim — Android 2.3.4+ e builds patched 3.x
⏱️ Faça Patch Agora: Dispositivos legados estão permanentemente expostos; Android moderno não é afetado

O Que Está Realmente Acontecendo

O ponto é esse: essa vulnerabilidade não é exótica. É um bypass de verificação de inteiro com sinal clássico levando a corrupção de memória, e a única razão pela qual é interessante é onde ela vive e quais eram as suposições de design em torno dela.

vold — o Volume Daemon — é um processo de sistema Android que roda como root. Seu trabalho é gerenciar volumes de armazenamento: cartões SD, drives USB, particionamento, montagem. Para fazer esse trabalho, ele precisa conversar com o kernel. Faz isso ouvindo em um socket PF_NETLINK, que é a interface padrão de mensagens kernel-espaço do usuário do Linux para coisas como eventos de rede e, neste caso, eventos de hotplug de armazenamento.

A falha fatal de design: vold confiava incondicionalmente no conteúdo dessas mensagens netlink.

No Linux, sockets PF_NETLINK historicamente tiveram controles de acesso fracos. Qualquer processo local poderia criar e enviar mensagens netlink. Os desenvolvedores do Android sabiam sobre isso em algum nível — eles adicionaram uma verificação de limites ao método DirectVolume::handlePartitionAdded. O problema é que eles só verificavam um lado dos limites.

Conceitualmente, a lógica vulnerável parecia assim:

cpp
// Representação simplificada do check falho em DirectVolume::handlePartitionAdded
int partitionNumber = getPartitionFromNetlinkMessage(msg);

// O check: só valida o limite superior
if (partitionNumber > MAX_PARTITIONS) {
    LOGE("Partition number out of range");
    return;
}

// partitionNumber é usado como índice de array — mas e se for negativo?
mPartitionTable[partitionNumber] = newEntry;  // ← corrupção de heap/stack aqui

O check é uma comparação de inteiro com sinal contra um valor máximo apenas. Não há verificação de limite inferior. Se você enviar um número de partição de -1, a comparação (-1 > MAX_PARTITIONS) avalia como falsa, então a execução continua. O valor negativo é então usado como um índice de array, escrevendo dados na memória antes do início do buffer alvo.

Isso é CWE-190 (Integer Overflow/Wraparound) combinado com sua consequência downstream: um write OOB clássico com índice de array negativo. O atacante controla o offset, e porque vold roda como root, a escrita corrompida acontece em um contexto de processo privilegiado. Obtenha controle confiável dessa escrita, e você tem execução de código como root.

O que torna isso particularmente interessante é que a vulnerabilidade não está em alguma biblioteca obscura de terceiros. Está em um daemon Android de primeira parte que roda em todo dispositivo, sempre, manipulando funcionalidade fundamental de hardware. A superfície de ataque é enorme e o nível de confiança do processo é máximo.


Caminho de Exploração

O exploit Gingerbreak (lançado publicamente por volta de maio de 2011) demonstrou quão acessível essa vulnerabilidade era. Nenhuma permissão especial necessária. Nenhuma interação do usuário após o app ser iniciado. Nenhum root necessário para disparar isso.

Pré-requisitos: Um app malicioso instalado no dispositivo. É isso. No Android 2.x, apps podiam ser sideloaded facilmente, e o modelo de permissões não restringia acesso a socket netlink.

A cadeia de ataque:

  1. Criação de socket: O processo malicioso abre um socket PF_NETLINK. Nenhuma permissão especial é necessária para isso nas versões Android afetadas.

  2. Craft de mensagem: O atacante cria uma mensagem uevent netlink falsa que imita um evento de partição de armazenamento, embutindo um índice de partição negativo cuidadosamente escolhido.

  3. Entrega a vold: A mensagem é enviada. vold, confiando implicitamente em todas as mensagens netlink, a processa através de handlePartitionAdded.

  4. Bypass do check de limites: O índice negativo passa no check de máximo apenas. vold prossegue para usá-lo como um índice de array.

  5. Corrupção de memória controlada: O write out-of-bounds corrompe memória no processo vold. Com conhecimento do layout da memória, o atacante pode transformar isso em uma primitiva write-what-where confiável.

  6. Shell root: Explorar a corrupção para redirecionar execução — classicamente sobrescrevendo um ponteiro de função ou endereço de retorno — e spawnar um shell root ou instalar um binário setuid.

O que tornou Gingerbreak notável para seu tempo foi a confiabilidade. O layout de memória do Android era previsível, ASLR era ausente ou fraco na maioria dos dispositivos 2.x, e não havia proteção de stack canary em vold. Exploração era quase trivialmente confiável em uma ampla gama de dispositivos e versões de firmware.


Quem Está Realmente em Risco

Em 2011, a resposta era "basicamente qualquer pessoa com um telefone Android." Android 2.x detinha a esmagadora maioria da participação de mercado. Android 3.0 (tablets Honeycomb) também era afetado.

Em 2024, o cenário realista de risco:

  • Dispositivos Android legados que nunca receberam atualizações antes de 2.3.3 permanecem permanentemente vulneráveis. Pense em deployments Android incorporados: kiosques de ponto de venda, tablets industriais, certos dispositivos médicos, e set-top boxes mais antigos rodando forks do Android.
  • Usuários de custom ROM em hardware mais antigo que nunca aplicaram a correção.
  • Ferramentas de rooting — Gingerbreak foi amplamente adotado como um mecanismo de rooting legítimo para dispositivos cujos fabricantes não tinham intenção de patcheá-los. Isso borra a linha entre exploração e uso intencional, mas o vetor é idêntico.

As indústrias que ainda devem se importar com isso: healthcare, varejo, e IoT industrial, onde dispositivos Android legados com longos tempos de vida operacional não são incomuns. Um tablet Android de 2011 rodando uma aplicação médica especializada não foi substituído só porque um CVE foi publicado.

A exploração in-the-wild foi imediata e generalizada em 2011. Gingerbreak foi lançado publicamente e funcionava de forma confiável, então todo autor de malware e todo entusiasta de rooting teve acesso a um exploit root funcional dentro de semanas da divulgação.


Detecção & Caça

Detectar exploração de CVE-2011-1823 é desafiador após o fato, mas existem indicadores comportamentais que valem a pena caçar em sistemas legados.

Como exploração se parece em tempo de execução:

  • Crash ou reinício inesperado do processo vold imediatamente antes da atividade de escalação de privilégios
  • Novos binários setuid-root aparecendo em /data/local/tmp, /data/data/<pkg>, ou /system/bin
  • Processos spawned com UID 0 que têm um processo pai não-root na árvore de processos
  • Escritas inesperadas para /system (se o exploit fizer chain em um payload remount-and-persist)

Lógica de detecção conceitual (SIEM/EDR):

yaml
# Regra estilo Sigma conceitual para artefatos de exploração estilo Gingerbreak
title: Escalação de Privilégios Suspeita do Android vold (CVE-2011-1823)
status: experimental
description: Detecta artefatos pós-exploração consistentes com exploit vold Gingerbreak
logsource:
  product: android
  service: logcat
detection:
  selection_crash:
    process: 'vold'
    event: 'SIGSEGV|crash'
  selection_escalation:
    # Processo root spawned de pai não-privilegiado
    uid: '0'
    parent_uid|not: '0'
    timeframe: dentro de 30s de crash do vold
  condition: selection_crash and selection_escalation
falsepositives:
  - Ferramentas legítimas de rooting
  - Processos de atualização OTA
level: high

Padrões-chave IOC:

  • Binário su ou Superuser.apk aparecendo pós-exploração
  • Entradas de logcat mostrando segfaults de vold seguidas de criação de processo UID 0
  • Atividade de socket netlink de processos não-sistema imediatamente antes de escalação de privilégios

Playbook de Mitigação

1. Ações Imediatas

  • Faça patch. Android 2.3.4 corrigiu isso. Se seus dispositivos podem receber a atualização, não há razão aceitável para não aplicá-la. Verifique Configurações → Sobre o Telefone → Versão do Android.
  • Audite seu ambiente para dispositivos Android rodando versões antes de 2.3.4 ou 3.0 não-patchado.

2. Mitigações de Curto Prazo (para dispositivos legados não-patchados)

  • Restrinja fontes de instalação de apps. Se um dispositivo não pode ser patchado, bloqueie-o para apps apenas conhecidos e bons. Sideloading deve ser desabilitado.
  • Isolamento de rede. Dispositivos Android legados que não podem ser patchados devem estar em VLANs isoladas sem caminhos de movimento lateral para sistemas sensíveis.
  • Considere restrições netlink baseadas em iptables se o firmware do dispositivo permitir configurações customizadas (efetividade limitada, mas adiciona fricção).

3. Hardening de Longo Prazo

  • Política de ciclo de vida do dispositivo. Qualquer dispositivo Android que não possa receber atualizações de segurança deve ter uma data de fim-de-vida documentada e um caminho de substituição. Ponto final.
  • Para forks do Android e deployments customizados, audite vold e daemons privilegiados similares por suposições de confiança netlink. O padrão (confiando em entrada IPC de processos não-privilegiados sem autenticação) não é único para esse CVE.
  • Implemente Mobile Device Management (MDM) com políticas de enforce de versão OS.

4. Verificação

  • Execute getprop ro.build.version.release — qualquer coisa abaixo de 2.3.4 em um dispositivo 2.x é vulnerável.
  • Verifique pela presença de su ou Superuser.apk como indicadores de exploração anterior.
  • Em dispositivos patchados, verifique se a correção está presente confirmando que o binário vold foi atualizado como parte do patch set 2.3.4.

Minha Análise

O score CVSS de 7.8 é honestamente subestimar o impacto real — mas apenas em seu contexto de 2011. Uma escalação de privilégios local que requer zero permissões, zero interação do usuário além de instalar um app, e funciona de forma confiável em quase todo dispositivo Android vendido na época? Isso é um 9+ em termos práticos. O score reflete o vetor teórico (local), mas a exploitabilidade real no ecossistema Android de 2011 era mais próxima de "trivial" do que "complexidade alta."

O que esse CVE realmente expõe é uma falha de suposição de segurança fundamental. Os desenvolvedores claramente entendiam que alguma verificação de limites era necessária — eles escreveram um check. Eles só verificaram uma direção, que é um padrão que vejo constantemente em revisões de código: desenvolvedores que entendem que um valor "não deveria ser muito grande" mas não internalizam que inteiros com sinal também podem ser muito pequenos. A lição aqui não é "adicione mais checks" — é "trate toda entrada externa como adversarial, especialmente de canais IPC que processos não-privilegiados podem escrever." Netlink não foi projetado como um limite de segurança, e tratá-lo como tal custou caro ao Android.

Se sou honesto, a resposta do Google foi adequada mas não excepcional. A correção chegou em 2.3.4, mas o problema de fragmentação do Android significou que atrasos de atualização de OEM e operadora deixaram milhões de dispositivos expostos por meses ou anos após a correção existir. Essa não era a primeira vez que o Google encontrava o problema de fragmentação de atualização do Android, e não seria a última. O lançamento de Gingerbreak foi em última análise um catalisador para muitos usuários fazerem root em seus dispositivos porque fabricantes se recusavam a enviar atualizações — que é um resultado perverso onde uma vulnerabilidade de segurança se tornou uma ferramenta para usuários contornarem insegurança imposta pelo fabricante.


Timeline

DataEvento
2011-03 (aprox.)Vulnerabilidade descoberta e pesquisada privadamente
2011-04-29Android 2.3.4 lançado com correção para CVE-2011-1823
2011-05Exploit Gingerbreak lançado publicamente
2011-05-09CVE-2011-1823 formalmente atribuído e publicado
2011 (contínuo)Adoção generalizada de Gingerbreak como ferramenta de rooting; atrasos de patch de OEM deixam maioria do mercado exposta

Referências

Achou este artigo interessante? Siga-me no X e no LinkedIn.