LibreOffice: Qualidade e segurança do software
Tradução voluntária: Vitor Ferreira e Tulio Macedo.
O LibreOffice começou como uma derivação do OpenOffice.org, o pacote de produtividade de escritório gratuito desenvolvido pela Sun Microsystems. O projeto OpenOffice.org nasceu em 2000, um ano após a aquisição da StarDivision (sede alemã do StarOffice) pela Sun Microsystems, quando a própria Sun decidiu transformar a suíte proprietária numa suíte de código aberto sob as licenças GPL e SISSL.
Em 2010, os líderes da comunidade de voluntários do projeto OpenOffice.org, preocupados com a gestão da Sun, baseada em metodologias ultrapassadas de desenvolvimento, num processo de Garantia de Qualidade excessivamente manual e com a aquisição da Sun Microsystems pela Oracle (a Oracle nunca escondeu a sua idiossincrasia em relação ao software de código aberto), decidiram lançar um projeto independente: o LibreOffice.
Contudo, a qualidade e a segurança do OpenOffice.org a essa altura já era superior à de qualquer software proprietário, e em particular, o Microsoft Office. A base de dados CVE (vulnerabilidades e exposições comuns) registra um número elevado de problemas críticos, devido a dois fatores: a maior fragilidade do código fonte proprietário, que não se beneficia dos efeitos virtuosos do compartilhamento de conhecimentos de segurança, e o maior número de utilizadores, que o torna um alvo mais fácil.
A maior qualidade do software de código aberto foi confirmada pelo relatório de código aberto da Coverity Scan: “Em 2013, a qualidade dos projetos de código aberto ultrapassou a dos projetos proprietários em todos os níveis. Para o relatório de 2013, analisamos cerca de 500 milhões de linhas de código de cerca de 500 projetos proprietários escritos em C/C++ e concluímos que o software de código aberto tem uma densidade de falhas inferior à do software proprietário. Um dos fatores que levou a este resultado foi o esforço de alguns grandes projetos – incluindo o LibreOffice – para resolver coletivamente mais de 11 000 falhas durante o ano” [1].
A qualidade do código-fonte do LibreOffice
Quando o projeto LibreOffice nasceu, os criadores mudaram a abordagem do OpenOffice.org, lançando uma atividade de limpeza do código fonte que durou todo o ano de 2011 e que, desde o início de 2012, resultou numa suíte de escritório de qualidade significativamente superior. Como parte da atividade de limpeza, os criadores também reviram a sua abordagem à garantia de qualidade, criando um processo automatizado baseado em tecnologias de ponta.
O projeto LibreOffice utiliza o Gerrit como ferramenta de revisão de correções para a sua integração com o Git, o principal sistema distribuído de gestão do desenvolvimento de software. O código-fonte é regularmente compilado por uma bateria de várias Tinderboxes e, se a compilação for bem sucedida, é submetido a uma série de testes automatizados que verificam o comportamento do software com milhares de documentos.
Os arquivos de teste são extraídos de várias instâncias públicas do Bugzilla: The Document Foundation, Launchpad (alguns), Freedesktop, Mozilla, GNOME, KDE, Gentoo, Mandriva, Novell, AbiSource, e arquivos de teste do SVG – W3C. Os documentos mais adequados para testes são aqueles piores, por isso carregamos e guardamos todos os que estão associados a bugs.
Esta atividade automatizada é complementada pelo trabalho da equipe de Garantia de Qualidade do LibreOffice, que utiliza ferramentas como o Bugzilla para gerir erros e regressões, e para os reportar aos programadores, quando apropriado, para a correção do código fonte.
Gerenciamento de falhas no código-fonte do LibreOffice
A qualidade do código-fonte melhorou significativamente desde quando os programadores começaram a utilizar os serviços Coverity Scan em 2012 [2]. Desde então, o LibreOffice tornou-se um dos pacotes de programas com o menor número de falhas em proporção de linhas de código-fonte. Esta atividade é muito importante em termos de segurança de software, uma vez que as falhas no código-fonte estão frequentemente associados a relatórios CVE (vulnerabilidades e exposições comuns).
A primeira imagem fornecida pelo Coverity Scan representa a situação atual do código fonte do LibreOffice Community 24.2, com 0,001 falhas pendentes. Ao longo do tempo, os desenvolvedores do LibreOffice corrigiram 32.496 falhas, enquanto 670 foram descartadas como falsas positivas.
A segunda imagem, fornecida pelo Coverity Scan, resume a tendência de falhas abertas versus falhas corrigidas nos últimos 10 anos. Do início de 2015 a meados de 2023, o número de falhas pendentes é igual ou próximo a 0, enquanto o número de falhas corrigidas aumenta regularmente. O aumento das falhas pendentes no final de 2023 e no início de 2024 foi rapidamente resolvido por um aumento correspondente do número de falhas corrigidas por especialistas em segurança, fazendo com que o número voltasse a ser igual ou próximo de 0. A diferença em 2019 deve-se a uma revisão completa do software de análise Coverity Scan.
Esta terceira imagem, fornecida pelo Coverity Scan, visualiza a tendência da densidade de falhas ao longo dos últimos anos, de janeiro de 2022 a janeiro de 2024. A densidade de falhas do LibreOffice estava acima de 0,005 por 1.000 linhas de código em fevereiro/março e agosto de 2022, cerca de 0,25 por 1.000 linhas de código em setembro de 2023 e acima de 0,75 por 1.000 linhas de código em novembro de 2023. A situação atual está próxima do normal.
Os números fornecidos pelo Coverity Scan são uma prova da limpeza e refatoração do código-fonte do LibreOffice pelos desenvolvedores desde 2010. Eles também confirmam a extensão do deficit técnico herdado do OpenOffice.org, que foi resolvido em quatro anos. Foi um trabalho valioso, compreendido pelo mercado apenas em retrospectiva, quando finalmente ficou claro que a estratégia de desenvolvimento do LibreOffice é adequada.
O Coverity Scan permite a detecção de falhas, vulnerabilidades de segurança, simultaneidades, corrupção de memória, memória não inicializada, tratamento de erros, perdas de recursos, e contribui para a segurança geral do software, uma vez que a redução do número de falhas no código-fonte proporciona aos programadores uma base mais robusta e resistente para o seu trabalho.
Vale ressaltar, no entanto, que um baixo número de falhas no código-fonte – como o do LibreOffice – não exclui necessariamente a presença de bugs, regressões e vulnerabilidades.
Fuzzing para testar o código fonte do LibreOffice
Fuzzing é uma técnica de teste automatizado de software, amplamente utilizada pelos desenvolvedores do LibreOffice, que fornece dados inválidos, inesperados ou aleatórios como entradas para um programa de computador. A aplicação é então monitorada pelo sanitizador de código, uma ferramenta de programação que detecta bugs na forma de comportamento indefinido ou suspeito, para problemas como falhas, asserções de código embutido falhando, ou potenciais vazamentos de memória.
O fuzzing é utilizado como uma técnica automatizada para expor as vulnerabilidades em programas de segurança crítica que podem ser explorados com intenções maliciosas, para demonstrar a presença de bugs e não a sua ausência.
A principal ferramenta de fuzzing adotada pelos desenvolvedores do LibreOffice é o Google OSS Fuzz, anunciado em 2016. É uma infraestrutura de testes utilizada para o Chrome e outros projetos de software livre e de código aberto (FLOSS), que combina motores de fuzzing com sanitizadores e fornece um considerável ambiente de execução distribuído alimentado pelo ClusterFuzz. Utilizando o OSS-Fuzz, o projeto realizando fuzzing em 50 formatos de arquivos e isso está constantemente a ser executado à medida que novas alterações são integradas.
Gerenciamento de vulnerabilidades no código fonte do LibreOffice
O sistema CVE (Vulnerabilidades e exposições comuns) fornece um método de referência para informações publicamente conhecidas sobre vulnerabilidades e exposições de segurança. O FFRDC (National Cybersecurity dos Estados Unidos), operado pela The MITRE Corporation, mantém o sistema, com financiamento da Divisão Nacional de Cibersegurança do Departamento de Segurança Interna dos EUA.
Uma vulnerabilidade é um ponto fraco do sistema de software computacional que permite um acesso indevido. O identificador CVE é o número único atribuído a cada vulnerabilidade por uma Autoridade de Numeração CVE (CNA), como a The Document Foundation no caso do LibreOffice. Ao investigar uma vulnerabilidade ou potencial vulnerabilidade, é útil adquirir um número CVE numa fase inicial, uma vez que toda a correspondência futura pode fazer referência a esse número.
De acordo com a base de dados CVE da MITRE Corporation, que pode ser encontrada em https://www.cve.org/ (anteriormente em https://cve.mitre.org/), o LibreOffice foi afetado por 50 CVEs durante os últimos 10 anos. No mesmo período, o Microsoft Office foi afetado por 505 CVEs, portanto, uma ordem de grandeza superior à do LibreOffice.
Além disso, todos os CVEs que afetam o LibreOffice foram resolvidos com um patch de segurança lançado antes da divulgação (por convenção, a publicação de CVEs na base de dados ocorre entre 30 e 60 dias após o problema ser comunicado à equipa de segurança das aplicações afetadas).
O site Web https://www.cvedetails.com/ fornece uma comparação baseada no Sistema Comum de Pontuação de Vulnerabilidades (CVSS), um conjunto aberto de normas utilizadas para avaliar uma vulnerabilidade e atribuir uma gravidade numa escala de 0 a 10 (nenhuma a crítica).
O Comitê diretor de Engenharia (ESC) do LibreOffice é apoiado por uma equipa de peritos em questões de segurança mais específicas, com especialistas de renome mundial, que muitas vezes se oferecem como peritos em segurança para empresas que desenvolvem software em outros setores (um exemplo típico é o software automotivo).
Dito isto, deve ficar claro que o número de vulnerabilidades não pode ser utilizado para definir a vantagem competitiva de um programa e, de fato, nunca o mencionamos até esta data, porque não define a qualidade da aplicação em si, mas representa apenas o risco teórico desta ser utilizada para ter acesso aos dados do usuário ou comprometer a segurança do PC. Assim, os usuários nunca devem escolher um software em vez de outro com base no número de vulnerabilidades.
A importância do formato de arquivo ODF nativo do LibreOffice
O LibreOffice utiliza o padrão aberto Open Document Format (ODF) como formato nativo, o que pode ajudar as organizações e empresas a reduzir a sua vulnerabilidade a ataques do exterior, em comparação com o que pode acontecer com formatos de arquivos proprietários.
Os formatos proprietários de documentos de escritório são uma das vulnerabilidades mais exploradas, de acordo com uma investigação independente realizada pela Symantec em 2011 e pela Kaspersky Labs em 2018. No topo das análises de segurança em 2019, a Kaspersky afirmou que cerca de 70% de todos os ataques detetados no quarto trimestre de 2018 estavam tentando atingir uma vulnerabilidade do Microsoft Office, um aumento dramático em comparação com os 16% detetados em 2016 (o slide é da apresentação original) [3].
A explicação é simples. Os formatos de arquivos proprietários, como os antigos DOC, XLS e PPT, e os atuais DOCX, XLSX e PPTX “transitórios”, podem conter blocos binários de dados – que formam o veículo preferido do malware – para permitir a retrocompatibilidade com documentos antigos, uma característica que se destinava a proteger os utilizadores da obsolescência dos conteúdos.
A retrocompatibilidade e os respectivos blobs binários não só reduzem a segurança dos documentos do Microsoft Office, como também impedem a sua conformidade com as normas. De fato, embora as especificações “estritas” do Office Open XML não prevejam a integração de blobs binários, uma vez que estes não podem ser representados visualmente pelo código XML, são permitidos pelo atual formato de arquivo “transitório”, o que aumenta a complicação e o risco.
Em contrapartida, a introdução do formato ODF criou uma quebra na retrocompatibilidade dos documentos, que foi resolvida com ferramentas de software para a conversão de formatos. Desta forma, o formato sempre aderiu de forma consistente à descrição da norma baseada em XML e nunca exigiu a integração de blobs binários.
Naturalmente, a utilização do formato ODF normalizado não garante a segurança do software, embora possa simplificar a tarefa das ferramentas que devem verificar a existência de código malicioso. A proteção dos usuários e das suas partes interessadas é deixada às medidas de segurança e aos programas antivírus adotados pelo indivíduo ou pela organização.
No caso do LibreOffice, o padrão Open Document Format é um elemento importante que complementa o trabalho dos peritos em segurança, reduzindo a área de ataque. A segurança do LibreOffice é o resultado de um esforço global de toda a comunidade, desde as empresas do ecossistema até aos voluntários que contribuem para o desenvolvimento, a garantia de qualidade, a documentação e localização.
Créditos:
A segurança do LibreOffice é o resultado de uma quantidade enorme de trabalho de um grupo de pessoas liderado por Caolán McNamara, que coletivamente se soma a um apoio significativo e contínuo ao LibreOffice por várias marcas:
• Red Hat, a qual tem conduzido atividades de segurança por anos
• Collabora, que herdou a liderança da Red Hat em matéria de segurança
• allotropia, que apoia os esforços relacionados com a segurança em domínios específicos
• Google, que patrocina o OSS Fuzz e fornece muitas CPUs de custo elevado
• Synopsys, que fornece gratuitamente o analisador de código estático Coverity Scan
• Adfinis, que financia o equipamento para os testes de quebra de software
• The Document Foundation, a qual esta provendo infraestrutura para desenvolvimento e especialmente Garantia de Qualidade, incluindo profissionais para coordenar as atividades.
Além disso, a segurança do LibreOffice também está relacionada com o incrível trabalho de voluntários no desenvolvimento e Garantia de Qualidade, e com muitas contribuições de empresas focadas em segurança, como a Forcepoint.
Notas
[1] https://www.zdnet.com/article/coverity-finds-open-source-software-quality-better-than-proprietary-code/
[2] https://scan.coverity.com/projects/libreoffice. Números atuais são baseados na análise do código fonte do LibreOffice 24.2, que será lançado no início de fevereiro de 2024. Atualizaremos este documento de acordo com novos dados.
[3] https://www.zdnet.com/article/kaspersky-70-percent-of-attacks-now-target-office-vulnerabilities/
O Histórico de Segurança do LibreOffice 2024.02 © 2024 por The Document Foundation é licenciado sob licença Attribution-ShareAlike 4.0 International. Para ver uma cópia desta licença, visite a página http://creativecommons.org/licenses/by-sa/4.0/