FERRAMENTAS LINUX: RLSA-2023:6976 – Guia Definitivo para o Patch do libfastjson: Do Comando à Reinicialização Obrigatória

sábado, 27 de junho de 2026

RLSA-2023:6976 – Guia Definitivo para o Patch do libfastjson: Do Comando à Reinicialização Obrigatória



Atualização crítica libfastjson no Rocky Linux 8: CVE-2020-12762 com integer overflow. Guia prático com comandos, troubleshooting e automação Ansible para infraestrutura segura.


Em 14 de novembro de 2023, a Red Hat publicou o RHSA-2023:6976, uma atualização de segurança de severidade Moderate para a biblioteca libfastjson no Red Hat Enterprise Linux 8. O Rocky Linux, sendo binary-compatible com o RHEL, disponibilizou a mesma correção através do RLSA-2023:6976.

O libfastjson é uma implementação em C que fornece funções essenciais para manipulação de JSON: construção de objetos, serialização para strings e parsing reverso. É uma dependência crítica de ferramentas como rsyslog (para output em formato JSON) e diversos agentes de monitoramento e logging.

A vulnerabilidade corrigida é o CVE-2020-12762: um integer overflow que leva a um out-of-bounds write no heap ao processar arquivos JSON maliciosamente grandes. O problema reside na função printbuf_memappend(), onde valores controlados pelo atacante podem estourar o buffer de memória. 

O impacto prático: um atacante pode enviar um JSON oversized para uma aplicação que utiliza a biblioteca, causando corrupção de memória, crash do serviço ou, em cenários bem construídos, execução remota de código.

Esta atualização eleva o pacote para a versão 0.99.9-2.el8.


Pré-requisitos

Antes de iniciar, verifique:


⚠️ Atenção: O CVE-2020-12762 afeta todas as versões anteriores à 0.99.9-2.el8. Se seu sistema tem libfastjson instalado, ele está vulnerável.

Passo a Passo

1. Inventário e Impacto

Antes de aplicar qualquer patch em produção, mapeie quais serviços dependem do libfastjson:

bash
$ sudo lsof | grep libfastjson | awk '{print $1}' | sort -u

Saída esperada (exemplo):

text
rsyslogd
telegraf
fluent-bit

Esses são os serviços que precisarão ser reiniciados após a atualização. Documente esse inventário — ele será crítico no planejamento da janela de manutenção.

Por que isso importa? A biblioteca é carregada em memória no momento da inicialização do processo. Atualizar o arquivo .so no disco não afeta processos já em execução; eles continuam usando a versão vulnerável em memória até serem reiniciados.

2. Atualização do Pacote

Com o inventário em mãos, aplique a atualização:

bash
$ sudo dnf update libfastjson

Saída esperada (trecho):

text
================================================================================
 Package              Arch     Version           Repository           Size
================================================================================
Upgrading:
 libfastjson          x86_64   0.99.9-2.el8      appstream            36 k

Transaction Summary
================================================================================
Upgrade  1 Package

Total download size: 36 k
Is this ok [y/N]: y
...
Running scriptlet: libfastjson-0.99.9-2.el8.x86_64                   1/1
  Verifying        : libfastjson-0.99.9-2.el8.x86_64                   1/1

Upgraded:
  libfastjson-0.99.9-2.el8.x86_64

Complete!

Alternativa (atualização via advisory específico):

bash
$ sudo dnf update --advisory RLSA-2023:6976

Por que essa abordagem ? O --advisory é mais seguro em ambientes com políticas de mudança controlada, pois aplica apenas os pacotes relacionados àquele advisory, evitando atualizações colaterais não planejadas.

3. Verificação Pós-Atualização

Confirme que a nova versão está instalada:
bash
$ rpm -q libfastjson
libfastjson-0.99.9-2.el8.x86_64

Verifique o changelog para confirmar que o patch foi aplicado:

bash
$ rpm -q --changelog libfastjson | grep -i cve
- Address CVE-2020-12762

Saída esperada:

text
- Address CVE-2020-12762

4. Reinicialização dos Serviços Dependentes

Aqui está o ponto crítico. A biblioteca atualizada está no disco, mas os processos em execução ainda carregam a versão antiga em memória.

Estratégia recomendada (reboot gradual):

bash
# Liste os PIDs dos processos que usam a biblioteca
$ sudo lsof | grep libfastjson | awk '{print $2}' | sort -u

