No kernel Linux, a seguinte vulnerabilidade foi resolvida. usb: gadget: f_fs: cópia apenas recebida bytes no ep curto 0 ler ffs_ep 0 _read() aloca o seu buffer de dados de controle-OUT com kmalloc() (não kzalloc) no valor de comprimento do pacote Configuração, depois copia o len completo para o espaço de usuário, independentemente de quantos bytes foram realmente recebidos: dados = kmalloc( len, GFP_KERNEL);... ret = __ffs_ep 0 _queue_wait(ffs, data, len); se (( ret > 0 ) & & (copy_ to_ user( buf, data, len)) ret = - EFAULT;.
_ffs_ep 0 _queue_wait() retorna req->actual, que em uma transferência de OUT de controle curto é estritamente menor que lem. A chamada copy_to_user() ainda copia len bytes, por isso, em um curto OUT os últimos bytes (len - ret) do buffer kmalloc() -- resíduos de placas não-NICIALIZados -- são entregues ao demon FunctionFS. Ep curta 0 As completações de OUT são especificadas como comportamento de transferência de controle USB e são produzidas por UDCs na árvore: * dwc 2 continua no comprimento req->actual para ep 0 OUT DE DADOS (Short-not-ok é o único ep 0 - Pista de travagem para fora). * aspeed_udc termina ep 0 OUT no rx_len ep.maxpacket. * registros de renesas_usbf "ep 0 pacote curto" e completa o pedido. * dwc 3 está atrasada no curto IN mas não no curto OUT.
Um ep curto 0 OUT não é, portanto, evidência de um UDC quebrado; é uma condição normal que o f_ fs tem que lidar. A implementação de gadgets irmãos em drivers/usb/gadget/ legacy/inode.c já faz isso corretamente via min(len, dev->req->actual) antes de copy_to_user(). Este patch traz o f_fs.c para o mesmo padrão seguro em vez de cortar em uma camada defensiva. O erro é alcançado a partir do nó do dispositivo FunctionFS, que nas implantações reais é propriedade do deemon privilegiado do gadget (adbd, UMS, serviços de gadget compostos, etc.); não é alcançável a partir do espaço de usuário desprivilegiado. Os servidores Linux normalmente rejeitam os OUTs de controle de curta- longitude antes de chegarem ao gadget, então reproduzindo isso, necessitava de uma compilação que omite a verificação do lado do servidor. Com o bypass no lugar, um 1 -byte de carga útil em um 64 -byte Setup produz 63 bytes de resíduos de placas não- canárias no buffer de leitura do deemon.
Corrigir copiando apenas bytes ret (realmente recebidos) no espaço de usuário. Registro de aconselhamento: GHSA-hqp 4 - gw 43 - 6 Pcc. Identificadores relacionados: CVE- 2026 - 63895.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 19 T 18: 31: 44.000 Z e lista a sua última modificação como 2026 - 07 - 19 T 18: 31: 44.000 Z. Severidade: não classificado. Nenhum vetor de pontuação está listado no registro.
Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões. Classificação e evidência: nenhum identificador CWE está listado. O registro contém 8 suporte de referências nestes tipos: AVISO, WEB.