Linux · Linux Kernel · CVE-2021-46938
**Nome do software vulnerável e versões afetadas**
Versões do kernel Linux anteriores à 5.3.18-53-default #1 SLE15-SP3
**Descrição**
A vulnerabilidade está relacionada a uma liberação dupla do `blk mq tag set` na tabela do device-mapper para um dispositivo mapeado baseado em solicitação. Quando a alocação/inicialização do `blk mq tag set` falha, a remoção subsequente do dispositivo causará uma liberação dupla, levando a um kernel panic. O problema é causado pelo ponteiro não ser redefinido para NULL após o `blk mq tag set` ser desinicializado/liberado.
Para explorar essa vulnerabilidade, um invasor precisaria fazer com que a alocação/inicialização do `blk mq tag set` falhasse e, em seguida, acionar a remoção do dispositivo. Isso poderia permitir que o invasor causasse uma negação de serviço ou executasse código arbitrário.
A função `dm mq init request queue()` é vulnerável, e a função `dm mq cleanup mapped device()` tenta desinicializar e liberar o `blk mq tag set` novamente, causando a liberação dupla.
A vulnerabilidade pode ser corrigida definindo o ponteiro como NULL no tratamento de erros de `dm mq init request queue()` e em `dm mq cleanup mapped device()`.
**Recomendações**
Para resolver o problema, atualize o kernel do Linux para uma versão que inclua a correção para a vulnerabilidade de liberação dupla. Especificamente, atualize para uma versão posterior à 5.3.18-53-default #1 SLE15-SP3.
Como solução alternativa temporária, considere desativar a função `dm mq init request queue()` ou restringir o acesso à tabela do device-mapper para minimizar o risco