Páginas

terça-feira, 23 de junho de 2026

Atualização crítica de Segurança do Firefox no Oracle Linux 8 ELSA-2026-27717

 

Oracle


Atualização crítica Firefox no Oracle Linux 8. Corrija 27 CVEs (sandbox escape, RCE) com comandos DNF, automação Ansible e troubleshooting. Leia já!


Em 22 de junho de 2026, a Oracle publicou o aviso de segurança ELSA-2026-27717 (originalmente identificado como ELISA-2026-27717), referente a uma atualização crítica do Firefox para o Oracle Linux 8

Esta atualização eleva o Firefox para a versão 140.12.0-1.0.1.el8_10, corrigindo um total de 27 vulnerabilidades que abrangem desde memory safety bugs até sandbox escapes e bypass de same-origin policy.

A severidade foi classificada como "important" pela Oracle, com diversas CVEs recebendo impactos "high" ou "critical" segundo a classificação da Mozilla. 

Esta não é uma atualização trivial — estamos falando de vulnerabilidades que permitem execução remota de código, bypass de sandbox e vazamento de informações sensíveis.

Para ambientes corporativos onde o Firefox é utilizado em estações de trabalho, terminais de atendimento ou como mecanismo de renderização em aplicações headless, a aplicação deste update deve ser tratada com prioridade máxima.


Pré-requisitos


Antes de iniciar o procedimento, verifique os seguintes itens:



Por que verificar o repositório ULN? O pacote firefox-140.12.0-1.0.1.el8_10 está disponível exclusivamente através do Unbreakable Linux Network (ULN) ou de mirrors oficiais da Oracle

Tentar instalar a partir de repositórios EPEL ou de terceiros pode resultar em versões incorretas ou incompatibilidades com as bibliotecas NSS do Oracle Linux 8.


Passo a Passo

1. Identificação do Sistema e Versão Atual

Antes de qualquer alteração, documente o estado atual do sistema:

bash
$ cat /etc/oracle-release
Oracle Linux Server release 8.10
bash
$ rpm -q firefox
firefox-128.0.0-1.0.1.el8_10.x86_64
bash
$ firefox --version
Mozilla Firefox 128.0.0

Por que documentar? Em ambientes auditados, ter um registro do estado pré-atualização é essencial para rastreabilidade e para eventuais rollbacks. Guarde essa saída em um log.


2. Verificação de Pacotes Dependentes

O Firefox no Oracle Linux 8 depende criticamente do NSS (Network Security Services). A atualização 140.12.0-1.0.1 inclui ajustes específicos para integração com o NSS. Verifique a versão atual do NSS:

bash
$ rpm -q nss
nss-3.90.0-1.el8_10.x86_64

Se o NSS estiver desatualizado, o DNF resolverá as dependências automaticamente, mas é bom saber antecipadamente o que será atualizado.

3. Atualização via DNF

O método recomendado para sistemas Oracle Linux 8 é utilizar o DNF com o repositório ULN habilitado:

bash
$ sudo dnf update firefox --enablerepo=ol8_UEKR7

Saída esperada:

text
Dependencies resolved.
================================================================================
 Package     Arch         Version                       Repository         Size
================================================================================
Upgrading:
 firefox     x86_64       140.12.0-1.0.1.el8_10        ol8_UEKR7          95 M

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

Total download size: 95 M
Is this ok [y/N]: y

Por que --enablerepo=ol8_UEKR7? O pacote Firefox ESR 140.12 está hospedado no repositório UEKR7 (Unbreakable Enterprise Kernel Release 7) da Oracle. Este repositório contém não apenas o kernel, mas também pacotes de usuário atualizados para a plataforma.

Após confirmar, o DNF fará o download e a instalação:

text
Downloading Packages:
firefox-140.12.0-1.0.1.el8_10.x86_64.rpm        95 MB/s |  95 MB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Upgrading        : firefox-140.12.0-1.0.1.el8_10.x86_64                  1/2
  Cleanup          : firefox-128.0.0-1.0.1.el8_10.x86_64                   2/2
  Running scriptlet: firefox-140.12.0-1.0.1.el8_10.x86_64                  2/2
  Verifying        : firefox-140.12.0-1.0.1.el8_10.x86_64                  1/2
  Verifying        : firefox-128.0.0-1.0.1.el8_10.x86_64                   2/2

Upgraded:
  firefox-140.12.0-1.0.1.el8_10.x86_64

Complete!

4. Instalação Offline (SRPM)

Para ambientes sem acesso direto à internet ou com políticas de segurança restritivas, a Oracle disponibiliza o SRPM para compilação local:
text
http://oss.oracle.com/ol8/SRPMS-updates/firefox-140.12.0-1.0.1.el8_10.src.rpm
[reference:11]

O procedimento offline envolve:

