O CVE-2025-68260 foi amplamente descrito como o primeiro CVE atribuído ao código Rust no kernel principal do Linux. A vulnerabilidade está no driver Android Binder baseado em Rust (aglutinador de ferrugem) e é descrito como um bug de classe de colisão: uma condição de corrida que pode corromper ponteiros intrusivos da lista vinculada e acionar oops/panic (negação de serviço) do kernel.
Isso é importante para as equipes de segurança por dois motivos. Em primeiro lugar, os bugs do kernel "somente com falhas" ainda causam um impacto operacional real, especialmente em ambientes de alta disponibilidade ou de vários locatários. Em segundo lugar, a exposição depende da configuração: muitos sistemas Linux não serão afetados a menos que a implementação do Rust Binder seja ativada e usada.
Resumo executivo para engenheiros de segurança
- CVE: CVE-2025-68260
- Componente: Driver do Android Binder do kernel do Linux Rust (
aglutinador de ferrugem), envolvendoNode::releaseelista_de_mortesmanuseio - Classe de erros: Condição de corrida + manipulação intrusiva e insegura da lista → corrupção do ponteiro
- Impacto: Falha no kernel / DoS (descrito publicamente)
- A exposição depende de: Se o Rust Binder está ativado/selecionado (por exemplo,
ANDROID_BINDER_IPC_RUST,binder.impl) - Status do NVD: "Aguardando análise" no momento da redação (o CVSS pode estar pendente)
O que é o CVE-2025-68260: um bug de simultaneidade no driver do Rust Binder
O registro NVD descreve uma operação de remoção insegura específica em uma lista vinculada intrusiva. A operação é segura somente se nenhum outro thread puder tocar simultaneamente no elemento anterior/seguinte ponteiros. A falha ocorre quando um padrão de queda de bloqueio em Node::release se sobrepõe a um sistema inseguro simultâneo removerlevando à corrupção da lista vinculada e a falhas.
O NVD inclui um sintoma representativo de falha do kernel ("Unable to handle kernel paging request...") associado aos ponteiros de lista corrompidos, consistente com uma vulnerabilidade de classe de falha em vez de uma falha lógica sutil.
Um breve esboço conceitual do padrão problemático (para intuição, não como uma exploração) é o seguinte:
// Esboço conceitual (não o código completo do kernel):
lock(death_list);
move_all_items_to_local_list();
desbloquear(lista_de_mortes);
// Iterar sem o bloqueio
for item in local_list {
// processar item
}
// A thread simultânea pode fazer:
insegura { death_list.remove(item) } // toca nos ponteiros anterior/seguinte
// => corrida de dados => corrupção de ponteiro => falha do kernel
A chave é a invariante de simultaneidade: tocar em ponteiros de lista intrusivos com segurança exige garantias de acesso exclusivo, e essas garantias falham quando os elementos da lista podem ser modificados em paralelo durante a passagem sem bloqueio.
Por que esse se tornou o "primeiro CVE do kernel do Rust"?
Greg Kroah-Hartman (mantenedor estável) caracterizou publicamente isso como o primeiro CVE do kernel para o código Rust, enfatizando que o problema "apenas causa um travamento" e não representa um caminho demonstrado para a corrupção de memória armada.
Esse enquadramento é útil do ponto de vista operacional: ajuda as equipes de segurança a fazer a triagem do bug como um risco de disponibilidade com exposição dependente da configuração, ao mesmo tempo em que evita exageros quanto à capacidade de exploração.
Sistemas afetados: Linha do tempo da versão e realidade da configuração
Dois fatos ancoram a linha do tempo e o modelo de exposição:
- O driver Rust do Android Binder foi incorporado ao Linux v6.18-rc1de acordo com a documentação do projeto Rust for Linux.
- A configuração do kernel do Android suporta explicitamente a seleção de uma implementação do Binder, incluindo uma variante do Rust. A documentação do Kconfig faz referência a
binder.implcomo o botão de linha de comando do kernel usado para escolher a implementação e inclui opções que regem o padrão.
Isso significa que a exposição não é "toda Linux". Uma frota de servidores genéricos pode nunca habilitar o Rust Binder. Mas os kernels voltados para o Android, as máquinas de desenvolvimento que executam pilhas de contêineres do Android ou as compilações personalizadas que habilitam a implementação do Rust Binder devem tratar o CVE-2025-68260 como acionável.
O Binder em si é um mecanismo IPC fundamental do Android, amplamente documentado pelos materiais de arquitetura do Android.
Verificações rápidas de exposição (auditáveis, sem conteúdo de exploração)
Use esses comandos para determinar se seu ambiente está no escopo.
Versão do kernel
uname -r
Configuração do kernel: Rust + Binder + Rust Binder
Configuração de /boot no estilo da distribuição # (comum em muitos sistemas)
grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST" /boot/config-$(uname -r) 2>/dev/null
# Se o arquivo /proc/config.gz estiver ativado
zcat /proc/config.gz 2>/dev/null | grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST"
Seleção da implementação do binder (os kernels do Android geralmente usam binder.impl)
cat /proc/cmdline | tr ' ' '\n' | grep -E '^binder\.impl='
O binder.impl está documentado no Kconfig do kernel do Android como parte do comportamento de seleção da implementação.
Busca de sinais de colisão (somente sintomas)
dmesg -T | egrep -i "rust_binder|binder|Unable to handle|paging request|Oops|KASAN" | tail -n 200
Estratégia de correção: Atualizar primeiro, fazer backport somente com CI real
A abordagem mais segura é mudar para uma versão estável do kernel que contenha a correção. A cobertura pública enfatiza a atualização para kernels estáveis em vez de selecionar commits isolados, de acordo com a estabilidade do kernel e as práticas de teste.
O registro NVD inclui referências a fontes do kernel.org que rastreiam o contexto da correção.
Se você executa um kernel personalizado do Android e não pode fazer a atualização imediatamente, o caminho de engenharia normalmente é: fazer o backport da correção para o seu conjunto de patches mantido e validar em cargas de trabalho pesadas do Binder. No entanto, para a maioria das empresas, a opção pragmática é: consumir atualizações de fornecedores (canal da distro/OEM/GKI) e documentar as evidências da correção.
Tabela de triagem
| Campo | Valor |
|---|---|
| CVE | CVE-2025-68260 |
| Componente | Driver do Rust Android Binder (aglutinador de ferrugem), Node::release / lista_de_mortes caminho |
| Classe de vulnerabilidade | Condição de corrida + corrupção de ponteiro de lista intrusiva e insegura |
| Pior impacto possível | Falha no kernel / DoS (descrição pública) |
| A exposição depende de | Rust Binder ativado/selecionado (ANDROID_BINDER_IPC_RUST, binder.impl) |
| Enriquecimento de NVD | "Aguardando análise" (pode estar pendente) |
Contexto: CVEs do kernel relacionados para priorização
O CVE-2025-68260 é descrito publicamente como de classe de colisão. Para a priorização, muitas organizações se baseiam em CVEs do kernel com impacto mais claro sobre os privilégios:
- CVE-2019-2215 (Fichário do Android UAF / EoP): O NVD descreve uma elevação de privilégio por meio de um Binder use-after-free; o Project Zero fornece uma análise detalhada.
- CVE-2022-0847 ("Dirty Pipe"): amplamente rastreado por escalonamento de privilégios locais; a CISA emitiu um alerta.
- CVE-2024-1086 (nf_tables UAF / LPE): A NVD e a Red Hat resumem o potencial de LPE de um use-after-free no netfilter/nf_tables.
A conclusão prática: trate o CVE-2025-68260 como de alta prioridade quando o Binder/Rust Binder estiver em uso ativo e as falhas forem impactantes para os negócios; caso contrário, não deixe que a manchete "primeiro CVE do Rust" substitua problemas de kernel de classe LPE mais amplamente alcançáveis.
Operacionalização da resposta com a Penligent
Para CVEs de kernel dependentes de configuração, o gargalo raramente é a leitura do aconselhamento - é a produção de respostas defensáveis e escalonáveis para "onde estamos expostos" e "a correção realmente foi feita". A Penligent pode simplificar esse ciclo transformando o CVE-2025-68260 em um fluxo de trabalho de evidências repetível: coletar versões do kernel e sinais de configuração em ativos, agrupar hosts por habilitação do Rust Binder e binder.impl seleção e gerar um relatório de correção pronto para auditoria com referências de apoio. Essa abordagem foi projetada para verificação e encerramento, não para exploração.
NVD: CVE-2025-68260
https://nvd.nist.gov/vuln/detail/CVE-2025-68260
Aviso de Greg Kroah-Hartman (enquadramento de falhas; primeiro CVE do kernel do Rust)
https://social.kernel.org/notice/B1JLrtkxEBazCPQHDM
Cobertura do SecurityOnline
https://securityonline.info/rusts-first-breach-cve-2025-68260-marks-the-first-rust-vulnerability-in-the-linux-kernel/
Rust para Linux: Android Binder Driver (mesclado na v6.18-rc1)
https://rust-for-linux.com/android-binder-driver
Kconfig do kernel do Android (opções do Binder Rust; seleção do binder.impl)
https://android.googlesource.com/kernel/common/+/refs/tags/android15-6.6-2024-07_r44/drivers/android/Kconfig
Documentos do Android: Visão geral do IPC do Binder
https://source.android.com/docs/core/architecture/hidl/binder-ipc
NVD: CVE-2019-2215
https://nvd.nist.gov/vuln/detail/CVE-2019-2215
RCA do Projeto Zero: CVE-2019-2215
https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2019/CVE-2019-2215.html
NVD: CVE-2022-0847
https://nvd.nist.gov/vuln/detail/CVE-2022-0847
Alerta da CISA: Dirty Pipe
https://www.cisa.gov/news-events/alerts/2022/03/10/dirty-pipe-privilege-escalation-vulnerability-linux
NVD: CVE-2024-1086
https://nvd.nist.gov/vuln/detail/cve-2024-1086
Red Hat: CVE-2024-1086
https://access.redhat.com/security/cve/cve-2024-1086

