
Multi-OS vulnerability checker per CVE-2026-31431 (kernel Linux) e CVE-2026-41940 (cPanel)
| Famiglia | Distribuzioni |
|---|
| Debian | Ubuntu, Debian, Linux Mint, Pop!_OS |
| RHEL | RHEL, CentOS, AlmaLinux, Rocky Linux, Oracle Linux, CloudLinux, Fedora, Amazon Linux |
| SUSE | SLES, openSUSE |
Esegui direttamente da GitHub:
curl -fsSL https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cve_check_2026.sh | sudo bash
Oppure scarica ed esegui (consigliato per una revisione preliminare):
curl -fsSL -o cve_check_2026.sh https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cve_check_2026.sh
chmod +x cve_check_2026.sh
sudo ./cve_check_2026.sh
algif_aead / af_algapt, dnf, yum, zyppercpsrvd| File | Scopo |
|---|---|
/var/log/cve_check_2026_<timestamp>.log | Log di debug completo |
/var/log/cve_check_2026_<timestamp>.report.txt | Riepilogo esecutivo |
Ripiega su /tmp/ se /var/log non è scrivibile.
| Codice | Significato |
|---|---|
0 | Tutto a posto o non applicabile |
1 | Errore dello script (non root, strumenti mancanti) |
2 | Almeno una CVE confermata vulnerabile |
Utile per l'automazione e l'integrazione con il monitoraggio.
| Stato | Significato |
|---|---|
SAFE | Patch confermata |
LIKELY_SAFE | Probabilmente sicuro; non confermato nel changelog |
MITIGATED | Workaround applicato (es. blacklist del modulo) |
VULNERABLE | Patch disponibile, non applicata |
VULNERABLE_EOL | Versione a fine vita, nessun percorso di patch |
NOT_APPLICABLE | Software non installato |
UNKNOWN | Impossibile determinare automaticamente |
Per i server cPanel, è disponibile uno script complementare per verificare i file di sessione attivi alla ricerca di segni di sfruttamento della CVE-2026-41940.
Analizza tutti i file in /var/cpanel/sessions/raw/ e classifica ogni sessione in uno dei tre gruppi:
| Risultato | Significato |
|---|---|
LEGITIMATE | Accesso reale tramite handle_form_login, passwd o api_token |
SUSPICIOUS | Payload di attacco (badpass) rilevato — nessun accesso riuscito |
COMPROMISED | Payload di attacco con risposta HTTP 200 nel log di accesso — root è stata compromessa |
curl -fsSL https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cpanel_session_checker.sh | sudo bash
Oppure scaricalo prima:
curl -fsSL -o cpanel_session_checker.sh https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cpanel_session_checker.sh
chmod +x cpanel_session_checker.sh
sudo ./cpanel_session_checker.sh
Se vengono trovate sessioni COMPROMISED:
/tmp, cron e ~/.ssh/authorized_keys per malwareIl server compromesso non può essere considerato affidabile — migra tutti gli account cPanel su un server pulito appena provisionato:
# Sul server compromesso — elenca tutti gli account
/usr/local/cpanel/bin/whmapi1 listaccts | grep 'user:'
# Impacchetta ogni account per la migrazione
/scripts/pkgacct <username> /backup
# Sul server pulito — ripristina ogni account
/scripts/restorepkg /backup/cpmove-<username>.tar.gz
In alternativa usa WHM >> Strumento di Trasferimento >> Copia Più Account da un Altro Server per una migrazione di massa con piena fedeltà.
Dopo la migrazione: aggiorna il DNS per puntare i domini al nuovo IP del server, verifica che tutti i siti vengano caricati, quindi dismetti o reimmagina il server compromesso.
Se vengono trovate solo sessioni SUSPICIOUS (tutte bloccate):
/scripts/upcp --forcerm -f /var/cpanel/sessions/raw/*Dopo un attacco (anche se bloccato), si consiglia di ruotare tutte le password degli account cPanel come precauzione. È disponibile uno script dedicato per il reset massivo di tutte le password degli account cPanel e il loro salvataggio in un file CSV sicuro.
whmapi1/root/cpanel_new_passwords_<timestamp>.csv (modalità 600)/root/cpanel_passwd_reset_<timestamp>.logcurl -fsSL https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cpanel_mass_passwd_reset.sh | sudo bash
Dopo aver consegnato in modo sicuro le nuove password ai titolari degli account, elimina il CSV:
shred -u /root/cpanel_new_passwords_*.csv
Aggiorna cPanel alla build patchata per il tuo ramo:
| Ramo | Build Minima |
|---|---|
| 110.x | 11.110.0.97 |
| 118.x | 11.118.0.63 |
| 126.x | 11.126.0.54 |
| 132.x | 11.132.0.29 |
| 134.x | 11.134.0.20 |
| 136.x | 11.136.0.5 |
/scripts/upcp --force
/scripts/restartsrv_cpsrvd
Debian / Ubuntu:
apt update && apt upgrade -y && reboot
RHEL / AlmaLinux / CloudLinux:
dnf update kernel -y && reboot
# oppure
yum update kernel -y && reboot
Con KernelCare (nessun riavvio richiesto):
kcarectl --update
Avvertenza: Non eseguire
apt upgrade -ysu un server cPanel — potrebbe aggiornare pacchetti gestiti da cPanel (Apache, PHP, MySQL) e rompere i servizi.
Aggiorna solo il pacchetto del kernel:
apt-get install --only-upgrade linux-image-generic linux-headers-generic linux-generic
reboot
Verifica dopo il riavvio:
uname -r
Le istanze AWS EC2 usano un pacchetto kernel diverso (linux-aws) — i nomi dei pacchetti generici non aggiorneranno il kernel in esecuzione:
apt update && apt install --only-upgrade -y \
linux-aws \
linux-image-aws \
linux-headers-aws && \
echo "" && \
echo "In esecuzione attualmente : $(uname -r)" && \
echo "Si avvierà al prossimo boot: $(ls /boot/vmlinuz-* | sort -V | tail -1 | sed 's|/boot/vmlinuz-||')"
Conferma il kernel mostrato per il prossimo avvio, quindi riavvia:
reboot
Metti in blacklist il modulo vulnerabile per impedirne il caricamento:
echo "blacklist algif_aead" >> /etc/modprobe.d/disable-algif-aead.conf
echo "blacklist af_alg" >> /etc/modprobe.d/disable-algif-aead.conf
update-initramfs -u # Debian/Ubuntu
# oppure
dracut --force # famiglia RHEL
Esegui nuovamente il checker per confermare che lo stato cambi in MITIGATED. Applica la patch del kernel alla prossima finestra di manutenzione.
sudo tee /etc/cron.weekly/cve-check-2026 > /dev/null <<'EOF'
#!/bin/bash
curl -fsSL https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cve_check_2026.sh | bash
if [[ $? -eq 2 ]]; then
REPORT=$(ls -t /var/log/cve_check_2026_*.report.txt | head -1)
mail -s "[CVE ALERT] $(hostname) vulnerable" [email protected] < "${REPORT}"
fi
EOF
sudo chmod +x /etc/cron.weekly/cve-check-2026
for host in server1 server2 server3; do
ssh root@${host} "curl -fsSL https://raw.githubusercontent.com/sebinxavi/cve-checker-2026/main/cve_check_2026.sh | bash" \
> "report_${host}_$(date +%F).txt" &
done
wait
Questo script è sola lettura — ispeziona solo il sistema e scrive file di log. Non:
Rivedi sempre lo script prima di fare il pipe di curl a bash. Visualizza il sorgente su:
https://github.com/sebinxavi/cve-checker-2026/blob/main/cve_check_2026.sh
MIT — vedi LICENSE
Sebin Xavi — sebintech.com