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:
- CVE-2022-1215 – uma falha de format string que permitia a execução de código arbitrário por usuários locais maliciosos.
- CVE-2026-50292 – uma injeção de propriedades udev que poderia levar à escalada de privilégios para root, explorada através do helper libinput-device-group.
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:
libinput --version
Ou, se o comando não estiver disponível, consulte o pacote pelo dpkg:
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:
#!/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:
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:
# 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:
# /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:
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