Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE_2026_31694 — Scanner passivo de vulnerabilidades de hosts Linux para CVE-2026-31694: verifica o kernel em execução, a configuração do FUSE, metadados de pacotes e evidências de patches, e gera orientações de mitigação personalizadas. | Kitploit
Ferramentas/GitHubGitHub/zenzue/cve_2026_31694
Ferramentas DefensivasScanners de VulnerabilidadesAnálise de VulnerabilidadesAuditoria de Configuração
GitHubzenzue/cve_2026_31694

CVE_2026_31694

Scanner passivo de vulnerabilidades de hosts Linux para CVE-2026-31694: verifica o kernel em execução, a configuração do FUSE, metadados de pacotes e evidências de patches, e gera orientações de mitigação personalizadas.

Ver Repositório
há 22 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Scanner Passivo CVE-2026-31694

Uma ferramenta passiva de avaliação de hosts Linux para CVE-2026-31694, uma escrita fora dos limites no cache readdir do FUSE no kernel Linux.

O scanner avalia o kernel em execução, a exposição do FUSE, os metadados de pacotes locais, as evidências do código-fonte do kernel, o ambiente de execução e a família do sistema operacional. Quando o host pode estar afetado, ele produz um guia de mitigação adaptado à distribuição detectada.

Autor: Aung Myat Thu [w01f]


Índice

  • Visão Geral
  • Resumo da Vulnerabilidade
  • Modelo de Segurança
  • Recursos
  • Requisitos
  • Instalação
  • Uso
  • Opções de Linha de Comando
  • Fluxo de Avaliação
  • Vereditos
  • Códigos de Saída
  • Fontes de Detecção
  • Suporte a Distribuições
  • Geração de Mitigações
  • Comportamento em Contêineres e WSL
  • Formatos de Relatório
  • Automação e Integração
  • Orientação Operacional
  • Limitações
  • Solução de Problemas
  • Referências

Visão Geral

cve_2026_31694_scanner.py é um utilitário local de avaliação de vulnerabilidades que não explora o sistema.

Ele não confirma a vulnerabilidade acionando o caminho de código FUSE afetado. Em vez disso, ele combina vários indicadores passivos:

  • versão do kernel em execução;
  • linhas de base de versões corrigidas a montante;
  • tamanho atual da página de memória;
  • configuração do kernel CONFIG_FUSE_FS;
  • tipos de sistemas de arquivos FUSE registrados;
  • presença de /dev/fuse e acesso do usuário atual;
  • disponibilidade do helper de montagem FUSE;
  • montagens FUSE ativas;
  • inspeção do código-fonte do kernel instalado;
  • propriedade dos pacotes do kernel;
  • evidências do changelog de pacotes locais;
  • metadados de atualização de pacotes em cache;
  • comparação entre o kernel instalado e o em execução;
  • detecção de distribuição e gerenciador de pacotes;
  • detecção de contêiner, máquina virtual e WSL.

O resultado é uma avaliação de exposição, não uma prova baseada em exploração.


Resumo da Vulnerabilidade

A CVE-2026-31694 afeta o cache readdir do FUSE no kernel Linux.

A lógica vulnerável calcula o tamanho serializado de uma entrada de diretório a partir de um comprimento de nome controlado pelo servidor e copia o registro para uma única página do cache de páginas. Uma entrada de diretório com um comprimento de nome de 4095 pode produzir um tamanho serializado de 4120 bytes.

Em um sistema que usa páginas de 4096 bytes, esse registro excede uma página em 24 bytes.

A correção a montante rejeita registros de diretório que não cabem em uma única página antes da cópia do cache ocorrer.

