ASA-2019-00420 – Linux kernel: Use-after-free via race condition entre modify_ldt() e exceção #BR


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00420

Identificador(es)

ASA-2019-00420, CVE-2019-13233

Título

Use-after-free via race condition entre modify_ldt() e exceção #BR

Fabricante(s)

Linux foundation

Produto(s)

Linux kernel

Versão(ões) afetada(s)

Linux kernel versões desde 4.15

Linux kernel versões com o seguinte commit aplicado:

x86/insn-eval: Add utility function to get segment descriptor
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=670f928ba09b

Versão(ões) corrigida(s)

Linux kernel versão 5.1.9

Linux kernel versões com o seguinte commit aplicado:

x86/insn-eval: Fix use-after-free access to LDT entry
https://github.com/torvalds/linux/commit/de9f869616dd95e95c00bdd6b0fcd3421e8a4323

Prova de conceito

Sim

Descrição

Há um use-after-free para acesso a uma entrada da LDT devido a uma race condition entre modify_ldt() e uma exceção #BR para uma violação de limites MPX.

Detalhes técnicos

Quando uma exceção #BR é acionada devido a uma violação de limites MPX, o Linux analisa a instrução com falha e calcula o endereço linear de seu operando de memória. Se a instrução do espaço de usuário estiver no código de 32 bits, isso envolve procurar o descritor de segmento correto e incluir o offset do segmento no endereço.

get_desc() bloqueia o contexto mm, calcula o ponteiro para a entrada LDT, mas depois libera o lock novamente e retorna o ponteiro. Isso significa que quando o chamador acessa o ponteiro, o ponteiro já pode ter sido liberado.

Créditos

Jann Horn (Google Project Zero)

Referência(s)

Issue 1879: Linux: UAF via race between modify_ldt() and #BR exception
https://bugs.chromium.org/p/project-zero/issues/detail?id=1879

x86/insn-eval: Fix use-after-free access to LDT entry
https://github.com/torvalds/linux/commit/de9f869616dd95e95c00bdd6b0fcd3421e8a4323

x86/insn-eval: Add utility function to get segment descriptor

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=670f928ba09b

ChangeLog-5.1.9
https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.1.9

CVE-2019-13233
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13233

CVE-2019-13233
https://nvd.nist.gov/vuln/detail/CVE-2019-13233

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 15 julho 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.