FERRAMENTAS LINUX: Libinput no Debian: Duas Vulnerabilidades que Podem Comprometer Seu Sistema (e Como Corrigi-las para Sempre)

sexta-feira, 12 de junho de 2026

Libinput no Debian: Duas Vulnerabilidades que Podem Comprometer Seu Sistema (e Como Corrigi-las para Sempre)

 


Descubra como proteger seu sistema Debian das vulnerabilidades críticas no libinput (CVE-2022-1215 e CVE-2026-50292). Este guia prático oferece comandos para verificação, script de automação para aplicar a correção e medidas de mitigação para administradores de sistemas Linux que desejam manter seus ambientes seguros.


Se você administra servidores ou estações Debian, o libinput é uma biblioteca onipresente – ela gerencia teclados, mouses, touchpads e outros dispositivos de entrada em ambientes gráficos (Wayland/X.Org). Por ser tão essencial, qualquer falha nela pode abrir portas perigosas.

Nas últimas atualizações de segurança do Debian, duas vulnerabilidades chamaram a atenção:

Ambas já foram corrigidas, mas o conhecimento delas é perene: você deve saber como verificar, corrigir e se proteger – independentemente de quando surgir a próxima falha.

Este guia foi criado para você aplicar hoje e sempre. Vamos aos comandos.


1. Como verificar se você está vulnerável

Primeiro, descubra qual versão do libinput está instalada:

bash
libinput --version

Ou, se o comando não estiver disponível, consulte o pacote pelo dpkg:

bash
dpkg -l | grep libinput

Versões vulneráveis (no Debian 11 bullseye, por exemplo):

1.16.4-3 (ou qualquer versão anterior à corrigida).

Versões corrigidas (conforme os avisos oficiais):


Se a sua versão for anterior a essas, seu sistema está vulnerável às duas CVEs mencionadas.

2. Script de automação para aplicar a correção

Crie um script bash que verifica a versão e, se necessário, atualiza o libinput – perfeito para automação ou para aplicar em múltiplas máquinas.

Script fix_libinput.sh:

bash
#!/bin/bash
# fix_libinput.sh - Verifica e corrige vulnerabilidades do libinput no Debian

set -e

# Função para comparar versões (simples)
version_ge() {
    # Retorna 0 se a primeira versão >= segunda
    [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" != "$1" ]
}

# Versões mínimas corrigidas por release
declare -A MIN_VERSION
MIN_VERSION["bullseye"]="1.16.4-3+deb11u1"
MIN_VERSION["bookworm"]="1.22.1-1+deb12u1"
MIN_VERSION["trixie"]="1.28.1-1+deb13u1"
MIN_VERSION["sid"]="1.31.3-1"

# Identifica a release do Debian
if ! command -v lsb_release &> /dev/null; then
    echo "Instale lsb-release: apt install lsb-release"
    exit 1
fi
RELEASE=$(lsb_release -sc)
CURRENT_VER=$(dpkg-query -W -f='${Version}' libinput 2>/dev/null || echo "none")

if [ "$RELEASE" == "bullseye" ] || [ "$RELEASE" == "bookworm" ] || [ "$RELEASE" == "trixie" ] || [ "$RELEASE" == "sid" ]; then
    REQUIRED=${MIN_VERSION[$RELEASE]}
    if [ "$CURRENT_VER" = "none" ]; then
        echo "Libinput não está instalado. Instalando versão corrigida..."
        sudo apt update && sudo apt install -y libinput
    elif ! version_ge "$CURRENT_VER" "$REQUIRED"; then
        echo "Versão $CURRENT_VER vulnerável. Atualizando para $REQUIRED..."
        sudo apt update && sudo apt install --only-upgrade -y libinput
    else
        echo "Libinput versão $CURRENT_VER já está corrigida."
    fi
else
    echo "Release $RELEASE não suportada por este script. Atualize manualmente."
fi

Como usar:

bash
chmod +x fix_libinput.sh
sudo ./fix_libinput.sh

💡 O script preserva compatibilidade com Debian 11, 12, 13 e unstable.

Caso o libinput não esteja instalado, ele será instalado na versão corrigida.


📗  Recomendação de Leitura


Segurança em servidores Linux: Ataque e Defesa  (anúncio) -> https://amzn.to/4xofQbt

Se você prefere estudar em português e quer aprender a "pensar como um hacker" para se antecipar a invasões, essa é a pedida! O livro ensina a usar as ferramentas prediletas dos invasores (como Nmap e Netcat) a seu favor, blindando seus sistemas.

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


3. Mitigação alternativa (caso você não possa atualizar agora)

Se por algum motivo você não puder atualizar o libinput imediatamente, existem medidas paliativas que reduzem drasticamente o risco:


🔒 Restringir acesso ao /dev/uinput

A CVE-2026-50292 explora o helper libinput-device-group através do dispositivo /dev/uinput. Restringindo o acesso a ele, você bloqueia o vetor de ataque:

bash
# Verifique as permissões atuais
ls -l /dev/uinput

# Altere o grupo e as permissões (ex.: apenas root pode escrever)
sudo chown root:root /dev/uinput
sudo chmod 600 /dev/uinput

Atenção: Isso pode quebrar funcionalidades que criam dispositivos de entrada virtuais (como alguns softwares de automação de testes). Teste em ambiente de homologação.


AppArmor para confinar o libinput


Crie um perfil AppArmor para o libinput, restringindo o que ele pode acessar:

text
# /etc/apparmor.d/usr.bin.libinput
profile libinput /usr/bin/libinput* {
  #include <abstractions/base>
  #include <abstractions/nameservice>

  /usr/bin/libinput* mr,
  /sys/devices/** r,
  /dev/input/* rw,
  /dev/uinput w,   # apenas leitura/escrita controlada

  deny /etc/shadow r,
  deny /etc/passwd r,
  deny /root/** rwx,
}

Ative o perfil:

bash
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.libinput


Proxy de entrada (casos extremos)


Em ambientes muito restritivos, você pode usar inputattach para redirecionar eventos de entrada através de um proxy que sanitiza os dados antes de entregá-los ao libinput. Essa é uma solução complexa e normalmente desnecessária; fique com as duas primeiras.

⚠️ Lembrete: Essas mitigações são temporárias. A única solução definitiva é a atualização do pacote.


Conclusão

Manter o libinput atualizado é essencial para evitar que um atacante local execute código arbitrário ou escale privilégios no seu sistema. As duas CVEs discutidas aqui – CVE-2022-1215 e CVE-2026-50292 – são exemplos claros de como bibliotecas básicas podem se tornar pontos de entrada.

Aplique o script de automação em suas máquinas, adote as mitigações alternativas se necessário e, acima de tudo, invista no aprendizado contínuo de segurança Linux.



Nenhum comentário:

Postar um comentário