Componente afetado```text

fs/fuse/readdir.c fuse_add_dirent_to_cache()

root@kitploit:~
### Dados de baseline do scanner

O scanner contém os seguintes baselines estáveis corrigidos do upstream:

| Série do kernel | Baseline corrigido |
|---|---:|
| 5.10 | 5.10.258 |
| 5.15 | 5.15.209 |
| 6.1 | 6.1.175 |
| 6.6 | 6.6.136 |
| 6.12 | 6.12.84 |
| 6.18 | 6.18.25 |
| 7.0 | 7.0.2 |
| Mainline | 7.1 ou mais recente |

Essas versões são usadas como uma das entradas da avaliação. Elas não são tratadas como a única fonte da verdade, pois os fornecedores de distribuições podem fazer backport da correção mantendo um número de versão upstream mais antigo.

---

## Modelo de Segurança

O scanner é projetado para evitar invocar a operação vulnerável.

### O scanner não

- montar um sistema de arquivos FUSE;
- abrir ou comunicar-se com `/dev/fuse`;
- iniciar um servidor FUSE;
- enviar registros de diretório especialmente elaborados;
- alocar memória para teste de posicionamento de página;
- preparar alocadores do kernel;
- modificar `/etc/passwd`;
- alterar a configuração do kernel;
- carregar ou descarregar módulos do kernel;
- modificar as permissões de `/dev/fuse`;
- instalar ou remover pacotes;
- reiniciar o sistema;
- tentar escalonamento de privilégios.

### O scanner pode

- ler arquivos em `/proc`, `/boot`, `/lib/modules`, `/usr/lib/modules`, `/usr/src` e diretórios de metadados de pacotes;
- executar consultas de pacotes limitadas e somente leitura;
- inspecionar montagens ativas e o registro de sistemas de arquivos;
- escrever um relatório somente quando `--output` for explicitamente fornecido;
- imprimir comandos de mitigação para revisão do administrador.

Os comandos de mitigação são saída de documentação. Eles nunca são executados automaticamente.

---

## Recursos

### Identificação do host e do kernel

- Lê `platform.release()` e analisa a versão do kernel no estilo upstream.
- Lê `/etc/os-release` ou `/usr/lib/os-release`.
- Detecta a arquitetura da CPU e o tamanho da página de memória.
- Identifica se o kernel verificado pertence ao sistema operacional atual.

### Avaliação da exposição do FUSE

- Lê `CONFIG_FUSE_FS` das fontes de configuração do kernel disponíveis.
- Detecta o suporte FUSE embutido e configurações de módulo carregável.
- Lê `/proc/filesystems`.
- Verifica os metadados de `/dev/fuse` e o acesso de leitura/escrita do usuário atual.
- Localiza `fusermount3` ou `fusermount`.
- Analisa as montagens FUSE ativas a partir de `/proc/self/mountinfo`.

### Evidência de patch

- Compara a versão em execução com os baselines corrigidos upstream.
- Procura no código-fonte do kernel instalado pela proteção de registro superdimensionado.
- Verifica os changelogs locais de pacotes RPM ou Debian para:
  - `CVE-2026-31694`;
  - o título do patch upstream.

### Estado do pacote e da reinicialização

- Tenta identificar o pacote que possui o kernel em execução.
- Consulta os metadados locais do gerenciador de pacotes sem atualizar os repositórios.
- Detecta um kernel instalado mais recente quando o ambiente do host é autoritativo.
- Verifica `/var/run/reboot-required` quando aplicável.

### Percepção do ambiente

- Detecta contêineres compatíveis com Docker.
- Detecta contêineres compatíveis com Podman.
- Detecta cgroups relacionados a contêineres.
- Detecta WSL.
- Detecta máquinas virtuais usando `systemd-detect-virt` quando disponível.

### Relatórios

- Saída de texto legível por humanos.
- Saída JSON legível por máquina.
- Saída de relatório em Markdown.
- Saída somente de mitigação.
- Saída opcional em arquivo.
- Códigos de saída de processo significativos.

---

## Requisitos

### Obrigatórios

- Linux para avaliação do kernel.
- Python 3.9 ou mais recente.
- Acesso de leitura aos metadados normais do sistema.

O scanner usa apenas a biblioteca padrão do Python.

### Comandos opcionais

Evidências adicionais são coletadas quando as seguintes ferramentas estão presentes:

| Ferramenta | Finalidade |
|---|---|
| `dpkg-query` | Propriedade de pacote do kernel e descoberta de changelog no Debian/Ubuntu |
| `rpm` | Inspeção de propriedade de pacote e changelog no Fedora/RHEL/SUSE |
| `pacman` | Metadados de pacote de kernel e atualizações da família Arch |
| `apt` | Consulta de atualização em cache da família Debian |
| `dnf` ou `dnf5` | Consulta de atualização em cache do Fedora/RHEL |
| `zypper` | Consulta de patch CVE em cache do SUSE |
| `apk` | Consulta de pacote/atualização do Alpine |
| `systemd-detect-virt` | Detecção de contêineres e máquinas virtuais |

Privilégios de root não são necessários para a verificação normal.

Algumas evidências podem não estar disponíveis para uma conta sem privilégios devido a permissões de arquivo específicas do sistema.

---

## Instalação

Coloque o scanner em um diretório de trabalho:```bash
chmod +x cve_2026_31694_scanner.py

