Mostrando postagens classificadas por relevância para a consulta btrfs. Ordenar por data Mostrar todas as postagens
Mostrando postagens classificadas por relevância para a consulta btrfs. Ordenar por data Mostrar todas as postagens

Encontrada vulnerabilidade na deduplicação do Btrfs e do ZFS

Encontrada vulnerabilidade na deduplicação do Btrfs e do ZFS

Encontrada vulnerabilidade na deduplicação do Btrfs e do ZFS

 Deduplicação é uma técnica muito interessante para evitar redundância e duplicação de dados e assim melhor aproveitar os dados e metadados do sistema de arquivos. Este recurso é utilizado em sistemas de arquivos como o ZFS, o Btrfs e o Hammer do DragonflyBSD. Porém, esta semana foi descoberta uma vulnerabilidade muito grave neste recurso.
 
 Membros da universidade de Vrije  (Vrije Universiteit Amsterdam) encontraram uma falha de segurança no recurso de deduplicação dos sistemas de arquivos ZFS e Btrfs. O erro foi encontrado pelo grupo de pesquisadores Andrei Bacs, Saidgani Musaev, Kaveh Razavi, Cristiano Giuffrida, Herbert Bos que pretende apresentar na conferência FAST'22 (20th USENIX Conference on File and Storage Technologies) e tornar seu conhecimento publico  no dia 23 de Fevereiro deste ano.

 Essa vulnerabilidade ocorre especificamente no inline deduplication que permite o invasor utilizar uma classe de ataque chamada DUPEFS e obter arquivos sensíveis do sistema (e até arquivos secretos dos usuários) mesmo remotamente (tanto em LAN quanto em servidores na internet). Em seu paper, os pesquisadores apresentam como cada sistema de arquivos trabalha com inline deduplication para assim melhor entender como explorar a vulnerabilidade.

inline deduplication no ZFS e no Btrfs
Como cada sistema de arquivos trabalha com inline deduplication.

 Este paper possui 15 páginas muito bem detalhado apresentando todo o cenário do ataque e todos os seus resultados tanto no Linux (utilizando ambos os sistemas de arquivos) quanto no FreeBSD. Eu incentivo a todos acompanhar sua apresentação no evento já que se trata de uma vulnerabilidade grave e que os desenvolvedores irão precisar concentrar esforços na solução do problema.

 Isso significa que estamos em risco? Em partes pode ser que sim como pode ser que não. Primeiro que, apesar da vulnerabilidade ser grave, não são todos que conseguem explorá-la; segundo que no paper os pesquisadores apresentam algumas formas de defesa (em Deduplication Defenses) como medidas paliativas como forçar a criptografia e ofuscação imposta por um gateway intermediário na rede até que soluções sejam apresentadas.

 E terceiro é que há um ponto a se considerar aqui tratando-se de Btrfs (já estou ouvindo o chilique de que sou fanboy de Btrfs). Em minha série ZFS VS Btrfs mencionei que ambos os sistemas de arquivos oferecem recursos iguais PORÉM, implementados de formas diferentes e com técnicas diferentes; deduplicação não é uma exceção a essa regra. No vídeo primeiro video da série que você pode conferir abaixo, eu explico a diferença na implementação de recursos entre os dois sistemas de arquivos. Confiram a diferença entre a deduplicação de ZFS e do Btrfs:


 Ou seja, essa vulnerabilidade não afeta o Btrfs como mencionado no paper apresentado pelos pesquisadores, pois inline deduplication já não é utilizado no Btrfs há um bom tempo. Inline deduplication para o Btrfs foi desenvolvido pela Fujitsu como pode ser lido clicando aqui e já não é mais mantido (ele foi simplesmente abandonado pois a Fujitsu não tem mais planos para ele), os patches eram incompletos e este recurso é muito complexo para ser implementado no kernel Linux.

 Qu Wenruo que foi um dos autores do inline deduplication para o Btrfs informou aos pesquisadores o:
 "Como um dos autores originais, eu e o meu empregador não temos mais interesse em continuar dedupe. Além do mais, a implementação original possui um limite, um extent tem que ser escrito no disco antes que possa ser utilizado pelo write-time dedupe."
 Para deduplicação o Btrfs utiliza a técnica out of band deduplication (como mencionei no meu vídeo), o módulo ioctl e ferramentas em userspace como BEES.

 Moral da história

 O que os pesquisadores utilizaram na verdade foi uma versão muito antiga do btrfs (talvez de 4 anos atrás) e deveriam ter testando ao menos uma versão que possui out of band deduplication (de preferencia versões mais recentes do kernel Linux).

 Vou reforçar que já estou ouvindo me chamarem de fanboy de Btrfs (SARCASMO ON: Não são eles que são fanboys de ZFS ou do Ext4, sou eu que sou fanboy de Btrfs... Eu não apresentei nenhum argumento técnico, foi só coisa de fanboy mesmo... Sempre assim...)

 E por ultimo vamos ver se os sites (como o que postou o artigo Examinando o Btrfs, o sistema de arquivos do Linux perpetuamente semi-acabado) chegarão a publicar sobre essa falha no ZFS (honestamente eu duvido) pois esse já não é a primeira que eu posto. Alias, vamos ver quanto tempo vai levar para isso ser corrigido no ZFS. Basta lembrar do caso do alto consumo de CPU no ZFS por exemplo que levou anos para ser corrigido. Este caso pode ser lindo clicando aqui.