bash
$ wget http://oss.oracle.com/ol8/SRPMS-updates/firefox-140.12.0-1.0.1.el8_10.src.rpm
$ rpm -ivh firefox-140.12.0-1.0.1.el8_10.src.rpm
$ cd ~/rpmbuild/SPECS/
$ rpmbuild -bb firefox.spec
$ sudo rpm -Uvh ~/rpmbuild/RPMS/x86_64/firefox-140.12.0-1.0.1.el8_10.x86_64.rpm

Por que compilar localmente? Em ambientes com políticas de hardening, a instalação a partir de SRPM permite verificar assinaturas GPG, auditar patches e garantir que não há modificações não autorizadas no binário.


5. Verificação Pós-Instalação

Após a atualização, confirme a nova versão:

bash
$ rpm -q firefox
firefox-140.12.0-1.0.1.el8_10.x86_64
bash
$ firefox --version
Mozilla Firefox 140.12.0

Verifique a integridade do pacote:

bash
$ rpm -V firefox

Se não houver saída, o pacote está íntegro. Qualquer saída indica arquivos modificados — o que pode ser um sinal de alerta.

6. Reinicialização do Firefox e Limpeza de Cache

O Firefox não requer reinicialização do sistema, mas processos em execução precisam ser reiniciados:

bash
$ pkill -f firefox

Para ambientes com múltiplos usuários, identifique e mate processos por usuário:

bash
$ ps aux | grep firefox | awk '{print $1}' | sort -u
$ sudo pkill -u $USER -f firefox

Limpe o cache de extensões e o cache de compilação JIT para evitar problemas de compatibilidade:

bash
$ rm -rf ~/.cache/mozilla/firefox/*
$ rm -rf ~/.mozilla/firefox/*.default-release/startupCache/


Por que limpar o cache? A atualização inclui correções no JIT compiler (CVE-2026-12299) e no WebRender (CVE-2026-12289). Caches antigos podem conter código compilado com versões anteriores, potencialmente causando crashes ou comportamento inconsistente.


 📘  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/B026xLFNp     

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




Principais Vulnerabilidades Corrigidas

Para fins de auditoria e documentação, eis o resumo das 27 CVEs corrigidas nesta atualização, agrupadas por tipo:


Memory Safety Bugs (Críticos)


CVE-2026-12290: Memory safety bug no Firefox ESR 140.12

CVE-2026-12298: Memory safety bug

CVE-2026-12305 a CVE-2026-12310: Memory safety bugs

CVE-2026-12312 a CVE-2026-12314: Memory safety bugs

CVE-2026-12327, CVE-2026-12328, CVE-2026-12329: Memory safety bugs


Sandbox Escapes


CVE-2026-12294: Sandbox escape no DOM: Workers component

CVE-2026-12295: Sandbox escape no DOM: Navigation component

CVE-2026-12296: Sandbox escape no Security: Process Sandboxing

CVE-2026-12297: Sandbox escape no Networking component

CVE-2026-12311: Information disclosure e sandbox escape

CVE-2026-12313: Information disclosure e sandbox escape


Bypass e Condições de Contorno


CVE-2026-12289: Privilege escalation no Graphics: WebRender

CVE-2026-12291: Use-after-free no Networking: HTTP

CVE-2026-12292: Incorrect boundary conditions no Web Audio

CVE-2026-12299: JIT miscompilation no DOM: Core & HTML

CVE-2026-12302: Mitigation bypass no DOM: Security

CVE-2026-12304: Same-origin policy bypass no Networking: Cookies

CVE-2026-12315: Mitigation bypass no DOM: Security

CVE-2026-12324: Incorrect boundary conditions no Graphics: CanvasWebGL

CVE-2026-12325: Denial-of-service no Graphics: ImageLib

CVE-2026-12330: Incorrect boundary conditions no Internationalization


Troubleshooting

Problema 1: Falha na Atualização com Conflito de Dependências

Sintoma:

text
Error: Problem: package firefox-140.12.0-1.0.1.el8_10.x86_64 requires nss >= 3.90.0, but none of the providers can be installed

Solução:

O Firefox 140.12.0 requer uma versão específica do NSS. Resolva com:

bash
$ sudo dnf update nss --enablerepo=ol8_UEKR7
$ sudo dnf update firefox --enablerepo=ol8_UEKR7

Se o problema persistir, verifique se o repositório ULN está corretamente assinado:

bash
$ sudo dnf repolist --enablerepo=ol8_UEKR7 -v | grep -i gpg

Problema 2: Firefox Não Inicia Após Atualização

Sintoma:

text
$ firefox
XPCOMGlueLoad error for file /usr/lib64/firefox/libxul.so:
libnss3.so: cannot open shared object file: No such file or directory

Solução:

O Firefox ESR 140.12 foi compilado contra uma versão específica do NSS. Verifique se o NSS foi atualizado corretamente:

bash
$ rpm -q nss
nss-3.90.0-1.el8_10.x86_64

Caso o NSS não tenha sido atualizado (por exemplo, em sistemas com versionlock ativo):

bash
$ sudo dnf versionlock list | grep nss
# Se houver lock, remova:
$ sudo dnf versionlock delete nss
$ sudo dnf update nss firefox --enablerepo=ol8_UEKR7

Após a atualização do NSS, reinicie o Firefox. Se o problema persistir, recrie o link simbólico:

bash
$ sudo ldconfig
$ firefox --safe-mode

2 Armadilhas Comuns para Iniciantes

Armadilha 1: Ignorar a Reinicialização dos Processos em Execução

Iniciantes frequentemente atualizam o pacote e assumem que o Firefox já está seguro. Isso é falso. O binário em memória continua sendo a versão antiga e vulnerável até que o processo seja encerrado e reiniciado.

bash
# ❌ ERRADO - O processo antigo continua rodando
$ sudo dnf update firefox
# "Pronto, atualizado!"
# O Firefox ainda está rodando com a versão antiga em memória

# ✅ CORRETO - Force o encerramento
$ sudo pkill -f firefox
$ firefox &

Por que isso é crítico? Vulnerabilidades como CVE-2026-12291 (use-after-free) e CVE-2026-12289 (privilège escalation) podem ser exploradas enquanto o processo antigo estiver em execução, mesmo que o binário em disco já tenha sido substituído.


Armadilha 2: Esquecer de Limpar os Caches de Compilação JIT

O Firefox mantém caches de código JIT (Just-In-Time) compilado para melhor performance. Após uma atualização que corrige o próprio JIT compiler (CVE-2026-12299), caches antigos podem conter código que referencia estruturas de memória que mudaram entre versões.

bash
# ❌ ERRADO - Apenas atualizar o pacote
$ sudo dnf update firefox
$ firefox  # Pode crashar ou ter comportamento indefinido

# ✅ CORRETO - Limpar caches JIT e startup
$ rm -rf ~/.cache/mozilla/firefox/*/cache2/
$ rm -rf ~/.mozilla/firefox/*.default-release/startupCache/
$ rm -rf ~/.mozilla/firefox/*.default-release/jit*

Em ambientes com múltiplos usuários, considere um script que itera sobre todos os diretórios home:

bash
$ for user in $(ls /home); do
    sudo -u $user rm -rf /home/$user/.cache/mozilla/firefox/*/cache2/
    sudo -u $user rm -rf /home/$user/.mozilla/firefox/*/startupCache/
done

Automação com Ansible

Para ambientes com múltiplos hosts, a automação é fundamental. Exemplo de playbook Ansible:

yaml
---
- name: Atualizar Firefox para ELSA-2026-27717
  hosts: ol8_servers
  become: yes
  tasks:
    - name: Verificar versão atual do Firefox
      command: rpm -q firefox
      register: firefox_version
      changed_when: false

    - name: Atualizar Firefox via DNF
      dnf:
        name: firefox
        state: latest
        enablerepo: ol8_UEKR7
      when: "'140.12.0' not in firefox_version.stdout"

    - name: Matar processos Firefox em execução
      command: pkill -f firefox
      ignore_errors: yes

    - name: Limpar caches JIT por usuário
      shell: |
        for user in $(ls /home); do
          sudo -u $user rm -rf /home/$user/.cache/mozilla/firefox/*/cache2/
          sudo -u $user rm -rf /home/$user/.mozilla/firefox/*/startupCache/
        done
      when: "'140.12.0' not in firefox_version.stdout"

    - name: Verificar instalação
      command: rpm -q firefox
      register: final_version
      changed_when: false

    - name: Alertar se versão incorreta
      fail:
        msg: "Firefox não foi atualizado para 140.12.0"
      when: "'140.12.0' not in final_version.stdout"

Conclusão

O aviso ELSA-2026-27717 aborda 27 vulnerabilidades no Firefox para Oracle Linux 8, incluindo memory safety bugs, sandbox escapes, bypass de same-origin policy e condições de contorno que podem levar à execução remota de código. 

A atualização para firefox-140.12.0-1.0.1.el8_10 é mandatória para qualquer ambiente que utilize o Firefox, seja em estações de trabalho, terminais ou aplicações headless.

Os pontos críticos para uma atualização bem-sucedida são:

  • Utilizar o repositório ULN correto (ol8_UEKR7) para obter o pacote oficial.
  • Forçar o encerramento de todos os processos Firefox após a atualização — o binário em memória continua vulnerável até ser reiniciado.
  • Limpar caches JIT e de inicialização para evitar crashes decorrentes de código compilado com versões anteriores.
  • Verificar a integridade do pacote com rpm -V firefox e documentar a versão instalada.

A Oracle disponibiliza pacotes para x86_64 e aarch64, bem como o SRPM para instalações offline. 

Para ambientes de larga escala, a automação via Ansible ou scripts shell é fortemente recomendada para garantir consistência em toda a frota.

Não postergue esta atualização. 

Com CVEs que permitem sandbox escape e execução remota de código, cada dia sem a aplicação deste patch representa uma janela de exposição desnecessária para a infraestrutura.

Nenhum comentário:

Postar um comentário