Execute diretamente:```bash ./cve_2026_31694_scanner.py

root@kitploit:~
Ou invoque-o com Python:```bash
python3 cve_2026_31694_scanner.py

Nenhuma instalação de pacote Python é necessária.


Uso

Avaliação padrão```bash

python3 cve_2026_31694_scanner.py

root@kitploit:~
### Saída JSON```bash
python3 cve_2026_31694_scanner.py --format json

O alias de compatibilidade abaixo produz o mesmo formato:```bash python3 cve_2026_31694_scanner.py --json

root@kitploit:~
### Relatório Markdown```bash
python3 cve_2026_31694_scanner.py --format markdown

Salvar um relatório```bash

python3 cve_2026_31694_scanner.py
--format markdown
--output cve-2026-31694-report.md

root@kitploit:~
### Imprimir apenas orientações de remediação```bash
python3 cve_2026_31694_scanner.py --mitigation-only

Pular consultas de atualização de pacotes```bash

python3 cve_2026_31694_scanner.py --no-package-query

root@kitploit:~
### Sempre retornar sucesso após relatar```bash
python3 cve_2026_31694_scanner.py --no-exit-status

Esta opção é útil ao coletar relatórios sem permitir que o status de vulnerabilidade faça um job de orquestração falhar.


Opções de Linha de Comando


Fluxo de Trabalho de Avaliação

O scanner avalia as evidências na seguinte ordem.

1. Detecção do sistema operacional e do ambiente

O scanner determina:

  • se o sistema operacional é Linux;
  • o ID e a família da distribuição;
  • o gerenciador de pacotes;
  • se o processo está em execução em:
    • um host normal;
    • uma máquina virtual;
    • um contêiner;
    • WSL.

A detecção do ambiente altera a interpretação dos dados de pacotes e reinicialização.

Por exemplo, um contêiner pode ver o kernel do host, mas normalmente não consegue determinar o pacote do kernel do host a partir do sistema de arquivos do contêiner.

2. Configuração do FUSE

O scanner procura uma configuração do kernel em execução em:```text /proc/config.gz /boot/config-$(uname -r) /lib/modules/$(uname -r)/build/.config /usr/lib/modules/$(uname -r)/build/.config

root@kitploit:~
Ele avalia:```text
CONFIG_FUSE_FS=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_FS is not set

Interpretação:

ValorSignificado
yO FUSE está embutido no kernel. A lista negra de módulos não pode desativá-lo.
mO FUSE está disponível como módulo carregável.

3. Exposição em tempo de execução

O scanner verifica:```text /proc/filesystems /dev/fuse PATH for fusermount3 or fusermount /proc/self/mountinfo

root@kitploit:~
A ausência de `/dev/fuse` ou `fusermount3` reduz a usabilidade imediata no ambiente atual, mas não prova que o kernel está corrigido.

### 4. Geometria do tamanho de página

O registro superdimensionado documentado tem `4120` bytes.

Quando o tamanho de página do host é de pelo menos `4120` bytes, o registro documentado não cruza um limite de página. O scanner pode relatar que o sistema não está exposto pela geometria de página documentada.

Essa conclusão se aplica apenas ao registro documentado e ao comportamento de implementação avaliado. Não é uma declaração geral de que todos os problemas de segurança de memória do FUSE são impossíveis em sistemas com páginas maiores.

### 5. Inspeção da fonte instalada

Quando a fonte instalada está disponível, o scanner pesquisa:```text
fs/fuse/readdir.c

Ele procura pela função afetada e por uma proteção equivalente à rejeição de reclen > PAGE_SIZE.

A evidência direta do código-fonte tem maior confiança do que a comparação de versões.

O código-fonte inspecionado deve corresponder ao kernel em execução para que o resultado seja autoritativo. As árvores de código-fonte da distribuição em /usr/src podem representar um kernel instalado diferente.

6. Evidência do pacote do kernel

O scanner tenta mapear a imagem do kernel em execução para o pacote proprietário usando o banco de dados de pacotes da distribuição detectada.

