Um nova abordagem em qualidade e segurança de software

0

É 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 certo número de falhas ou bugs até 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 um pedaço de código para realizar as operações definidas na sua especificaçã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ódigo que permite que sua especificação de operação possa ser comprometida por um ataque externo.
À 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 em 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

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.