Il risultato di uno scanner nomina un indirizzo, una porta e qualcosa che vi è stato negoziato. Non nomina il processo dietro quella socket, e su un host VPN più processi possono condividere la macchina mentre solo uno di essi è il tunnel. Leggere una stringa di versione da un’utilità laterale o trovare un file di libreria sul disco aggiunge prove sull’host, non sull’ascoltatore. Il rilevamento diventa azionabile solo quando viene collegato a un componente in esecuzione e poi confrontato con l’ambito che un avviso indica davvero.

L’ordine conta: prima il componente, poi l’avviso, infine la correzione.

Il rapporto nomina una porta, non un programma

Parti dall’endpoint che è stato realmente valutato. Una sonda contro la porta di amministrazione HTTPS ha misurato il servizio web, il suo stack TLS e qualsiasi proxy che gli stia davanti; non ha appreso nulla dell’ascoltatore OpenVPN o WireGuard su un’altra porta. I proxy inversi e gli agenti di gestione peggiorano la situazione, perché il certificato e il banner possono appartenere al frontend mentre la libreria vulnerabile si trova dietro, in un processo backend.

Registra destinazione, trasporto, porta e nome del servizio insieme al risultato, così che l’ambito viaggi con il rilevamento.

Che cos’è davvero la build in esecuzione

Su un host generico, il pacchetto installato e la libreria caricata sono due questioni distinte. Un database dei pacchetti può elencare una versione corretta mentre un demone di lunga durata tiene ancora il vecchio oggetto condiviso in memoria, e un’immagine di appliance integrata può portare librerie proprie che nessun gestore di pacchetti segnala. Chiedi al gestore dei servizi cosa è in esecuzione, poi ispeziona il processo e i suoi collegamenti.

systemctl status openvpn-server@server --no-pager
ps -o pid,lstart,args -C openvpn
ss -lntup | grep -E '1194|443'
dpkg -l | grep -i -E 'openvpn|libssl'
ldd "$(command -v openvpn)" | grep -i ssl

L’ora di avvio nell’elenco dei processi è il dettaglio che la gente salta. Un demone avviato prima dell’ultimo aggiornamento dei pacchetti esegue ancora la build caricata all’avvio, ed è esattamente il caso in cui un inventario dice corretto e la socket dice il contrario.

Far corrispondere la build all’ambito di un avviso

Gli avvisi descrivono prodotti, versioni e talvolta condizioni richieste, e questi tre campi non sempre coincidono con la versione di un pacchetto. L’avviso Heartbleed di OpenVPN dell’aprile 2014 è un esempio storico utile perché separa le versioni di Access Server interessate dai servizi web e dai demoni VPN, che avevano esposizioni diverse. La lezione è leggere quale componente copre il testo invece di far corrispondere per modello la parola OpenSSL.

Quell’avviso è anche datato. I suoi numeri di versione corretti oggi non sono consigli di installazione, e una falla corretta nel 2014 non dice nulla sui problemi successivi nel ramo che esegui oggi.

Risolvere il disaccordo, poi chiudere l’esposizione

Quando inventario e valutazione non concordano, verifica se entrambi descrivono lo stesso endpoint e lo stesso runtime: un altro indirizzo, un proxy frontale, un secondo servizio, un vecchio processo ancora legato alla porta o una libreria integrata che il gestore dei pacchetti non ha mai visto. Risolvilo al confine prima di riscrivere un rapporto.

Applica la correzione supportata, riavvia il servizio interessato e conferma che la nuova build è quella in esecuzione ora. Un file corretto sul disco con il vecchio processo che serve ancora traffico non è una correzione.

Poi gestisci ciò che il componente può aver contenuto durante la finestra di esposizione. Correggere e sostituire le credenziali rispondono a domande diverse, e un certificato conservato vicino all’host interessato non è di per sé un elenco di ciò che è trapelato. Segui la procedura del responsabile dell’incidente per revoca, rimozione delle sessioni e aggiornamenti dei client, e registra quale componente è stato interessato, perché le prove erano applicabili e cosa lo ha chiuso. Quel registro è ciò che leggerà una revisione successiva.

Articoli correlati