Os mecanismos possíveis incluem:```text dpkg-query -S rpm -qf pacman -Qo apk info -W

root@kitploit:~
Quando um pacote é identificado, os metadados locais do changelog podem ser inspecionados em busca do ID de CVE ou do título do patch.

A ausência de correspondência no changelog não é prova de vulnerabilidade. Os fornecedores nem sempre incluem referências individuais de CVE nos changelogs instalados localmente.

### 7. Comparação de versão upstream

A versão do kernel analisada é comparada com a tabela de linha de base fixa do scanner.

A comparação de versões produz um resultado heurístico porque:

- kernels de fornecedores podem conter backports;
- as revisões de lançamento do pacote de kernel são específicas de cada distribuição;
- kernels de nuvem, tempo real, endurecidos e de habilitação de hardware podem ter cronogramas de patch separados;
- uma string de versão pode representar um ramo mantido pelo fornecedor, em vez de um lançamento upstream não modificado.

### 8. Metadados de atualização de pacotes

Onde houver suporte, o scanner executa consultas somente leitura contra os metadados locais existentes.

Ele não atualiza os repositórios.

Exemplos:```text
apt list --upgradable
pacman -Qu
dnf --cacheonly --quiet check-upgrade
zypper --no-refresh list-patches --all --cve=CVE-2026-31694
apk version -l <

Um resultado que não mostra atualização disponível é tão atual quanto os metadados do repositório em cache.

9. Estado de reinicialização

Em um host normal ou máquina virtual, o scanner compara o kernel em execução com os kernels instalados detectados e verifica o marcador de reinicialização usado por sistemas da família Debian.

Dentro de um contêiner ou convidado do WSL, essa verificação é marcada como controlada pelo host, em vez de comparar os arquivos do convidado com o kernel do host.

10. Geração de veredito

A precedência de evidências é aproximadamente:

  1. evidência direta de patch no código-fonte ou no pacote;
  2. FUSE desabilitado;
  3. geometria de página documentada não exposta;
  4. linha de base upstream corrigida ou não afetada;
  5. versão upstream potencialmente afetada;
  6. evidência inconclusiva.

Vereditos

PATCHED

Evidência local direta indica que a correção existe.

Exemplos:

  • guarda correspondente no código-fonte do kernel relevante;
  • os metadados do pacote de kernel local referenciam o CVE ou o patch.

A confiança normalmente é alta, mas o alinhamento entre o código-fonte e o kernel em execução ainda deve ser verificado.

NOT_EXPOSED

A configuração detectada do kernel em execução tem o FUSE desabilitado.

Este é um resultado de exposição, não uma evidência de que o código-fonte do kernel em si contém a correção.

NOT_EXPOSED_BY_DOCUMENTED_PAGE_GEOMETRY

O tamanho da página de memória é grande o suficiente para conter o registro documentado de 4120 bytes sem cruzar um limite de página.

Este veredito se limita à geometria documentada da vulnerabilidade.

UPSTREAM_BASELINE_SAFE

A versão em execução analisada atende a uma linha de base upstream corrigida conhecida ou é anterior à implementação afetada.

A verificação do pacote do fornecedor continua sendo preferível.

POTENTIALLY_VULNERABLE

O kernel analisado está dentro de uma faixa upstream afetada e nenhuma evidência direta de patch local foi encontrada.

Este resultado exige verificar o advisory do fornecedor do sistema operacional antes de declarar o kernel instalado como vulnerável.

INCONCLUSIVE

O scanner não conseguiu obter evidências suficientes.

Causas comuns:

  • configuração de kernel indisponível;
  • string de versão não reconhecida;
  • código-fonte ou metadados de pacote inacessíveis;
  • distribuição não suportada;
  • execução dentro de um contêiner;
  • kernel gerenciado pelo host;
  • status de backport do fornecedor indisponível localmente.

NOT_APPLICABLE

O sistema operacional atual não é Linux.


Códigos de Saída

CódigoSignificado
0Evidência de correção aplicada, linha de base upstream segura ou exposição documentada ausente

Exemplo:```bash python3 cve_2026_31694_scanner.py status=$?

case "$status" in 0) echo "No actionable exposure detected by the scanner" ;; 1) echo "Potential exposure detected" ;; 2) echo "Assessment inconclusive" ;; 3) echo "Scanner execution failed" ;; esac

root@kitploit:~
Quando `--no-exit-status` é especificado, o scanner retorna `0` após gerar o relatório.

---

## Fontes de Detecção

O scanner utiliza as seguintes fontes locais quando disponíveis:

| Fonte | Informação |
|---|---|
| `/etc/os-release` | Identidade da distribuição |
| `/usr/lib/os-release` | Identidade da distribuição (alternativa) |
| `/proc/version` | Indicadores de kernel e WSL |
| `/proc/config.gz` | Configuração do kernel em execução |
| `/boot/config-*` | Configuração do kernel |
| `/lib/modules/*/build/.config` | Configuração de compilação do kernel |
| `/proc/filesystems` | Sistemas de arquivos registrados |
| `/proc/self/mountinfo` | Montagens FUSE ativas |
| `/proc/1/cgroup` | Indicadores de contêiner |
| `/dev/fuse` | Presença e permissões do dispositivo |
| `/usr/src/*/fs/fuse/readdir.c` | Evidência opcional de patch no nível do código-fonte |
| `/lib/modules` | Inventário de kernels instalados |
| `/usr/lib/modules` | Inventário de kernels instalados |
| `/boot/vmlinuz-*` | Inventário de kernels instalados |
| `/var/run/reboot-required` | Indicador de reinicialização da família Debian |
| banco de dados de pacotes | Propriedade do pacote do kernel |
| changelogs de pacotes | Evidência opcional de backport local |
| cache de pacotes | Evidência opcional de disponibilidade de atualização |

---

## Suporte a Distribuições

### Detecção de família de distribuição

| Família | Distribuições reconhecidas |
|---|---|
| Ubuntu | Ubuntu, Linux Mint, Pop!_OS, elementary OS, Zorin OS |
| Debian | Debian, Kali Linux, Raspbian, Parrot OS |
| Arch | Arch Linux, Manjaro, Garuda Linux, EndeavourOS, CachyOS |
| Fedora | Fedora Linux |
| RHEL | RHEL, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, Amazon Linux |
| SUSE | openSUSE Tumbleweed, openSUSE Leap, SLES, SLED |
| Alpine | Alpine Linux |
| Gentoo | Gentoo Linux |
| Void | Void Linux |
| NixOS | NixOS |
| Desconhecida | Orientação genérica para Linux |

### Suporte a consulta de atualização local

| Família | Consulta de atualização somente leitura |
|---|---|
| Debian/Ubuntu | `apt list --upgradable` |
| Arch | `pacman -Qu` |
| Fedora/RHEL | `dnf check-upgrade` em cache |
| SUSE | listagem de patches CVE em cache com `zypper` |
| Alpine | `apk version -l <` |
| Gentoo | Não implementado |
| Void | Não implementado |
| NixOS | Não implementado |
| Desconhecida | Não implementado |

A ausência de uma atualização visível localmente não significa que um pacote corrigido esteja indisponível. Os metadados do repositório podem estar desatualizados ou a distribuição pode ainda não ter publicado um pacote.

---

## Geração de Mitigação

A orientação de mitigação é selecionada de acordo com:

- família de distribuição;
- gerenciador de pacotes;
- status de contêiner ou WSL;
- configuração do FUSE;
- disponibilidade de `/dev/fuse`;
- montagens FUSE ativas;
- estado de reinicialização;
- veredito final.

O scanner imprime comandos, mas nunca os executa.

### Família Debian e Ubuntu

Sequência típica gerada:```bash
sudo apt update
sudo apt full-upgrade
sudo reboot

Revise a transação de pacote proposta antes de aprová-la.

Após a reinicialização:```bash uname -r python3 cve_2026_31694_scanner.py

root@kitploit:~
### Família Arch e Manjaro

Sequência típica gerada:```bash
sudo pacman -Syu
sudo reboot

Arch-family systems require a complete system upgrade. Do not refresh package databases with pacman -Sy and then install selected packages without completing the upgrade.

Família Fedora e RHEL

Sequência típica gerada:```bash sudo dnf upgrade --refresh sudo systemctl reboot

root@kitploit:~
Systems using `yum` may receive the corresponding `yum` command.

### SUSE family

Typical generated sequence:```bash
sudo zypper refresh
sudo zypper patch --cve=CVE-2026-31694
sudo zypper patch --category security
sudo systemctl reboot

O patch específico do CVE pode não estar disponível como uma transação separada em todos os produtos SUSE ou estados de repositório.

Alpine Linux

Sequência gerada típica:```bash doas apk update doas apk upgrade doas reboot

root@kitploit:~
O prefixo de privilégio depende de o scanner encontrar `sudo`, `doas` ou uma sessão já como root.

### Gentoo Linux

Sequência gerada típica:```bash
sudo emaint sync -a
sudo emerge --ask --update --deep --newuse @world

A instalação e ativação do kernel dependem do fluxo de trabalho do kernel Gentoo configurado no host.

Void Linux

Sequência gerada típica:```bash sudo xbps-install -Suv sudo reboot

root@kitploit:~
### NixOS

Sequência gerada típica:```bash
sudo nixos-rebuild switch --upgrade
sudo systemctl reboot

Controles temporários

Quando a correção não puder ser concluída imediatamente, o scanner pode sugerir controles temporários.

