No kernel Linux, a seguinte vulnerabilidade foi resolvida. scsi: alvo: iscsi: Corrigir a sobrelibração do CRC e sem duplas em iscsit_handle_text_cmd() Dois erros latentes no manipulador de fase Text, ambos presentes desde a integração original do LIO no commit e 48354 ce 078 c ("iscsi- alvo: Adicionar suporte de tecido iSCSI para o alvo v 4.1 "): 1 ) DataDigest buffer CRC overlead ( 4 bytes passado text_in).
text_in é kzalloc()'d em ALIGN(payload_long, 4 ). rx_size é então incrementado por ISCSI_CRC_LEN para fazer espaço para o DataDigest recebido no iovec, mas o mesmo (agora- bumped) rx_size é passado como o comprimento do buffer para iscsit_crc_buf(): if (conn->conn_ops->DataDigest) {... rx_size += ISCSI_CRC_LEN; }... se (conn->conn_ops->DataDigest) { data_crc = iscsit_crc_buf(text_in, rx_size, 0, NULL); iscsit_crc_buf() caminha rx_tamanho bytes de text_in com crc 32 c(), então quando o DataDigest é negociado, ele lê 4 bytes passa o fim da alocação text_in. KASAN reproduz isso diretamente na árvore da linha principal não empaquetada como laje-fora-de-conjuntos no crc 32 c() chamado do caminho PDU Texto. O OOB bytes alimenta o crc 32 c() e são então comparados com a soma de checks fornecida pelo iniciador, para que o valor não flua de volta para o atacante, mas o kernel lê além do buffer em cada PDU de texto com DataDigest=CRC 32 C.
Corrigir passando o comprimento real de carga útil acolchoada (ALIGN(payload_load, 4 ) que foi usado para o kzalloc(). 2 ) Stale cmd->text_in_ptr re-livre (duplo-livre) no ERL> 0 Baixa do DataDigest ruim. Em DataDigest não corresponde com o nível de recuperação de erro > 0 o manipulador deixa cair o PDU silenciosamente e permite ao iniciador conectar o gap do CmdSN:.
kfree( text_ in); devolve 0. cmd->text_in_ptr ainda aponta para o buffer livre. A próxima solicitação de texto no mesmo ITT reintroduz iscsit_setup_text_cmd(), que incondicionalmente faz kfree(cmd->text_in_ ptr); cmd->text_in_ ptr = NULL. libertando o mesmo ponteiro uma segunda vez. A desmontagem da sessão via iscsit_ release_cmd() tem a mesma forma e atinge a mesma dupla liberdade se a conexão for abandonada antes de uma segunda solicitação de texto chegar. Numa árvore principal não modificada, o erro- 1 O CRC sobreleia primeiro os fogos na solicitação de texto válida inicial e perturba o estado subsequente, então # 4 foi isolado ao construir um kernel com apenas o erro- 1 um hunk deste patch aplicado mais observabilidade temporária printk() em torno dos três sites relevantes do kfree(). As impressões de observabilidade não fazem parte deste patch. Nesta compilação, uma sequência de três pedidos de texto PDU após o login produz duas espartilhas de volta para trás:.
BUG: KASAN: livre de duplos em iscsit_setup_text_cmd+ 0 - Sim. BUG: KASAN: livre de duplos em iscsit_release_cmd+ 0 - Sim. mostrando o mesmo ponteiro libertado no ERL> 0 drop path e novamente em iscsit_setup_text_cmd() (pessoa de texto próxima solicitação no mesmo ITT) e mais uma vez em iscsit_release_cmd() (desmorto de sessão). No kernel distro com CONFIG_SLAB_FREELIST_HARDENED=y (por omissão), o duplo livre torna- se um kernel remoto BUG(); nos kernels não endurecidos, corrompe a lista livre de lajes. Corrigir ao limpar cmd->text_in_ptr após o kfree() no ERL> 0 Drop caminho. Com ambos os pedaços aplicados # 4 é diretamente observável na árvore de estoques sem printks de observabilidade; corrigindo o erro- 1 Só isso iria mascarar # 4 menos, não mais, então os hunks são enviados juntos.
Ambas as correções são de uma linha. A máquina de estado do PDU Texto não está inalterada e o protocolo do fio não está afetado. Registro de aconselhamento: GHSA-ww 53 - m 8 wh- v 825. Identificadores relacionados: CVE- 2026 - 63888.
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 - 20 T 15: 31: 50.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
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 9 suporte de referências nestes tipos: AVISO, WEB.