News

LeadComm apresenta tendências em segurança da informação para o setor financeiro

CIGNA garante desenvolvimento seguro com Fortify SCA

LeadComm lança solução contra  vulnerabilidades em  bancos de dados

 
Eventos

ISSA Day - SP, 26/06

CIAB/Febraban 2008 - SP

GRC Meeting 2008 - Angra dos Reis, 14 a 17/08

 
Conteúdo

Qualidade e segurança em software: abordagem cumulativa versus absoluta

Diagnóstico de performance de aplicações distribuídas

Best Practices in Cyber Defense from the US Air Force

 
 




Qualidade e segurança em software: abordagem cumulativa versus uma abordagem absoluta
Cesar de Afonseca e Silva Neto*

Introdução
É muito comum se pensar que qualidade e segurança de software são coisas semelhantes ou mesmo um único aspecto da questão do desenvolvimento de aplicações. No entanto, em uma análise mais apurada, pode-se verificar que são dois aspectos muito distintos — a garantia de qualidade do software é um processo cumulativo, enquanto a segurança do aplicativo é absoluta.
Qualidade de software é cumulativa pois considera aceitável um certo número de falhas ou bugs até um certo ponto e, ainda assim, o aplicativo é considerado bom o suficiente para ser entregue ao usuário. A segurança do software, por outro lado, é absoluta já que qualquer vulnerabilidade existente no aplicativo pode se tornar aquela que causará um enorme prejuízo ou desastre.
Ferramentas que consigam identificar problemas de qualidade precisam ter um alto grau de precisão e ser, até certo ponto, completas. Mas, as ferramentas que ajudam a identificar problemas de segurança precisam ser, em primeiro lugar, completas, além de precisas. Adicionalmente, as ferramentas usadas para garantir a segurança das aplicações precisam possuir a capacidade de adaptação aos processos do ciclo de desenvolvimento de software das empresas.

Qualidade versus segurança
A qualidade do software tem sido uma preocupação constante e parte integral do processo de desenvolvimento desde que se começou a escrever linhas de programação. Mais recentemente, entretanto, desde que as aplicações começaram a ficar expostas para o “mundo exterior” através da Internet, extranets e das aplicações de comércio eletrônico, as empresas que trabalham com estes sistemas começaram a ficar, cada vez mais, preocupadas com a segurança de software. Para todos os que não estão familiarizados com o aspecto de segurança de software, pode parecer que qualidade e segurança são essencialmente a mesma coisa. Mas isso não é uma afirmativa verdadeira.
O problema de qualidade de software pode ser definido como a falha de umpedaço de códigopararealizar as operações definidas na suaespecificação. Essa afirmação pode abranger situações que vão de um usuário que acredita que a aplicação deveria funcionar de maneira diferente até a falha do software em responder a uma conexão de rede com um protocolo bem definido. Uma vulnerabilidade de segurança de software, em oposição a esta situação, pode ser definida como um recurso de códigoque permite quesuaespecificação de operação possa ser comprometida porumataqueexterno.
À primeira vista, pode parecer que um ataque externo pode se restringir a explorar problemas de qualidade existentes dentro do software e, conseqüentemente, problemas de qualidade e segurança do software seriam a mesma coisa. Na verdade, entretanto, a maior parte das vulnerabilidades de segurança é encontrada em códigos-fontes considerados aceitáveis do ponto-de-vista da qualidade. O código-fonte contendo vulnerabilidades teria se comportado de acordo com sua especificação se não tivesse nenhum outro problema que comprometesse sua operação.
Qualidade e segurança são parecidas sob este ponto-de-vista. Ambos são características ou atributos holísticos. Para qualquer sistema mais complexo é impossível se apontar para uma única faceta do aplicativo e determinar, a partir daí, a qualidade geral do sistema. Somente após a verificação do sistema como um todo é que se pode determinar o grau de qualidade.
Em relação à segurança de software, assim como no aspecto de qualidade, deve-se examinar o sistema como um todo. Mas, neste ponto, a compreensão das características holísticas de segurança e de qualidade se tornam divergentes. Essa afirmação se torna mais difícil quando se trata da segurança das aplicações. Tome-se, por exemplo, um sistema de e-commerce que utiliza o protocolo de segurança SSL (Secure Socket Layer) mais um sistema de autenticação e encriptação de três níveis. Usuários — e gerência do sistema — podem concluir que suas propriedades estão devidamente protegidas. Mas, se uma vulnerabilidade possibilitar a um hacker a realização de uma compra através do uso da conta de algum usuário simplesmente com a mudança de alguns dados  utilizados pelo cookie da sessão do sistema de comércio eletrônico, que se encontra escondido no navegador da vítima?
Com toda a certeza, esse sistema não é seguro e, espantosamente, esse tipo de vulnerabilidade foi identificado em milhares de sites de comércio eletrônico ao longo dos últimos anos e ainda pode ser detectado em diversos e bem conhecidos sites de e-commerce nos dias de hoje. Segurança é um item essencialmente invisível para praticamente todo mundo, com exceção dos hackers, na medida que baixa qualidade torna-se facilmente perceptível e o software ainda traz um outro problema, mais insidioso: as aplicações geralmente apresentam “recursos de segurança” como login e criptografia que dão a falsa sensação de segurança e escondem os riscos que existem no sistema. O resumo da história é o seguinte: qualidade é cumulativa, mas segurança precisa de uma abordagem absoluta.

Conclusão
Não se deve ter a menor dúvida de que conceitos como qualidade e segurança de software não são a mesma coisa e nem sinônimos, quando se trata do desenvolvimento de aplicações. Qualidade é cumulativa, enquanto segurança é absoluta. Isso torna, conseqüentemente, essencial que ferramentas de segurança consigam detectar todas as vulnerabilidades existentes nos sistemas, já que ferramentas para lidar com problemas de qualidade de software não são adequadas para a finalidade. Para enfrentar, de forma adequada, o desafio apresentado pela questão de segurança aponta para o uso, pelas empresas, de ferramentas de checagem de segurança que consigam verificar o código-fonte do início ao fim, de forma a identificar vulnerabilidades nas aplicações.
Por fim, também é fundamental entender que as soluções de segurança não são a panacéia universal para todos os problemas de vulnerabilidade dos sistemas. Nenhuma solução isolada pode erradicar todas as vulnerabilidades de uma aplicação, de uma só vez. O caminho para se conseguir atingir uma relativa segurança “completa” é o uso das ferramentas de segurança nas diversas fases do ciclo de desenvolvimento de software, da definição do sistema à sua produção.

* Cesar de Afonseca e Silva Neto é diretor-geral da LeadComm, distribuidorexclusivo das soluções de segurança da Fortify Software no Brasil. A Fortify é uma das principaisempresas mundiais na área de segurança da informação e é responsávelpelalinha de soluções Fortify SCA, Tracer, Defender e Manager, que permitem auditoria, rastreamento, “blindagem” e gerenciamento das vulnerabilidades presentes no código-fonte das aplicações.