Foi identificada uma vulnerabilidade no pacote de escritório Apache OpenOffice (CVE-2021-33035) que permite a execução de código ao abrir um arquivo DBF especialmente formatado. O pesquisador que detectou o problema alertou sobre a criação de um exploit funcional para a plataforma Windows. A correção da vulnerabilidade está disponível apenas na forma de um patch no repositório do projeto, que foi incluído nas compilações de teste do OpenOffice 4.1.11. Atualizações para a versão estável ainda não foram liberadas.
O problema é causado pelo fato de que, ao alocar memória, o OpenOffice se baseava nos valores de fieldLength e fieldType no cabeçalho dos arquivos DBF, sem verificar a correspondência do tipo de dado real nos campos. Para realizar um ataque, pode-se especificar como fieldType o tipo INTEGER, mas colocar dados de tamanho maior e indicar um valor de fieldLength que não corresponda ao tamanho dos dados do tipo INTEGER, resultando na gravação de dados além do buffer alocado. Como resultado de um estouro de buffer controlado, o pesquisador conseguiu sobrescrever o ponteiro de retorno da função e, utilizando técnicas de programação orientada a retorno (ROP — Return-Oriented Programming), executar seu próprio código.
Ao usar a técnica ROP, o atacante não tenta inserir seu código na memória, mas opera utilizando pedaços de instruções de máquina já existentes nas bibliotecas carregadas, que terminam com instruções de retorno (geralmente, estas são as terminações das funções da biblioteca). O funcionamento do exploit consiste em construir uma cadeia de chamadas a esses blocos ('gadgets') para obter a funcionalidade desejada. Como gadgets no exploit para OpenOffice foi utilizado código da biblioteca libxml2, que, ao contrário do próprio OpenOffice, foi compilada sem os mecanismos de proteção DEP (Data Execution Prevention) e ASLR (Address Space Layout Randomization).
Os desenvolvedores do OpenOffice foram notificados sobre o problema em 4 de maio, após o que foi agendada a divulgação pública das informações sobre a vulnerabilidade para 30 de agosto. Como, até o prazo determinado, a atualização da versão estável ainda não havia sido formada, o pesquisador adiou a divulgação dos detalhes para 18 de setembro, mas os desenvolvedores do OpenOffice não conseguiram lançar a versão 4.1.11 até essa data. É notável que, durante a mesma pesquisa, foi identificada uma vulnerabilidade semelhante no código de suporte ao formato DBF no Microsoft Office Access (CVE-2021–38646), cujos detalhes serão divulgados posteriormente. Nenhum problema foi encontrado no LibreOffice.
Fonte: opennet.ru