Novos recursos do Btrfs

Novos recursos do Btrfs
Novos recursos do Btrfs

    Btrfs é o sistema de arquivos que ao longo de muito tempo eu venho promovendo tanto no meu canal e no meu blog pois traz recursos muito assemelhante ao ZFS e ao ReiserFS porém, implementados de forma diferente. O Btrfs é fortemente utilizado por empresas como Facebook, Suse, Oracle e até mesmo exigido pela LPI.
    Nos últimos meses, novos recursos foram implementados e aqui eu vou debater sobre eles.


 SOLUCIONANDO PROBLEMA ENTRE  VFS/BTRFS/NFS

    
NeilBrown da Suse enviou no dia 12 de Agosto o patch corrige problemas que ocorrem entre o Nfsd e o Btrfs. A questão é que o Btrfs não fornece números de inode único através de outros sistemas de arquivos, mas sim através de subvolumes e utiliza números de dispositivo sintético para subvolumes diferentes para garantir singularidade entre dispositivo e inode.

    O problema é que o Nfsd não consegue trabalhar com números de dispositivo variante podendo causar problema no subvolume. Este patch permite que Btrfs ou qualquer outro sistema de arquivos forneça um número de 64 bits tornando o resultado mais único entre subvolumes e sistemas de arquivos (talvez a partir disso poderemos ter a solução para problema do VFS :)


IDMAPPED MOUNTS


    Em maio eu havia postando que Christian Brauner da Canonical estava portando o idmapped mounts para o Btrfs (essa informação pode ser lida clicando aqui). Já no dia 31 de julho Christian retornou com o novo patch que traz o total de 71 novidades no idmapped mounts que estão divididos dentro de BTRFS_IOC_{SNAP,SUBVOL}_CREATE_V2, BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SUBVOL_SETFLAGS e BTRFS_IOC_INO_LOOKUP_USER.


NOVA AJUDA NA OPÇÃO DEFRAG


    Qu Wenruo da Suse que enviou o patch introduz a opção desfragmentar um intervalo (defrag_one_range()) que reverifica status de extents e paginas para garantir melhor consistência. Ainda não houve resposta para esse patch, mas vamos aguardar. 

    Ainda falando de desfragmentação (que é uma super vantagem sobre o ZFS), há ainda um recurso para a opção defrag e autodefrag que Josef Basick anunciou em Julho de 2020 que aguardo bastante. Josef até informou que o autodefrag é muito util com arquivos pequenos como é o caso dos 9.000 arquivos sqllite que o Firefox utiliza, mas não tão util para arquivos gigantescos como é o caso de imagens de máquinas virtuais pois leva-se muito tempo para desfragmentar.

    Uma solução que é indicada há muito tempo é copiar a imagem da máquina virtual para uma nova utilizando recurso de de-duplicação (quer saber como solucionar esse problema. Confira o meu minicurso de atributos no Linux clicando aqui).

    Já a solução sugerida por Josef seria poder passar um parâmetro no defrag/autodefrag onde os usuários poderiam definir por arquivo ou diretório permitindo manter o controle de onde exatamente ocorrerá a atividade extra de escrita.

