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
Last revisionBoth sides next revision
doc:appunti:linux:sa:procmail_sanitizer_clamav [2020/06/18 10:42] – [Cosa succede se clamd è fermo] niccolodoc:appunti:linux:sa:procmail_sanitizer_clamav [2022/04/11 18:12] – [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 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 =====
doc/appunti/linux/sa/procmail_sanitizer_clamav.txt · Last modified: 2022/04/11 18:13 by niccolo