NOTÍCIA

Linux endurece HFS e HFS+ contra imagens de disco corrompidas

Linux acaba de ganhar uma camada extra de desconfiança no tratamento de sistemas de arquivos antigos. Patches, enviados pelo mantenedor Viacheslav Dubeyko.

Linux endurece HFS e HFS+ contra imagens de disco corrompidas
Imagem: Redação iMasters

LinuxLinux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps acaba de ganhar uma camada extra de desconfiança no tratamento de sistemas de arquivos antigos. Os patches, enviados pelo mantenedor Viacheslav Dubeyko e integrados por Linus Torvalds, reforçam o suporte a HFS e HFS+. Além disso, eles corrigem problemas estruturais apontados pelo syzbot e falhas em casos de teste do xfstests.

O objetivo é direto. Assim, o kernel passa a evitar travamentos e leituras indevidas de memória quando encontra imagens de disco alteradas de propósito.

Linux e o velho hábito de confiar nos metadados

HFS e HFS+ nasceram na Apple e hoje ocupam um espaço de legado. Ainda assim, o kernel mantém o suporte para quem precisa ler discos e partições antigas.

O ponto sensível estava na confiança. Antes, ao montar um pen drive com HFS+ danificado, o kernel processava os metadados exatamente como eles se apresentavam. Portanto, um cabeçalho forjado podia apontar para regiões de memória erradas e derrubar o sistema.

Agora a postura mudou. Primeiro o kernel valida a estrutura, depois carrega os dados. Quando algo parece inconsistente, ele aborta a operação.

Linux aprende a montar volume suspeito como somente leitura

A primeira verificação olha para o bitmap da árvore B. Durante a abertura, o código confere se o bit do mapa de alocação referente ao cabeçalho da árvore está definido.

Caso o bit esteja ausente, o kernel identifica a corrupção. Em seguida, ele monta o volume em modo somente leitura. Dessa forma, a partição fica preservada contra danos adicionais.

Deslocamento desalinhado deixa de virar estouro

Imagens forjadas costumavam trazer nós de árvore B com contagem de registros maior que o tamanho real do nó. Outras traziam deslocamentos desalinhados.

A nova validação bloqueia intervalos sobrepostos e índices inválidos antes da leitura. Logo, estouros e travamentos ficam fora do caminho.

Linux valida CNIDs antes de instanciar inodes

Falhas na resolução de identificadores abriam espaço para registros de catálogo corrompidos. Agora, quando o identificador solicitado diverge do encontrado, o carregamento é rejeitado.

A lógica de exclusão do catálogo também foi refatorada. Imagens corrompidas forneciam nomes de thread grandes demais. Por isso, a leitura passou a respeitar o tamanho exato suportado pela estrutura.

Na prática, o kernel deixa de ler além do espaço alocado.

MDB ganha novo esquema de travas

O Master Directory Block ganhou um esquema de locking reformulado. Além disso, o kernel evita marcar buffers como sujos depois de uma falha de gravação.

O conjunto ainda estabiliza o tratamento de erros em gravações que ultrapassam a capacidade real do volume. Enquanto isso, verificações redundantes no KUnit foram removidas.

Linux legado como superfície de ataque

Para quem escreve código, a lição atravessa o caso do HFS. Todo parser confia em algum dado externo, e essa confiança costuma custar caro.

Vale observar o padrão adotado aqui. Primeiro, validação de limites antes de qualquer aritmética de ponteiro. Depois, degradação segura, com o volume montado em somente leitura. Por fim, rejeição explícita quando o identificador diverge.

Quem mantém drivers, importadores de arquivo ou rotinas de desserialização pode aplicar a mesma receita hoje.

O que fazer agora

Times que montam volumes HFS+ em pipelines de CI devem acompanhar o backport para as séries estáveis. Além disso, vale rodar fuzzing próprio sobre qualquer parser de formato legado no seu stack.

Afinal, o syzbot encontrou esses problemas justamente por insistir em entradas absurdas. Sua base merece o mesmo tratamento.

Acompanhe nosso perfil no Instagram!

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil