2008/5/5 Renato Frederick <[EMAIL PROTECTED]>: > Senhores, isto de programa que analisa furo de segurança é furado por si só.
Eu não diria que é furado, mas o resultado deve ser sempre analisado com cautela. > Ex, o famoso nessus. Ele é ótimo, ajuda muito a vida do administrador, mas > pensem o seguinte: [...] Coverity Prevent e Nessus abordam o problema de modos diferentes. O primeiro faz análise estática, ou seja, verifica a lógica do programa e detecta possíveis erros decorrentes dela. O segundo faz análise dinâmica, exercitando o software sob teste em busca de casos este não se comporte como deveria. Eis um exemplo. Suponhamos que eu tenha um código em C assim: #include <sys/types.h> #include <sys/socket.h> #define MAX_LISTENERS 10 [...] struct { int fd; struct sockaddr addr; } listeners[MAX_LISTENERS]; [...] int i, nlisteners; [...] if (nlisteners > MAX_LISTENERS) { nlisteners = MAX_LISTENERS; } for (i = 1; i <= nlisteners; i++) { bind(listeners[i].fd, &listeners[i].addr, sizeof(struct sockaddr)); } Uma ferramenta de análise estática é capaz de detectar que existe um erro "off-by-one" [1] no "for" *antes* da execução do programa. Uma ferramenta de análise dinâmica faria esse erro aparecer se passasse para o programa parâmetros que o fizessem tentar criar 10 sockets nos quais escutar. Mesmo assim este resultado seria inconclusivo pois o programa poderia morrer devido a um SIGSEGV [2] ou continuar rodando, erroneamente, dependendo dos dados que estivessem na memória logo em seguida do array "listeners". > O mesmo vale para análise de código C. uma variável usada de um jeito pode > ser perigosa, mas no seu cenário não. Então quem vai afirmar o quão perigoso > é o código alarmado pelo software é a equipe de segurança da empresa. Todo código errado é potencialmente perigoso. Somente uma equipe de segurança muito relapsa estaria disposta a ignorar um possível cenário sob a premissa de que "isso não vai acontecer". Se pode acontecer então o software está errado e deve ser consertado imediatamente. > Usar a resposta de um software simplesmente é ser muito simplista e > incompetente. Sim, se o software for simplista e incompetente. Este não é o caso do Coverity Prevent. Ele é uma ferramenta excelente cujos resultados, se bem utilizados, ajudam a tornar o software muito mais robusto e seguro. Referências 1. http://en.wikipedia.org/wiki/Off-by-one_error 2. man 3 signal -- Carlos A. M. dos Santos ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd