Avisos / Erros ao executar o clamav / clamscan, varrendo o disco rígido de 3TB

2

O que estou tentando fazer :

Estou tentando analisar o meu servidor de arquivos em busca de malware, e estou usando o clamav / clamscan, onde a página do manual diz que ele pode verificar arquivos de até 4 GB.

Esta página man do declara:

--max-filesize=#n

Extract and scan at most #n kilobytes from each archive. You may pass the value in megabytes in format xM or xm, where x is a number. This option protects your system against DoS attacks (default: 25 MB, max: <4 GB)

--max-scansize=#n

Extract and scan at most #n kilobytes from each scanned file. You may pass the value in megabytes in format xM or xm, where x is a number. This option protects your system against DoS attacks (default: 100 MB, max: <4 GB)

Meu sistema é :

Placa-mãe ASRock de hardware inovadora,

CPU: Processador AMD Athlon (tm) II X2 270 (3400 MHz)

Memória: 4 GB

OS: Debian Wheezy todas as atualizações.

Perguntas :

O que estou fazendo de errado aqui?

O que esses erros e avisos abaixo significam?

Existe uma correção para esse comportamento?

Meu caso :

Estou tentando verificar dois discos rígidos de 3TB com clamscan há mais de uma semana, mas ele sempre apresenta os mesmos erros (exceto o número de Bytecodes varia):

LibClamAV Warning: [Bytecode JIT]: recovered from error
LibClamAV Warning: [Bytecode JIT]: JITed code intercepted runtime error!
LibClamAV Warning: Bytcode 38 failed to run: Time limit reached
LibClamAV Warning: [Bytecode JIT]: Bytecode run timed out, timeout flag set
LibClamAV Warning: [Bytecode JIT]: recovered from error
LibClamAV Warning: [Bytecode JIT]: JITed code intercepted runtime error!
LibClamAV Warning: Bytcode 38 failed to run: Time limit reached
LibClamAV Warning: [Bytecode JIT]: recovered from error
LibClamAV Warning: [Bytecode JIT]: Bytecode run timed out, timeout flag set
LibClamAV Warning: [Bytecode JIT]: JITed code intercepted runtime error!
LibClamAV Warning: Bytcode 38 failed to run: Time limit reached

após aprox. 40 a 50 horas de digitalização:

(Observe que no próximo snippet está o comando clamscan real que estou tentando executar)

PID  USER PRI NI VIRT  RES  SHR S CPU% MEM%   TIME+ Command
2012 root 20  0 1903M 246M 1244 R 101. 6.6 47h27:45 clamscan -r -i --remove --max-filesize=4000M --max-scansize=4000M /DATA1/

Eu tentei excluir os arquivos sugeridos em um fórum onde eles suspeitaram de corrupção em alguns desses arquivos que são bytecode.cvd , main.cvd , daily.cld e baixá-los novamente (com a ferramenta de atualização):

