Qual o futuro do Bzip2?

Qual o futuro do Bzip2?
Fonte da imagem: PNGWING

 Por volta de Março de 2024 testemunhamos uma vulnerabilidade no SSH devido a um backdoor no xz e como todos se lembram, esse backdoor foi inserido pelo próprio "atual mantenedor" do xz que até ninguém faz a mínima ideia quem seja. Coincidência ou não o bzip2 anda passando por problema similar com seus mantenedores. O que nos leva a seguinte questão: Qual o futuro do bzip2?

 Historicamente, o nível de compactação do bzip2 é tão potente (muito próximo ao do xz; confiram a minha aula sobre des/compactadores e empacotadores disponível livremente no meu curso de migração para Linux) que a medida que o kernel crescia em recursos e ficava maior, a solução acabou sendo disponibiliza-lo compactado com bzip2. Inclusive uma das principais opções de compactação do kernel durante o seu processo de compilação foi o bzip2 utilizando make bzimage.

Aula de des/compactadores e empacotadores no Linux. É possível reparar o nível de compactação de cada um dos compactadores

 
 Apesar do seu nível de compactação ser melhor do que a do gzip, uma de suas desvantagens do bzip2 é o seu alto uso de CPU e o tempo de compactação e descompactação.

 porém o real problema do bzip2 é que durante muito tempo ele não recebeu atualizações significativas, o que acarretou em acumulo de falhas, vulnerabilidades, não havendo repositório de controle de código fonte e nem rastreamento de bugs. Uma das poucas atualizações que o bzip2 recebeu eu cheguei a publicar no meu antigo blog em 2010. Por estes motivos, no final de 2013 o kernel passou a ser disponibilizado compactado sob o xz (leiam o artigo Happy new year and good-bye bzip2). Quando foi descoberta a vulnerabilidade no xz detectada no SSH, o kernel passou a ser disponibilizado temporariamente compactado com o gzip mesmo ficando um pacote bem maior e nem mesmo cogitando disponibiliza-lo sob o bzip2.

Happy new year and good-bye bzip2
Happy new year and good-bye bzip2

Transições entre mantenedores

 Em Junho de 2019, Federico Mena Quintero, um dos fundadores do projeto GNOME, anunciou que passou a ser o mantenedor do bzip2 chegando a lançar a versão 1.0.7 poucos dias depois do seu anuncio. Em julho de 2019 Mark Wielaard disponibilizou a versão 1.0.8 e depois disso não houveram mais grandes novidades. Federico Não tinha tempo o suficiente para concluir os objetivos que havia proposto e Micah não teve respostas claras sobre o futuro do bzip2 não fazendo revisão do trabalho de Micah para a versão 1.1.0. Então em Junho de 2021 Micah D. Snyder anunciou em seu blog que havia se tornado o principal mantenedor do bzip2. Se o xz passou por situação similar entre os mantenedores fazendo com que nos deparássemos com um backdoor, será que não estamos diante da mesma história só que desta vez no bzip2? Essa situação nos leva ao próximo questionamento: Quem é Micah D. Snyeder?


QUEM É MICAH D. SNYDER?

 Micah D. Snyder é desenvolvedor da empresa Talos Intelligence, uma divisão da Cisco focada em pesquisas sobre ameaças comprovadas e confiabilidade. A Talos é responsável pelo desenvolvimento do IPS Snort e do antivirus ClamAV sendo Micah um dos principais responsáveis pelo seu avanço. Há até mesmo uma carta de celebração de 20 anos do ClamAV que entre eles, está o nome de Micah nas notas de agradecimento. Além de entusiasta em python, Micah também é fascinado por Rust. Então estamos seguros quanto a possibilidade de se repetir história parecida com a do xz que teve um mantenedor anônimo e acabou injetando um backdoor em seu código (deem valor a estas pessoas).


Qual o futuro do Bzip2?

 Micah quer trabalhar no lançamento da versão 1.1.x do bzip2 que já era uma promessa antiga dos mantenedores. O status desta versão pode ser conferido no site oficial do sourceware que ainda está em estado experimental; Micah pretende modernizar a base de código do bzip2 como utilizar Meson build system e CMake build system ao invés de somente de Makefiles; coletar os vários patches da comunidade e melhorias significativas na compatibilidade com C99.


bzip2 sendo portado para Rust?

 Como Micah é um entusiasta da linguagem Rust, foi lhe perguntado sobre a possibilidade de portar bzip2, a o que Micah respondeu que abandonou esse projeto. Na verdade estão preferindo trabalhar no suporte a multithreading em C (que para Micah é algo que seria muito interessante principalmente nas futuras versões 1.2 or 2.0 SE alguém trabalhar nisso) do que qualquer coisa em Rust. Houve no passado o projeto BZIP2SMP baseada na versão v1.0.2 que falhou portar para a versão 1.0.8 e já que existe outro projeto de port do bzip2 para Rust sendo desenvolvido por outro grupo e que Micah apoia que as pessoas contribuam para ele. Esse projeto está em melhor estágio de evolução, boa licença, bom suporte a compressão e descompressão. Mas estranhamente, a versão 1.1.x virá com um port experimental para Rust... Vai entender a vida...

Este projeto de port de bzip2-Rust pode ser conferido clicando aqui.

 Eu estou testando o bzip2-rust porém com cautelas pois, como menciona o próprio projeto, "você utiliza por sua própria conta e risco". por enquanto parece que está completo na questão de opções (minha critica ainda fica na questão do tamanho dos binários.


Rust bzip2 implementation
Implementação do bzip2 em Rust

 Trabalhem nisso, galera de rust; vocês ainda nem usam garbage collectors para justificarem esse exagero). Outras observações feitas pela equipe do bzip2 quanto portar o bzip2 para rust é que rust trabalha muito bem na maioria dos processadores i686 e x86_64 porém, em outras plataformas como armel, armhf, armv7, mips{64}, powerpc{64} e riscv{64} carece de suporte de primeira classe. Muita cautela ao pensar na adoção de Rust, não vão com muita sede ao pote. Ao invés disso, conheçam e analisem também outras linguagens Nim e Odin (Zig também é promissora) que também possuem suporte a segurança em memória e melhor suporte a arquiteturas.


CONCLUSÃO

 Na questão do bzip2, vemos que estamos bem amparados se comparado com a recente história do xz, espero que tenhamos aprendido algo com isso e que possamos nos planejar melhor para as situações ao invés de perdemos tempo com conversas ideológicas. 




Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (31) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (33) comp (1) compressores (9) container (8) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (2) desenvolvimento (98) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (22) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (21) Funtoo Linux (13) games (94) garbage collector (1) gerenciadores de pacotes (4) glaucus (7) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (12) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (38) kde (1) kernel (141) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (172) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (6) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (1) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (45) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (2) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (68) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (14) segurança digital (25) servidor web (2) servidores (3) shell (9) shell script (8) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (8) terminal (89) terminal de comandos (19) toca do tux (1) toybox (27) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (3) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)