Skip to main content

Spamassassin e il bug Y2K10

Da un programma noto a affidabile come SpamAssassin – il famoso sistema di filtro antispam realizzato in Perl –  questo problema non ce lo saremmo aspettato. Per un bug in una regola di assegnazione, dal 1 Gennaio 2010 la maggior parte dei messaggi risultavano come falsi positivi. Vediamo perchè.

Eccessivamente nel futuro?

SpamAssassin, per chi non lo sapesse, filtra la SPAM assegnando determinati punteggi in base a una lunga serie di criteri, detti regole.

Per fare alcuni esempi, queste regole misurano quanti link sono inclusi nel testo della e-mail, se alcuni campi non sono compilati o sono compilati in maniera evidentemente fasulla, quanto spazio bianco e quante immagini ci sono… e così via: cercano di riconoscere quegli indizi che compaiono più frequentemente in un messaggio di posta indesiderata. Per ciascun indizio, aggiungono un certo punteggio al messaggio, e se la somma finale supera un limite configurabile, il messaggio viene considerato SPAM.

Esistono le regole incluse con SpamAssassin, esistono regole fornite da terze parti, ed è inoltre possibile creare delle regole personalizzate, per ottimizzare il funzionamento di SpamAssassin per la propria rete.

Tra le regole incluse con SpamAssassin ce n’è una, chiamata FH_DATE_PAST_20xx, che cerca di riconoscere se la data del messaggio è eccessivamente nel futuro, sintomo di un messaggio falsificato. In maniera poco lungimirante, tuttavia, l’algoritmo che verifica se tale regola si applica o meno al messaggio non calcolava la differenza tra la data corrente e la data indicata nel messaggio, ma semplicemente indicava come eccessivamente nel futuro tutti i messaggi con data posteriore al 1 Gennaio 2010.

Il futuro è adesso

Qualcuno, verso la fine del 2008, ha giustamente sollevato la questione: entro poco più di un anno, quella regola avrebbe cominciato a funzionare male. La regola quindi E’ stata modificata (anche se, in maniera poco lungimirante, semplicemente spostando di dieci anni in là il limite, al 2020) solo che non è mai stata inclusa per errore negli aggiornamenti ufficiali della versione 3.2 di SpamAssassin.

Alla fine quel futuro è arrivato. Per cui, con lo scattare del 1 Gennaio, tale regola ha cominciato ad applicarsi a tutti i messaggi, e ad alzare quindi la probabilità che un messaggio valido finisse per essere considerato come SPAM.

Soluzione

Fortunatamente, le regole sono state prontamente aggiornate (lo stesso primo dell’anno) e chi effettua regolarmente il comando

sa-update

ovvero l’aggiornamento automatico delle regole di SpamAssassin, non ha avuto problemi.

Chi non ha potuto o non si è ricordato di farlo, è invitato a farlo subito. Se per qualunque motivo non gli è possibile, è bene correre ai ripari disabilitando temporaneamente la regola, ovvero scrivendo

score FH_DATE_PAST_20XX 0

nel file local.cf della propria installazione di SpamAssassin: diamo valore 0 alla regola in questione, in modo che non venga inclusa nel calcolo del punteggio.

In futuro, la regola “difettosa” verrà semplicemente rimossa dall’elenco ufficiale, lasciando invece spazio a una serie di regole che controllano la distanza dalla data attuale e assegnano punteggi di conseguenza. Continuate a fare sa-update e il bug Y2K20 non capiterà mai.

http://spamassassin.apache.org/news.html