add an autodefrag property
Esse  é o submit do Josef mencionando que pretende adicionar o recurso ao autodefrag para trabalhar corretamente.

    
Há recursos que existem no ZFS que eu ainda espero ver no Btrfs (um deles seria o mesmo que existe no Bcachefs e que já até tratei em uma live. Esse recurso permite utilizar o ssd como cache em conjunto com o HD para acelerar o processo (acho um erro cometido pelo autor do Bcachefs desenvolver todo um sistema de arquivos somente para implementar um único recurso). Outro seria a capacidade de armazenamento do ZFS (256 quatrilhões de zebibytes enquanto que o Btrfs é de 16 EiB). 
Agora é tudo questão de aguardar para ver o que o futuro nos espera e aguardar mais novos recursos no Btrfs.

 Agradeço ao Anderson Rincon pela revisão


Btrfs pode em breve receber criptografia transparente

Btrfs pode em breve receber criptografia transparente
Btrfs pode em breve receber criptografia transparente

 Omar Sandoval (que até aonde identifiquei, trabalha para o Facebook devido seu e-mail ser de domínio fb.com) está trabalhando para que o sistema de arquivos Btrfs possua suporte a criptografia transparente através do fscrypt. Como descrito por Omar, o fscrypt é uma biblioteca e interface dentro do kernel Linux que pode ser utilizada pelos sistemas de arquivos para fornecer criptografia transparente e atualmente é utilizado pelo ext4, o F2FS e o UBIFS. O fscrypt também está sendo utilizado pelo systemd homed.
"Criptografia transparente para o Btrfs é um recurso frequentemente solicitado. Ao invés de criar uma uma nova interface de criptografia especialmente para o Btrfs, gostaríamos de utilizar o fscrypt para p Btrfs também. No entanto, os recursos avançados presentes no Btrfs apresentam alguns desafios em termos do suporte ao fscrypt."
 Sim, No site oficial do Btrfs consta que suporte a nível de criptografia para arquivos e diretórios através do fscrypt já é algo planejado para o futuro.

Recursos atualmente em desenvolvimento ou planejados para futura implementação.
Recursos atualmente em desenvolvimento ou planejados para futura implementação.
"Eu ando debatendo e trabalhando em um protótipo para que esses recursos do Btrfs possam ter suporte ao fscrypt, então eu imagino que era hora de eu escrever e fazer um loop nos desenvolvedores do fscrypt também."
 Omar elaborou um documento e disponibilizou para a equipe do Btrfs que já estão o informando em como ele deve trabalhar nos recursos.

Como Facebook utiliza Linux e o Btrfs: Uma entrevista com Chris Mason

Chris Mason

Aprenda o estado de desenvolvimento do Btrfs nessa entrevista com o principal autor, Chris Mason.

Docker consumindo muito armazenamento no Btrfs

Moby/Docker gradually exhausts disk space on BTRFS
Docker consumindo muito armazenamento no Btrfs

 Containers são combinações de recursos do Linux como o namespace e cgroups. Recursos esse que eu já apresentei aqui no meu artigo Linux: Mais do que um Unix e trata-se dos mesmos recursos que são utilizados pelo systemd e por várias outras aplicações. Ferramentas como Docker e Kubernetes servem na verdade para facilitar o uso de tais recursos já que raramente as pessoas criam containers manualmente. Devido o Docker trabalhar com o recurso Copy-on-Write, o sistema de arquivos indicado na criação de seus containers é o Btrfs.

 No dia 02 de Novembro, Chris Murphy reportou a equipe do Btrfs um bug que ocorre no Docker que consome muito espaço de armazenamento. Esse é um bug que já havia sido reportado em Outubro de 2016 por um usuário chamado no GitHub de Ghost e ainda permanece em aberto.
 Ghost explica como reproduzir tal bug e acaba sendo de forma muito simples:
  1. Instale o docker em um sistema com btrfs
  2. Utilize o docker intensivamente por um tempo e certifique-se de remover & recriar os containers, rebuild com a opção no cache e reiniciar o sistema, ...
  3. Após isso, confira o espaço em disco
 Chris chega a mencionar que não sabe de quem é o bug; se do Docker, ou do driver btrfs "graph" que o Docker utiliza, ou se é um bug do kernel (btrfs) e que pode haver mais de um bug.

Docker gradually exhausts disk space on BTRFS #27653
Docker consumindo muito armazenamento no Btrfs

 Nikolay Borisov da Suse que isso pode estar relacionado ao comportamento das pessoas não sabendo como utilizar Docker. Nikolay reforça que apenas excluir um container não significa que obterá o espaço livre sendo necessário executar prune -a.
"Eu realizei um monte de testes hoje inciando um container, parando, excluindo-o, podando (pruning) images e tudo funcionou como esperado." Mencionou Nikolay
 Chris diz que agora se questiona se esse é um comportamento único do btrfs graphdriver e que talvez precisam realizar o mesmo conjunto de testes com o btrfs graphdriver, reset, depois repetir a operação  com o overlay2 graphdriver e verificar se há uma diferença significativa.

 No decorrer das semanas veremos se realmente há um problema que irão trabalhar para solucionar ou se trata-se de um falso positivo.

lançado btrfs-progs 4.20.2

Foi lançado ontem a versão 4.20.2 do btrfs-progs. btrfs-progs são as ferramentas que utilizamos no userspace para gerenciar o sistema de arquivos btrfs. É através do btrfs-progs que possuímos as ferramentas que podemos conferir descritas na manpage do btrfs (man 8 btrfs).

btrfs-progs
Os comandos mencionados em SEE ALSO fazem parte do pacote btrfs-progs
Essa versão trás rápidas correções de um problema com o send/receive path checks que quebram algumas configurações. Como não á correção apropriada ainda, foi feito um regresso. Já há pessoal baixando, testando, conferindo e contribuindo para melhorar esta nova versão.

 Alguns dos comandos do btrfs-progs podem ser conferidos no vídeo abaixo:

Novidades no Btrfs 5.17

Btrfs 5.17

Novidades no Btrfs 5.17


 Essa semana foi lançado o kernel Linux versão 51.6 e muitos sites como o OMG! Ubuntu e o XDE Developers descrevem que os gamers vão amar esta versão devido o recurso de futex2. Particularmente não encontrei essas notas no anuncio do Linus Torvalds. Eu encontrei até mesmo sobre o Batman (batman-adv e b.a.t.m.a.n. Abreviação de better approach to mobile ad-hoc networking) mas não sobre o que são demonstrados nos sites. Esse release está mais relacionado a correções e reversões do que novidades em si.
"Portanto, isso contém principalmente algumas correções de driver (principalmente rede e rdma), uma correção de uso de credencial do cgroup, algumas correções de rede principais, um algumas reversões de última hora e algum outro ruído aleatório. O shortlog anexado é tão pequeno que você também pode rolar isto."
 Bom, mas novidades também estão vindo aí no Btrfs (e provavelmente no kernel 5.17 já anunciado o seu desenvolvimento). David Sterba da equipe do Suse anunciou no dia 11/01/2022 a atualizações do Btrfs 5.17.

NOVOS RECURSOS

 Agora é possível que o send trabalhe com a realocação de grupo de blocos evitando que falhas ocorram; nova operação de exclusão 'balance paused' que, como o próprio nome já diz, permite adicionar um novo dispositivo ao sistema de arquivos com balance em pausa. o Btrfs também está com novo arquivo sysfs para armazenamento do fsid (em per-device directory) que ajuda a distinguir dispositivos quando seeding estiver habilitado.

MELHORIAS NO DESEMPENHO

 A exclusão de diretórios ficou entre 20% a 40% mais rápidos devido; o zoned mode ficou em torno de 50% durante a montagem; indexação e busca por tamanho com a latência de -30% e menos contenção de tree node locking que permite ganho de até 20%. A parte de desempenho já é uma característica muito boa do Btrfs e de longa data. Eu já até mesmo apresentei essa características em vídeos como benchmarks e comparações com ZFS.



CORREÇÕES DE BUGS

 Houveram correções de bugs (lógico) como falha no ENOSPC quando há escrita direta no range NOCOW; na quota de deablock (e outras operações de quotas); no free space tree e no zoned.

OUTRAS

 Houveram também outras melhorias e limpesas como na parte de HDD e SSD, como o file system lida com erros. Essas novidades ocorreram desde o kernel 5.16-rc8 e estarão disponíveis no link abaixo (um total de 115 mudanças).

Marcadores

A pior história sobre Linux que já ouvi (6) 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 (34) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canonical (1) 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 (100) 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 (4) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (24) 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 (8) 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 (10) 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 (176) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (9) nimlang (1) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (4) open source (85) OpenBSD (8) 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 (3) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (71) 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 (16) segurança digital (27) servidor web (2) servidores (3) shell (10) shell script (8) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (152) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (7) systemd (8) terminal (89) terminal de comandos (20) toca do tux (1) toybox (28) tutorial (6) Tux (3) ubuntu (1) 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)