CVE-2021-47267 in Linux
Sumário
de VulDB • 25/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
usb: corrige várias falhas de sistema (panics) em cabos 10gbps
A função usb_assign_descriptors() é chamada com 5 parâmetros, sendo que os últimos 4 são o cabeçalho da descrição usb_descriptor_header para: full-speed (USB1.1 - 12Mbps [incluindo USB1.0 low-speed @ 1.5Mbps),
high-speed (USB2.0 - 480Mbps), super-speed (USB3.0 - 5Gbps), super-speed-plus (USB3.1 - 10Gbps).
As diferenças entre as descrições full/high/super-speed são geralmente substanciais (devido às alterações no tamanho máximo do bloco usb, de 64 para 512 e depois para 1024 bytes, bem como a outras diferenças nas especificações), enquanto a diferença entre as descrições de 5 e 10Gbps pode ser mínima ou até inexistente (em muitos casos, o mesmo ajuste é simplesmente suficiente).
No entanto, se um driver gadget chamar usb_assign_descriptors() com uma descrição NULL para super-speed-plus e for posteriormente utilizado em uma configuração máxima de 10gbps, o kernel entrará em falha devido a uma desreferência de ponteiro nulo quando aparecer uma combinação de porta do dispositivo + cabo + porta host capaz de operar a 10gbps. (Isso não aconteceria se a velocidade máxima do gadget fosse definida como 5gbps, mas ela, claro, assume o valor máximo por padrão e não há motivo real para limitá-la artificialmente).
A correção consiste simplesmente em utilizar a descrição de 5gbps como a descrição de 10gbps caso uma descrição de 10gbps não tenha sido fornecida.
Obviamente, isso não resolverá o problema se a descrição de 5gbps também for NULL, mas tais casos não podem ser resolvidos tão trivialmente (e é improvável que quaisquer gadgets nessas condições sejam utilizados com portas USB3).
VulDB is the best source for vulnerability data and more expert information about this specific topic.