As recomendações possíveis incluem:

  • descarregar o módulo FUSE quando não houver montagens FUSE ativas;
  • colocar na lista negra um módulo FUSE carregável;
  • restringir temporariamente /dev/fuse;
  • remover /dev/fuse de contêineres não confiáveis;
  • remover CAP_SYS_ADMIN;
  • evitar contêineres --privileged.

Esses controles podem interromper cargas de trabalho legítimas, incluindo:

  • SSHFS;
  • AppImage;
  • montagens rclone;
  • portais de desktop;
  • ferramentas de contêiner sem root;
  • sistemas de arquivos em espaço de usuário.

As restrições temporárias não devem substituir a instalação de um kernel corrigido pelo fornecedor.


Comportamento em Contêineres e WSL

Contêineres

Contêineres normalmente compartilham o kernel do host.

Um scanner executado dentro de um contêiner pode detectar:

  • a versão do kernel do host;
  • metadados de pacotes do sistema de arquivos do contêiner;
  • nenhum pacote de kernel do host correspondente;
  • ausência de /dev/fuse, mesmo quando o host tem FUSE habilitado.

Por esse motivo, o scanner marca evidências dependentes do host como não autoritativas e direciona a mitigação ao host do contêiner.

Execute o scanner diretamente no host para uma avaliação autoritativa de pacotes e reinicialização.

As diretrizes de endurecimento de contêineres incluem a remoção de:```text --device /dev/fuse --cap-add SYS_ADMIN --privileged

root@kitploit:~
A configuração Compose equivalente também deve ser revisada:```yaml
devices:
  - /dev/fuse:/dev/fuse

cap_add:
  - SYS_ADMIN

privileged: true

WSL

O kernel WSL é gerenciado pelo Windows em vez do pacote de kernel da distribuição convidada Linux.

Orientação típica gerada:```powershell wsl --update wsl --shutdown

root@kitploit:~
Execute estes comandos no Windows PowerShell, reinicie a distribuição e execute novamente o scanner.

Atualizar apenas os pacotes convidados com `apt`, `dnf` ou outro gerenciador de pacotes Linux não substitui o kernel do WSL.

### Máquinas virtuais

Uma máquina virtual normalmente possui seu próprio kernel convidado. As verificações de pacotes e reinicialização específicas da distribuição permanecem aplicáveis dentro do convidado.

O host do hipervisor deve ser avaliado separadamente.

---

## Formatos de Relatório

### Texto

A saída de texto é destinada ao uso direto no terminal.```bash
python3 cve_2026_31694_scanner.py --format text

O relatório contém:

  • resumo do host;
  • verificações de evidências;
  • atualizações de pacotes quando visíveis;
  • veredito e confiança;
  • guia de mitigação;
  • comandos de verificação;
  • advertências;
  • notas;
  • código de saída.

JSON

A saída JSON contém o relatório completo baseado em dataclass.```bash python3 cve_2026_31694_scanner.py
--format json
--output report.json

root@kitploit:~
Exemplo de seleção de campo:```bash
python3 cve_2026_31694_scanner.py --format json --no-exit-status |
  python3 -c '
import json
import sys

report = json.load(sys.stdin)
print(report["hostname"])
print(report["verdict"])
print(report["confidence"])
print(report["kernel_release"])
'

Markdown

A saída em Markdown é adequada para registros técnicos, tickets e relatórios de avaliação.```bash python3 cve_2026_31694_scanner.py
--format markdown
--output report.md

root@kitploit:~
### Relatório apenas de mitigação```bash
python3 cve_2026_31694_scanner.py \
  --mitigation-only \
  --format markdown

Com o formato JSON, o modo somente mitigação retorna o objeto de mitigação em vez do relatório completo do host.


Automação e Integração

Shell gate```bash

#!/usr/bin/env bash

set -u

report="cve-2026-31694-$(hostname)-$(date +%Y%m%d-%H%M%S).json"

python3 cve_2026_31694_scanner.py
--format json
--output "$report"

status=$?

case "$status" in 0) echo "Assessment completed without a potential-vulnerability verdict" ;; 1) echo "Potential CVE-2026-31694 exposure detected: $report" >&2 ;; 2) echo "Assessment inconclusive: $report" >&2 ;; *) echo "Scanner failure: $report" >&2 ;; esac

exit "$status"

root@kitploit:~
### Coleta de relatórios sem falhar um job```bash
python3 cve_2026_31694_scanner.py \
  --format json \
  --output /var/tmp/cve-2026-31694.json \
  --no-exit-status

Exemplo de Cron```cron

30 3 * * * /usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status

root@kitploit:~
Isso sobrescreve o mesmo arquivo de relatório. Use um script wrapper quando relatórios históricos forem necessários.

### Exemplo de serviço Systemd```ini
[Unit]
Description=Passive CVE-2026-31694 assessment
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/log

The scanner needs read access to kernel and package metadata. Additional sandbox restrictions may hide evidence and produce an inconclusive report.

Uso em frota

Para avaliação de frota:

  1. coloque o script em cada host Linux;
  2. execute-o localmente;
  3. colete a saída JSON;
  4. agrupe os resultados por:
    • distribuição;
    • versão do kernel;
    • veredito;
    • confiança;
    • tipo de ambiente;
  5. verifique os hosts potencialmente afetados em relação aos avisos do fornecedor;
  6. aplique patches e reinicie;
  7. execute nova verificação.

Não trate uma verificação feita a partir de uma imagem de contêiner como uma avaliação do kernel do host.


Orientação Operacional

Resposta recomendada para POTENTIALLY_VULNERABLE

  1. Identifique o kernel exato em execução: ```bash uname -r

    root@kitploit:~
  2. Identifique a distribuição e a versão instaladas: ```bash cat /etc/os-release

    root@kitploit:~
  3. Revise o status CVE do fornecedor da distribuição para o pacote de kernel e a variante exatos.

  4. Atualize os metadados do pacote.

  5. instale o pacote de kernel corrigido suportado pelo fornecedor.

  6. Reinicie o host.

  7. Confirme que o kernel em execução mudou: ```bash uname -r

    root@kitploit:~
  8. Execute o scanner novamente.

Resposta recomendada para INCONCLUSIVE

Colete as evidências ausentes:```bash uname -a getconf PAGE_SIZE cat /etc/os-release grep CONFIG_FUSE_FS /boot/config-"$(uname -r)" 2>/dev/null cat /proc/filesystems ls -l /dev/fuse 2>/dev/null findmnt -t fuse,fuseblk,fusectl

root@kitploit:~
Then verify the exact kernel package against the vendor advisory.

### Verificação de reinicialização

Instalar um pacote de kernel corrigido não altera o kernel atualmente em execução.

Verifique os kernels instalados e em execução e reinicie conforme necessário.

Exemplos:```bash
uname -r
ls -1 /lib/modules

Os sistemas da família Debian também podem fornecer:```bash test -e /var/run/reboot-required && cat /var/run/reboot-required

root@kitploit:~
### Revisão da dependência FUSE

Antes de descarregar ou bloquear temporariamente o FUSE:```bash
findmnt -t fuse,fuseblk,fusectl
lsmod | grep '^fuse'
ps aux | grep -E '[f]usermount|[s]shfs|[r]clone'

Não descarregue o módulo enquanto houver sistemas de arquivos FUSE ativos montados.


Limitações

Sem confirmação de exploit

O scanner intencionalmente não aciona o caminho de código vulnerável.

Um veredito POTENTIALLY_VULNERABLE significa que a evidência passiva disponível é consistente com a exposição. Não é prova de que a exploração terá sucesso.

Backports de fornecedores

Kernels de distribuição frequentemente fazem backport de correções de segurança.

Uma versão upstream de aparência mais antiga pode estar corrigida.

O aviso do fornecedor e a versão exata do pacote são as referências definitivas para kernels gerenciados pela distribuição.

Incompatibilidade da árvore de fontes

Uma árvore de fontes encontrada em /usr/src pode não corresponder ao kernel em execução.

As evidências de patches de código-fonte devem ser validadas em relação a:```bash uname -r

root@kitploit:~
and the source package or build directory used for that exact kernel.

### Metadados de pacotes desatualizados

O scanner não atualiza repositórios.

As verificações de atualização de pacotes dependem do estado do cache local existente.

Use os comandos de refresh e upgrade específicos da distribuição gerados para uma decisão de pacotes atualizada.

### Contêineres

Um contêiner vê o kernel do host, mas normalmente tem metadados de pacotes diferentes.

Execute o scanner no host.

### WSL

O estado dos pacotes do convidado Linux não determina o status de correção do kernel do WSL.

Atualize o WSL a partir do Windows.

### Kernels personalizados

Kernels personalizados, embarcados, de appliances, de fornecedores e compilados manualmente podem não ter metadados de pacotes ou strings de versão reconhecíveis.

Inspecione o commit real da fonte ou as notas de lançamento do fornecedor.

### Live patching

O scanner não determina se um framework de live-patch aplicou essa correção específica ao kernel em execução.

Use as ferramentas de status e os dados de aviso do fornecedor do live-patch.

### Estado do Secure Boot e do bootloader

O scanner não verifica:

- qual kernel o bootloader selecionará em seguida;
- se o Secure Boot aceita a imagem instalada;
- se um novo initramfs foi gerado corretamente;
- se a máquina foi reinicializada com sucesso no kernel esperado.

### Sistemas de arquivos distribuídos e namespaces

O scanner avalia o namespace do processo atual.

Montagens ou acessos a dispositivos ocultos por namespaces podem não aparecer no relatório.

---

## Solução de problemas

### `Kernel configuration could not be determined`

Verifique se um destes arquivos existe:```bash
ls -l /proc/config.gz
ls -l /boot/config-"$(uname -r)"
ls -l /lib/modules/"$(uname -r)"/build/.config

Some distributions do not expose the running configuration through /proc/config.gz.

Running kernel package could not be identified

Possible causes:

  • running inside a container;
  • kernel image is not present in the current filesystem;
  • custom kernel;
  • package database unavailable;
  • kernel provided by the platform;
  • insufficient permissions.

Check:```bash uname -r ls -l /boot ls -l /lib/modules/"$(uname -r)"

root@kitploit:~
### Consulta de atualização de pacotes não relata atualização

Atualize os metadados dos pacotes usando o guia de mitigação gerado e execute novamente o scanner.

O scanner passivo não atualiza os repositórios automaticamente.

### `POTENTIALLY_VULNERABLE` após instalar as atualizações

Confirme que o novo kernel está em execução:```bash
uname -r

Compare-o com os diretórios do kernel instalado:```bash ls -1 /lib/modules

root@kitploit:~
Pode ser necessário reinicializar.

Verifique também o aviso do fornecedor, pois um backport corrigido pode não corresponder à linha de base da versão upstream.

### O FUSE está integrado ao kernel

Quando o relatório mostra:```text
CONFIG_FUSE_FS=y

modprobe -r fuse e a lista negra de módulos não podem desativar o FUSE.

Use um kernel com patch ou um kernel compilado sem suporte a FUSE.

A saída do scanner está incompleta sob o sandboxing do systemd

O scanner pode precisar de acesso de leitura a:```text /proc /boot /lib/modules /usr/lib/modules /usr/src package database directories package cache directories

root@kitploit:~
Ajuste o endurecimento do serviço para que esses caminhos permaneçam legíveis.

---

## Layout de Arquivos

Layout de projeto recomendado:```text
cve-2026-31694-scanner/
├── README.md
└── cve_2026_31694_scanner.py

Layout de instalação recomendado:```text /opt/security/cve-2026-31694/ ├── README.md └── cve_2026_31694_scanner.py

root@kitploit:~
Exemplo:```bash
sudo install -d -m 0755 /opt/security/cve-2026-31694

sudo install -m 0755 \
  cve_2026_31694_scanner.py \
  /opt/security/cve-2026-31694/

sudo install -m 0644 \
  README.md \
  /opt/security/cve-2026-31694/

Referências

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-31694
  • Registro NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-31694
  • Referência de patch estável do Linux: https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed
  • Status no Ubuntu: https://ubuntu.com/security/CVE-2026-31694
  • Rastreador de segurança do Debian: https://security-tracker.debian.org/tracker/CVE-2026-31694
  • Banco de dados CVE da Red Hat: https://access.redhat.com/security/cve/CVE-2026-31694
  • Banco de dados CVE da SUSE: https://www.suse.com/security/cve/CVE-2026-31694.html

Autor

Aung Myat Thu [w01f]

Baixar ferramenta
OpçãoDescrição
--format textSaída de terminal legível por humanos. Este é o padrão.
--format jsonRelatório estruturado completo em JSON.
--format markdownRelatório técnico em Markdown.
--jsonAlias para --format json.
--output PATHEscreve o relatório em um arquivo em vez da saída padrão.
--mitigation-onlyRetorna apenas a seção de mitigação gerada.
--no-package-queryIgnora consultas locais de atualização do gerenciador de pacotes.
--no-exit-statusSempre encerra com o status 0 após gerar a saída.
-h, --helpExibe a ajuda do comando.
nO FUSE está desativado na configuração detectada.
unknownNenhuma fonte de configuração legível estava disponível.
1Potencialmente vulnerável
2Inconclusivo
3Erro no scanner ou na geração de relatório