root ~ # ls -ahl /usr/local/share/clamav/                                                
total 145M                                                                                  
drwxr-sr-x  2 clamav clamav 4.0K Mar 26 04:29 .
drwxrwsr-x 10 root   staff  4.0K Mar 20 01:59 ..
-rw-r--r--  1 clamav clamav  65K Mar 26 04:29 bytecode.cvd
-rw-r--r--  1 clamav clamav  83M Mar 26 04:29 daily.cld
-rw-r--r--  1 clamav clamav  62M Mar 18 01:17 main.cvd
-rw-------  1 clamav clamav  156 Mar 26 04:29 mirrors.dat
root ~ # rm -f /usr/local/share/clamav/bytecode.cvd /usr/local/share/clamav/daily.cld /usr/local/share/clamav/main.cvd
root ~ # freshclam
ClamAV update process started at Thu Mar 26 04:42:21 2015
Downloading main.cvd [100%]
main.cvd updated (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily.cvd [100%]
daily.cvd updated (version: 20242, sigs: 1358870, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 247, sigs: 41, f-level: 63, builder: dgoddard)
Database updated (3783136 signatures) from db.UK.clamav.net (IP: 129.67.1.218)

Eu também tentei definir --max-filesize e --max-scansize menor por postagem no fórum que encontrei aqui onde indica que há um limite para o tamanho dos arquivos / digitalizações a 2.17GB:

clamscan -r -i --remove --max-filesize=2100M --max-scansize=2100M /DATA1/

mas deu os mesmos erros.

O programa é o mais recente do site oficial: clamav-0.98.6 configurado e compilado da fonte com estas opções:

./configure --enable-bzip2

Eu tentei reinstalar o programa e também no início eu tinha mais opções definidas na compilação (- enable-experimental, --with-dbdir = / usr / local / share / clamav)

A última opção que eu conheço é desinstalar esta versão e experimentar os pacotes dos meus repositórios de distribuições. Mas eu gostaria de ter este trabalhando, se possível.

ATUALIZAÇÃO: Eu também tentei instalar o clamav a partir dos repositórios, mas ele fornece os mesmos problemas / erros.

Eu encontrei isso , mas é antigo e parece não saber o que O problema é. E aqui mas ainda não é uma resposta ou correção definitiva.

As unidades que estou tentando verificar são estas:

# df -h

/dev/sdb1                  2.7T  2.6T  115G  96% /DATA1
/dev/sdc1                  2.7T  2.6T  165G  95% /DATA2

Aqui está o fdisk:

# fdisk -l

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes                                                           
255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 sectors                                 
Units = sectors of 1 * 512 = 512 bytes                                                                  
Sector size (logical/physical): 512 bytes / 4096 bytes                                                  
I/O size (minimum/optimal): 4096 bytes / 4096 bytes                                                     
Disk identifier: 0x00000000                                                                             

   Device Boot      Start         End      Blocks   Id  System                                          
/dev/sdb1               1  4294967295  2147483647+  ee  GPT                                             
Partition 1 does not start on physical sector boundary.                                                 


WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes                                                           
255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 sectors                                 
Units = sectors of 1 * 512 = 512 bytes                                                                  
Sector size (logical/physical): 512 bytes / 4096 bytes                                                  
I/O size (minimum/optimal): 4096 bytes / 4096 bytes                                                     
Disk identifier: 0x00000000                                                                             

   Device Boot      Start         End      Blocks   Id  System                                          
/dev/sdc1               1  4294967295  2147483647+  ee  GPT                                             
Partition 1 does not start on physical sector boundary.

Causa possível :

Poderia ser algo relacionado à memória / CPU que o sistema tem, mas eu não tenho essa informação

Eu encontrei este que afirma que o clamscan carrega o arquivo para digitalizar na memória e, se houver Não há memória suficiente que irá falhar. É provável que isso esteja acontecendo, já que estou configurando o scanner para escanear arquivos até 4Gigs e é a quantidade de memória que o sistema tem.

Trecho:

How big is that file? How much RAM (physical and swap separate, please) is installed on the scanning machine? Currently, ClamAV has a hard file limit of around 2.17GB. Because we're mapping the file into memory, if you don't have enough memory available to map the whole file, the memory mapping code (as currently implemented) will fail and the file won't be scanned.

One of our long-term goals is to investigate being able to properly support large files.

Solução possível :

Espero que o problema acima seja o bastante (falta de memória), então posso simplesmente estender a memória do sistema para 8GB, mas é improvável que seja tão simples porque tentei executar essas varreduras em um sistema com 12 GB de RAM.

EDIT # 1

Aqui está uma corrida em outro sistema com o Fedora 21 + 12 GB de RAM:

clamscan -r -i --remove --max-filesize=1700M --max-scansize=1700M --exclude=/proc --exclude=/sys --exclude=/dev /
LibClamAV Warning: [Bytecode JIT]: recovered from error
LibClamAV Warning: [Bytecode JIT]: JITed code intercepted runtime error!
LibClamAV Warning: [Bytecode JIT]: Bytecode run timed out, timeout flag set
LibClamAV Warning: Bytcode 27 failed to run: Time limit reached
LibClamAV Error: cli_scanxz: premature end of compressed stream
LibClamAV Error: cli_scanxz: premature end of compressed stream
----------- SCAN SUMMARY -----------
Known viruses: 3779101
Engine version: 0.98.6
Scanned directories: 101382
Scanned files: 744103
Infected files: 0
Total errors: 18419
Data scanned: 285743.78 MB
Data read: 394739.73 MB (ratio 0.72:1)
Time: 32171.073 sec (536 m 11 s)

quando eu executei as mesmas digitalizações com tamanhos definidos como 2100M-4000M, ocorreu os mesmos erros mencionados na minha pergunta original.

    
por somethingSomething 28.03.2015 / 07:52

1 resposta

1

Eu encontrei isso (graças a @FloHe): Breve relato Introdução ao ClamAV Bytecode Signatures , é uma boa visão geral / suplemento de alguns dos usos do programa e algumas opções úteis:

Trecho:

Bytecode signatures are a specialized type of ClamAV signature which is able to perform additional processing of the scanned file and allow for more robust detection. Unlike the standard ClamAV signature types, bytecode signatures have a number of unique distinctions which need to be respected for their effective usage.

Confiança

Bytecode signatures, by default, are considered untrusted. In fact, only bytecode signatures published by Cisco, in the bytecode.cvd are considered “trusted”. This means that the ClamAV engine will, by default, never load, trigger or execute untrusted bytecodes. One can bypass this safety mechanism by specifying the bytecode unsigned option to the engine but it should be noted that it is up to the user’s discretion on using untrusted bytecode signatures.

Para clamscan, a opção de linha de comando é

--bytecode-unsigned .

Para clamd, seria necessário especificar BytecodeUnsigned yes to clamd.conf .

Tempo limite

Bytecode signatures are designed to only run for a limited amount of time designated by an internal timeout value. If execution time exceeds the value, the bytecode signature’s execution is terminated and the user is notified. The bytecode signature timeout value can be set by the user.

Para clamscan, a linha de comando é

--bytecode-timeout=[time in ms] .

Para clamd, seria especificado BytecodeTimeout [time in ms] a clamd.conf .

E isso é útil:

Relatório de problemas

If anyone encounters issue with bytecode signatures, whether within the clambc-compiler or within ClamAV, they can report them to https://bugzilla.clamav.net/. Be sure to include the bytecode signature, bytecode source(if possible), and any other pieces of useful information.

Resposta

A chave parece ser definir --bytecode-timeout= high para que o scanner tenha tempo de digitalizar todo o arquivo. O valor padrão é 60000 milissegundos / 60 segundos, e eu configurei para 190000 que funciona e não fornece erros de tempo limite. Esse valor provavelmente poderia ser menor, mas funciona para mim. Testado em dois sistemas que tiveram os erros antes da configuração.

ATUALIZAÇÃO:

Testado em três sistemas e muitas varreduras, os erros desapareceram com essa configuração para --bytecode-timeout .

Aqui está o novo comando:

clamscan -r -i --remove --max-filesize=4000M --max-scansize=4000M --bytecode-timeout=190000 /DATA1

Nota:

Eu também atualizei a memória do servidor para 8GB, não tenho certeza se o clamscan carrega o arquivo na memória quando está sendo verificado, mas um post disse isso e, se for, é outra consideração.

    
por 09.04.2015 / 14:03