User Tools

Site Tools


doc:appunti:linux:sa:procmail_sanitizer_clamav

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:linux:sa:procmail_sanitizer_clamav [2020/06/18 10:02] – [Sanitizer] niccolodoc:appunti:linux:sa:procmail_sanitizer_clamav [2022/04/11 18:11] – [Content-Type ed estensioni per Sanitizer] niccolo
Line 158: Line 158:
 | Infected          1 | **save** (remove the attachment from the message).  | | Infected          1 | **save** (remove the attachment from the message).  |
 | Generic error  |    2 | **unknown** (check the next policy).  | | Generic error  |    2 | **unknown** (check the next policy).  |
 +
 +==== Content-Type ed estensioni per Sanitizer ====
 +
 +Nella **file_list_2** vengono indicate delle estensioni per cui l'allegato passa intalterato, cioè non viene //neutralizzato// cambiandogli nome. In realtà Sanitizer applica la whitelist sia che corrisponda l'**estensione** del file, sia che corrisponda il **Content-Type**.
 +
 +Non è del tutto chiaro come avere la corrispondenza tra i due, ad esempio (empiricamente) si è determinato che il Content-Type **application/octet-stream** corrisponde all'estensione **bin**.
 +
 +Il riconoscimento del tipo di file viene fatto dalla funzione **check_file_type** del modulo **Anomy::Sanitizer::FileTypes**.
 +
 +Un problema abbastanza comune con Sanitizer sono le parti del messaggio con MIME Type **text/html**: se il contenuto non è un HTML ben formato, esse subiscono il **defang**, cioè il il MIME Type viene modificato in **application/DEFANGED** (la stringa DEFANGED può essere personalizzata configurando l'opzione **msg_defanged**). Questo di solito impedisce la corretta visualizzazione //inline// di quella parte del messaggio nel client di posta.
 +
 +Nel sorgente Perl del modulo **FileTypes** si vede che la classificazione di una parte come oggetto di tipo HTML richiede la presenza di una espressione regolare nella parte stessa (la verifica riguarda solo i primi 512 bytes):
 +
 +<code perl>
 +my $HTML = {
 +    id         => "html",
 +    risk       => $low,
 +    name       => "HTML text file",
 +    extensions => [ "html", "htm", "shtml" ],
 +    mime_types => [ 'text/html' ],
 +    magic      => [ ],
 +    regexp     => '<html|<body|<p>|<b>|<i>|<br>|</a>',
 +};
 +</code>
 +
 +È possibile personalizzare il modulo **FileTypes** definito in **/usr/share/perl5/Anomy/Sanitizer/FileTypes.pm** facendone una copia in **/etc/perl/Anomy/Sanitizer/FileTypes.pm**. Rimuovendo l'elemento **regexp** dal dictionary Sanitizer riconoscerà una parte HTML considerando solo l'estensione o il MIME type, senza analizzare il contenuto.
  
 ===== Cosa succede se clamd è fermo ===== ===== Cosa succede se clamd è fermo =====
Line 167: Line 193:
 ^ 2  | Could not connect to clamd on LocalSocket.  | ^ 2  | Could not connect to clamd on LocalSocket.  |
  
-Quindi se il demone non risponde si ottiene un codice di uscita 2, quindi non si applicano le tre possibili condizioni (clean, disinfected, infected)verrà applicata la policy //catch-all//che nell'esempio sopra è **save** (rimozione del file salvataggio in quarantena).+Se il demone **clamd** non risponde, il programma **clamdscan** restituisce un exit code 2, quindi non si applicano le tre possibili condizioni (clean, disinfected, infected)verrà applicata la policy //catch-all// che nell'esempio sopra è **unknown**,  cioè l'applicazione delle regole successive. 
 + 
 +Nella configurazione mostrata sopra la regola successiva prevede di accettare tali quali gli allegati che corrispondono a **file_list_2** (in pratica documenti allegati non pericolosi), per tutti gli altri viene applicata la **file_default_policy** che consiste nel **defang**, cioè alterare il nome dell'allegato in modo che non sia più pericoloso (ad esempio la rimozione dell'estensione .exe oppure .com).
  
-FIXME: Forse questa non è la condizione ottimale, altrimenti una interruzione dell'antivirus porta alla perdita di tutti gli allegati.+Una configurazione più stringente potrebbe essere quella di applicare la policy **save** (rimozione dell'allegato) anche nel caso //catch-all// (**esito della scansione anomalo** e non previsto). Questa configurazione ha una controindicazione grave: se il demone clamd è fermo per qualche motivo, tutti gli allegati verrebbero eliminati dalla mail, anche quelli puliti ed essenziali come il testo HTML.
doc/appunti/linux/sa/procmail_sanitizer_clamav.txt · Last modified: 2022/04/11 18:13 by niccolo