# Para cada serviço, reinicie-o
$ sudo systemctl restart rsyslog
$ sudo systemctl restart telegraf
# ... etc

Verificação de que o processo está usando a nova biblioteca:

bash
$ sudo lsof -p <PID> | grep libfastjson

Compare o caminho do arquivo .so — deve apontar para a nova versão em /usr/lib64/libfastjson.so.4.2.0 (ou similar).

Cenário em ambientes críticos: Se você não pode reiniciar serviços imediatamente, a biblioteca antiga permanecerá em memória. Planeje um reboot agendado do host ou reinicializações rolling dos serviços.

5. Automação com Ansible

Para ambientes com múltiplos servidores, automatize:

yaml
- name: Aplicar atualização do libfastjson
  hosts: rocky8_servers
  tasks:
    - name: Atualizar pacote libfastjson
      dnf:
        name: libfastjson
        state: latest
        update_cache: yes
      notify: restart_dependent_services

    - name: Verificar versão instalada
      command: rpm -q libfastjson
      register: libfastjson_version
      failed_when: "'0.99.9-2.el8' not in libfastjson_version.stdout"

  handlers:
    - name: restart_dependent_services
      systemd:
        name: "{{ item }}"
        state: restarted
      loop:
        - rsyslog
        - telegraf

📘  Indicação de Leitura 


Livro: Segurança em Servidores Linux Ataque e Defesa

Esse livro  é um guia prático e abrangente sobre a segurança do sistema operacional Linux como um todo. O livro ensina a pensar como um atacante para fortalecer a defesa do servidor, abordando tópicos fundamentais como:

  • Ferramentas de rede: Nmap, Netcat, knockd.
  • Monitoramento: de arquivos e sistemas de arquivos.
  • Defesas: contra malware e ataques DDoS.
  • Descoberta de vulnerabilidades: como invasores encontram pontos fracos.


Segurança em Servidores Linux Ataque e Defesa: (anúncio) ->  https://link.amazon/B00xISltq

Eu ganho uma comissão quando você faz uma compra.


Troubleshooting


Problema Comum: "libfastjson-0.99.9-2.el8 not found"

Sintoma:

text
$ sudo dnf update libfastjson
No match for argument: libfastjson
Error: No packages marked for update.

Causa: O repositório appstream pode estar desatualizado ou desabilitado.

Solução:

bash
# Limpa o cache do DNF
$ sudo dnf clean all

# Verifica se o repositório appstream está ativo
$ sudo dnf repolist enabled | grep appstream

# Se não estiver, habilite-o
$ sudo dnf config-manager --set-enabled appstream

# Sincroniza os metadados
$ sudo dnf makecache

# Tenta novamente
$ sudo dnf update libfastjson

Armadilha Comum que Iniciantes Cometem

"Atualizei o pacote, mas esqueci de reiniciar os serviços."

Esta é a falha mais frequente e potencialmente a mais perigosa. O administrador aplica o patch, verifica rpm -q e considera o sistema seguro. Porém, o rsyslog (ou outro serviço) continua rodando com a biblioteca vulnerável em memória. 

O CVE permanece explorável até o próximo reinício do serviço — que pode ser meses depois, em uma próxima manutenção.


Mitigação:


Sempre execute lsof | grep libfastjson antes e depois da atualização.

Inclua a reinicialização dos serviços afetados como parte obrigatória do procedimento.

Em playbooks Ansible, use handlers para garantir que os serviços sejam reiniciados após a atualização.


Conclusão


O RLSA-2023:6976 corrige o CVE-2020-12762 no libfastjson, um integer overflow que pode levar à corrupção de memória e potencial execução remota de código. 

A atualização para 0.99.9-2.el8 é simples (dnf update libfastjson), mas o verdadeiro desafio operacional está em garantir que todos os processos dependentes sejam reiniciados para que a nova biblioteca seja carregada em memória.


O procedimento seguro envolve:


1. Inventário dos serviços que usam a biblioteca (lsof)

2. Atualização via DNF

3. Verificação da nova versão e changelog

4. Reinicialização planejada de todos os serviços dependentes

5. Verificação pós-reboot com lsof


Em ambientes com múltiplos hosts, automatize com Ansible para garantir consistência e rastreabilidade.

Lembre-se: O patch no disco é apenas metade da solução. O patch na memória — via reinicialização dos serviços — é o que realmente fecha a vulnerabilidade.


Nenhum comentário:

Postar um comentário