ATPS de Desenvolvimento de Software Seguro ( Cristiano )
TIVIDADES PRTICAS SUPERVISIONADAS ATPS
Etapa 1
Atividade para compreenso da utilizao de recursos seguros no desenvolvimento de solues computacionais.
SUMRIO
1 O DESAFIO............................................................
2 ETAPA 1.......................................
2.1 RELATRIO 1...............................
2.2 RELATRIO 2...............................
3 REFERNCIAS..............
1 O DESAFIO
O processo de desenvolvimento de software aborda diversas prioridades para produzir um produto com excelncia, para atender aos requisitos de seus usurios, interface inteligente e intuitiva, boa usabilidade, alm de implementar requisitos de Segurana da Informao. A Segurana da Informao visa garantia da integridade e confiabilidade de sistemas e dados de uma organizao, evitando que informaes importantes sejam danificadas ou acessadas de forma indevida. Para evitar problemas de Segurana da Informao, h diversos conceitos e tcnicas a serem utilizados no desenvolvimento de softwares seguros. Essas tcnicas so utilizadas tanto nas fases de projeto e anlise do sistema quanto na sua implementao. No desafio proposto, verifica-se a situao em que uma empresa de desenvolvimento de software sofreu diversos ataques em seus sistemas de informaes, esses ataques causaram vrios prejuzos materiais, comprometendo sua credibilidade no mercado de softwares. Para corrigir as falhas de segurana dos sistemas, essa empresa contratou uma equipe de consultores para auxili-la. Essa equipe tem como objetivo identificar e corrigir possveis falhas de segurana nos sistemas da empresa e implantar os conceitos de desenvolvimento de software seguro desde as primeiras fases de criao de seus Sistemas de Informaes. Escopo: Relatrio 1: Desenvolvendo Softwares Seguros. Relatrio 2: Evitando Estouro de Buffer.
2 PRINCIPIOS DE SEGURANA DE SOFTWARE
Na fase de requisitos:
Economia de mecanismos: Manuteno do desenho simples e menos complexo
Na fase de projeto:
Proteo do ambiente de desenvolvimento: Proteger o ambiente de desenvolvimento para que no "vaze" informaes importantes referente ao processo de desenvolvimento do software.
Na fase de implementao:
Validao de segurana na aplicao desenvolvida: Restringir acesso as informaes contidas no software.
Na fase de Testes:
Mnimo de privilgios:Direitos mnimos e acesso a usurios explicitamente concedidos
Na fase de manuteno:
Padres de falhas seguras:Acesso negado por padro, e garantido explicitamente
3 ETAPA 1
2.1 RELATRIO 1: DESENVOLVENDO SOFTWARES SEGUROS
O fato de que dados/informaes representam algo invisvel, abstrato, colabora para que a maioria das empresas no os considere algo a ser protegido - embora, curiosamente, dependam deles para sobreviver. Outro argumento de que segurana da informao no gera receita direta. Contudo, investir em segurana da informao importante. So custos justificados quando levados em conta os benefcios agregados. necessrio cuidar das informaes de uma empresa porque o conjunto destas forma um bem de grande valor. Como em um seguro de veculos, onde a relao entre o custo da aplice e o prejuzo evitado no caso de ocorrer um sinistro, segurana da informao tambm vale o quanto pesa.
O sucesso de um programa de segurana da informao reside em se tomar uma posio preventiva contra as ameaas e riscos de segurana, reduzindo os pontos vulnerveis para evitar que estas fraquezas sejam utilizadas contra a organizao. Profissionais da rea de segurana da informao esto sempre sob a constante presso de ter que demonstrar que projetos de segurana produzem retorno sobre investimento, ou seja, que a execuo de projetos de segurana da informao trar algum benefcio financeiro para a empresa. Entretanto, a natureza das atividades relacionadas segurana da informao faz com que projees financeiras desse tipo tornem-se, no mnimo, difceis de serem realizadas. A atual moda entre fornecedores de equipamentos e prestadores de servio relacionados segurana da informao de que projetos nessa rea geram retorno claro sobre seu investimento. Adicionalmente, a lgica imediatista sugere que agora que a segurana da informao est ganhando ampla aceitao como um importante aspecto do negcio, o prximo passo seria haver algum tipo de clculo ou projeo de retorno que justifique seu investimento em termos negociais. Se os empresrios (ou patrocinadores de um projeto de segurana da informao) passarem a adotar esse conceito, eles contaro com algo que simplesmente no existe em sua essncia. Os resultados esperados so geralmente calculados com base na preveno de alguns futuros eventos hipotticos que, se viessem a ocorrer, teriam alguma implicao financeira igualmente hipottica. Os benefcios so muito tericos e incertos para que as empresas possam lev-los a srio como justificativa de investimento por si s. Portanto, no se deve investir em segurana da informao tendo como objetivo ganho financeiro, mas para se impedir que o ganho financeiro que a empresa obtm a partir de sua atividade fim no fique comprometido devido ocorrncia de um incidente de segurana que tenha comprometido as informaes de que necessita para conduzir seus processos de negcio.
A segurana, assim como todas as outras reas de TI, deve ser ampla e holstica. Para alcanar este objetivo, as organizaes devem iniciar com uma estrutura de polticas bsicas sobre a qual todas as outras reas se apoiaro. Todos os componentes de um programa de segurana devem aderir a essa estrutura.
Princpios de Segurana da Informao em um contexto de desenvolvimento de software:
- confidencialidade: proteger informaes contra sua divulgao para algum no autorizado, dentro ou fora da empresa. Na fase de projeto, salutar que a documentao de requisitos, que contm informaes de todos os processos de negcio envolvidos, seja utilizada somente pela equipe do projeto e para fins especficos. A equipe (interna ou da empresa contratada) deve se responsabilizar pela confidencialidade dos documentos. Na fase de desenvolvimento, cuidar para que o cdigo-fonte, bem como tudo o que produzido pela equipe de desenvolvimento, fique nos domnios da empresa. Estudar a viabilidade do uso de criptografia. As aplicaes que sero acessadas externamente no devem expor informaes confidenciais da empresa. Quando da implantao, enfatizar o uso consciente das informaes em manuais de utilizao e processos de treinamento.
- disponibilidade: garantir os servios prestados pelo sistema sempre que forem solicitados. Na fase de projeto, analisar de maneira ampla os pontos de fragilidade das aplicaes. Na fase de desenvolvimento, tratar excees a fim de contornar possveis problemas. Testes de stress so importantes. Na implantao, viabilizar solues de contingncia e recuperao de dados.
- integridade: controlar modificaes em informaes proprietrias. No desenvolvimento, atentar para o acesso aos bancos de dados, que deve ser efetuado de forma a no comprometer qualquer elemento do fluxo de dados. A utilizao de um Sistema de Gerenciamento de Banco de Dados (SGBD) bem configurado imprescindvel. Com o sistema em funcionamento, verificar periodicamente o log de alteraes de objetos crticos.
- autenticidade: identificar corretamente todo e qualquer elemento em um sistema de informao (usurio, equipamento, etc.). Na fase de projeto, definir com critrio o papel de cada ator em cada processo para estruturar os perfis de acesso ao sistema. Na implantao, envolver a equipe de comunicao da empresa na organizao de campanhas de conscientizao para a segurana da informao.
- conformidade: cuidar para que nenhum recurso tecnolgico esteja em desacordo com a legislao vigente. Na fase de projeto, alinhar junto aos gestores de direito, tributos e auditoria quais requisitos devem ser respeitados no desenho do software.
2.2 RELATRIO 2: EVITANDO ESTOURO DE BUFFER
Estouros de buffer ocorrem quando um processo tenta armazenar dados fora dos limites de um buffer de comprimento fixo. Quando isso acontece, todos os tipos de comportamento errticos do sistema podem ocorrer e alguns podem ser prejudiciais para a segurana do sistema. O resultado que os dados extras sobrescrevem os locais da memria adjacente. Os dados sobrescritos podem incluir outros buffers, variveis, dados de fluxo do programa, etc. Sobrescrever esses dados pode causar problemas como comportamento errtico de programas, excees de acesso de memria, finalizao/travamento de programas, resultados retornados incorretamente ou uma quebra de segurana. Estouros de buffer causam muitos defeitos de software e, portanto, so a base de exploraes dolosas. Sistemas C/C++ so especialmente propensos a estouros. Eles no fornecem nenhuma proteo para parar o acesso aos dados em qualquer parte da memria e no verificam automaticamente se os dados gravados em uma matriz de buffer interna esto dentro dos limites dessa matriz. Por isso voc deve sempre suportar um sistema que execute verificao de limites por voc ou pelo compilador e o tempo de execuo. A causa dos estouros a manipulao incorreta de memria de dados/instrues em um cdigo-fonte, principalmente em strings e estruturas de dados dinmicas. Shellcode (instrues que podem ser executadas enquanto outro programa est rodando) uma porta para o controle de aplicaes vulnerveis. Solucionar problemas causados por estouros de buffer uma tarefa rdua. Alterar trechos de cdigo perigosos, utilizando bibliotecas seguras, ou optar por linguagens de programao com auto-proteo contra acessos indevidos. Tambm possvel efetuar configuraes no kernel do sistema operacional para que o buffer seja parcialmente inutilizado. Outra ao instalar patches de proteo de memria (OpenWall, Pax, etc.).