ASA-2019-00626 – Xen: add-to-physmap pode ser utilizado para causar Negação de Serviço (DoS) em hosts ARM


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00626

Identificador(es)

ASA-2019-00626, CVE-2019-18423, XSA-301

Título

add-to-physmap pode ser utilizado para causar Negação de Serviço (DoS) em hosts ARM

Fabricante(s)

The Xen Project

Produto(s)

Xen

Versão(ões) afetada(s)

Xen versão 4.8 e mais recentes sendo executadas em sistemas ARM

Versão(ões) corrigida(s)

Xen 4.11 – 4.8 com os seguintes patches:

[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-4.11-1.patch

[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-4.11-2.patch

[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-4.11-3.patch

Xen unstable – 4.12 com os seguintes patches:

[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-master-1.patch

[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-master-2.patch

[PATCH 3/3] xen/arm: p2m: Don’t check the return of
p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-master-3.patch

Prova de conceito

Desconhecido

Descrição

Um administrador convidado mal-intencionado pode causar uma falha no hypervisor, resultando em uma Negação de Serviço (DoS).

Detalhes técnicos

p2m->max_mapped_gfn é usado pelas funções p2m_resolve_translation_fault() e p2m_get_entry() para verificar a integridade do frame físico do convidado. O restante do código nas duas funções assumirá que existe uma tabela raiz válida e verifica isso com BUG_ON().

A função p2m_get_root_pointer() ignorará os bits superiores não utilizados de um frame físico convidado. Isso significa que a função p2m_set_entry() fará o apelido do frame. No entanto, p2m->max_mapped_gfn será atualizado usando o frame original.

Seria possível definir p2m->max_mapped_gfn alto o suficiente para cobrir um frame que levaria p2m_get_root_pointer() a retornar NULL em p2m_get_entry() e p2m_resolve_translation_fault().

Além disso, a verificação de integridade em p2m->max_mapped_gfn é off-by-one, permitindo que “o mais alto mapeado + 1” seja considerado válido. No entanto, p2m_get_root_pointer() retornará NULL.

O problema pode ser acionado com um hypercall especialmente criada XENMEM_add_to_physmap{, _batch} seguido de um acesso a um endereço (via hypercall ou acesso direto) que passa na verificação de integridade, mas faz com que p2m_get_root_pointer() retorne NULL.

Créditos

Julian Grall  (Arm)

Referência(s)

XSA-301 – Xen Security Advisories
https://xenbits.xen.org/xsa/advisory-301.html

oss-security – Xen Security Advisory 301 v3 (CVE-2019-18423) – add-to-physmap
can be abused to DoS Arm hosts
https://www.openwall.com/lists/oss-security/2019/10/31/4

[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-4.11-1.patch

[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-4.11-2.patch

[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-4.11-3.patch

[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-master-1.patch

[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-master-2.patch

[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-master-3.patch

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

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

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

Última modificação: 12 novembro 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.