PT-2021-17197 · Xcb · Xcb
Publicado
2021-02-04
·
Atualizado
2021-08-25
·
CVE-2021-26956
CVSS v3.1
9.8
Crítica
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
**Nome do software vulnerável e versões afetadas:
Versões do crate xcb até 04/02/2021
Descrição:
O problema diz respeito a uma violação de integridade no crate xcb para Rust, em que bytes de um servidor X podem ser interpretados como qualquer tipo de dados retornado por
xcb::xproto::GetPropertyReply::value(). Isso ocorre porque a função retorna uma fatia do tipo T, onde T é um parâmetro de tipo não restrito, permitindo que os bytes brutos recebidos do servidor X11 sejam interpretados como o tipo solicitado. Além disso, xcb::xproto::GetAtomNameReply::name() chama std::str::from utf8 unchecked() em bytes não validados de um servidor X, e há uma leitura fora dos limites em xcb::xproto::change property() quando os argumentos de formato e tipo não correspondem ao uso pretendido. A função xcb::base::cast event() também usa std::mem::transmute() para retornar uma referência a um tipo arbitrário, o que pode levar à transmutação para um tipo incorreto.Recomendações:
Para versões até 04/02/2021, recomenda-se que os usuários chamem
xcb::xproto::GetPropertyReply::value() apenas com os tipos pretendidos, que são u8, u16 e u32.Para
xcb::xproto::GetAtomNameReply::name(), considere validar os bytes recebidos do servidor X antes de chamar std::str::from utf8 unchecked().Para
xcb::xproto::change property(), certifique-se de que os argumentos de formato e tipo correspondam ao uso pretendido para evitar leituras fora dos limites.Para
xcb::base::cast event(), faça a conversão apenas para as estruturas de evento fornecidas pelo crate xcb para minimizar oExploit
Out of bounds Read
Unchecked Return Value
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Xcb