Sie sind auf Seite 1von 42

Anlise e Desenvolvimento de Sistemas

4 semestre Turma B
Aula n 7
Prof. Paulo Rangel
paulo.rangel@tyaro.com.br
Segurana e Auditoria de Sistemas
Segurana e Auditoria de Sistemas

Alerta sobre o cronograma de aulas
16/04/2014 Prova de Avaliao Continuada
30/04/2014 Apresentao de Seminrio
30/04/2014 Entrega da Resenha do Livro
Lembrar que o cronograma de aulas pode ser alterado pela FMU ou pelo
Professor.
Segurana e Auditoria de Sistemas

Segurana e Auditoria de Sistemas

Contedo Previsto
Segurana no Ciclo de Vida de Desenvolvimento da Aplicao.
Acompanhamento das tarefas bsicas do projeto. Boas
prticas.
Segurana da Aplicao Garantia
Mtricas de Segurana. Monitorao das vulnerabilidades.
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Recomenda-se a adoo de um mtodo de desenvolvimento bem
definido, que no mnimo, possua as atividades de Planejar,
acompanhar as tarefas bsicas do projeto e definir milestones para
checagem. O CMMI, o RUP ou o PMBOK, entre outros, podem
ser adotados.

Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Padres de Desenvolvimento:
Visam melhorar a estrutura interna de um programa dando:
Melhor legibilidade do cdigo,
Padronizao da codificao,
Documentao interna organizada,
Codificao flexvel e reutilizvel,
Facilidades na manuteno,
Maior produtividade,
Rapidez no desenvolvimento,
Aumento da qualidade de cdigos e
Facilidades na identificao de erros.
Tais padres devem ser aplicados tambm nas etapas de
manuteno e testes.

Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Boas Prticas de Programao:
Mesmo sem se considerar a segurana
em si, garantem um cdigo mais
robusto, confivel e, desta forma mais
seguro;
Cdigo seguro escrito para enfrentar
atacantes maliciosos;
Por vezes, cdigo seguro implica em
queda de desempenho na aplicao, o
que deve ser compensado por
equipamentos mais poderosos;
Segue nos prximos slides algumas
recomendaes que so consenso entre
diversos autores:

Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Criar funes intrinsicamente seguras:
Segundo Lyra, devem checar os dados de entrada
para impedir perda de controle do sistema, falhas
gerais de proteo ou outros tipos de falhas. Foco o
estouro de buffer (buffer overflow)
Usar funes intrinsicamente seguras:
Como exemplificado por Lyra, uma funo
intrinsicamente insegura a strcpy (em C e
C++) que faz a cpia de uma string recebendo
como parmetros os dois ponteiros e copia todo o
contedo, de um para o outro, at encontrar 0
(zero), caso isso no ocorra, podemos rejeitar o
comando ou o contedo.
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Testar o retorno de funes:
O retorno de funes precisam ser
verificados e for possivelmente
suspeito, deve-se dar um tratamento
dentro da perspectiva de segurana.
Documentar funes corretamente:
Evitam-se mal-entendidos a respeito
da interpretao do seu uso.
Tratar as entradas de dados:
Feitas pelos usurios ou por outro
sistema devem ser validadas, mesmo
que todas as funes sejam
intrinsecamente seguras. Identificar
caracteres especiais evitam ataques
como SQL Injection.

Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Ter uma poltica de verso consistente:
Seja por Gerenciamento de Configurao ou por backup,
facilita a identificao de problemas e melhora o resultado final.
Podem ser adotadas solues de software tipo VCS (version
control system) ou SCM (source code management), p.e.: Entre os
mais comuns encontram-se as solues livres: CVS, Mercurial, Git
e SVN; e as comerciais: SourceSafe, PVCS (Serena) e ClearCase.
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
VCS (version control system) ou SCM (source code management),
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
VCS (version control system) ou SCM (source code management),
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
VCS (version control system) ou SCM (source code management),
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
VCS (version control system) ou SCM (source code management),
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
VCS (version control system) ou SCM (source code management),
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
Usar componentes e bibliotecas
confiveis:
Deve-se assegurar, por meio de testes
de segurana, que as bibliotecas
utilizadas no comprometem a
segurana do sistema.
Evitar informaes sensveis em
arquivos temporrios:
Em geral, os arquivos temporrios no
recebem cuidados rigorosos quanto a
segurana. Usa-lo com dados sensveis,
fragiliza a segurana da aplicao.
Segurana no Ciclo de Vida de
Desenvolvimento da Aplicao
No armazenar Senhas e Chaves criptogrficas
no cdigo:
Se armazenadas em cdigo, podem ser reveladas
por engenharia reversa. O seu armazenamento,
bem como os algoritmos utilizados devem ser
objetos de analise criteriosa.
Operar com o Privilgio Necessrio:
Operar com privilgios limitados ao estritamente
necessrio, reduz o impacto em caso de falhas
srias, como p.e., estouro de buffer.
Tratar todas as entradas do sistema como no
segura:
Todos os dados de entrada, independente de sua
origem, devem ser verificados quanto a sua
integridade e consistncia.
Garantia da Segurana da Aplicao

Kent Beck, citado em Lyra, afirma que:
O desenvolvimento dirigido a teste parte do pressuposto de que
se o cdigo for bem escrito, mais chance ele ter de ser bem
sucedido. O desenvolvimento dirigido a teste ajuda a enfocar o
fator correto no momento oportuno, de forma que se possa criar
design limpo, aperfeioando-o progressivamente.
Garantia da Segurana da Aplicao

Testes de Software

Garantia da Segurana da Aplicao

Testes de Software
Histrico dos testes de software:
Antes de 1990
Realizado no final do desenvolvimento
pelos desenvolvedores;
No haviam tcnicas e metodologias
estruturadas;
Buscava-se avaliar se o sistema
funcionava e encontrar erros.
Em 1979
Glenford Myers em seu livros destaca
que testar era procurar defeitos e no
provar que o sistema funcionava.

Garantia da Segurana da Aplicao

Em 1988
David Gelperin e Bill Hetzel,
descrevem um processo de evoluo
de testes, chamado de Plano de
Testes;
O Plano de teste, deveria ser escrito a
partir dos requisitos do sistema,
buscando reduzir o nmero de
defeitos, estabelecendo objetivos a
serem atingidos pelos desenvolvedores
durante as atividades de testes.
Com o tempo, embora integrados, os testes
passaram fazer parte de um processo
independente do desenvolvimento.


Garantia da Segurana da Aplicao

O modelo de realizao de
testes em todas as etapas do
desenvolvimento, busca garantir
padres, qualidade e segurana
do produto final;
Foca em reduzir erros no
desenvolvimento, agindo desde
o inicio, ainda nos requisitos,
at na fase de homologao do
produto.
Os testes podem ser divididos
basicamente em verificao e
validao:

Garantia da Segurana da Aplicao

Testes de verificao:
Avaliao de documentos e informaes
coletadas em cada fase do
desenvolvimento do sistema:
Verificar requisitos
Verificar a modelagem funcional
(requisitos esto includos)
Verificao da modelagem interna (reflete
a modelagem interna)
Verificao de cdigo (obedecem padres
e normas)


Garantia da Segurana da Aplicao

Testes de validao:
Avaliao do sistema ou seus
componentes, visando garantir a
qualidade do produto final:
Validao da unidade (unidades de
software completas com todas as linhas
de cdigo)
Validao da Integrao (componentes
de software no apresentem erro quando
integrados)
Validao de funcionalidade
(comportamento do software de acordo
com os requisitos funcionais )



Garantia da Segurana da Aplicao

Testes de validao:
Validao de sistemas (Identificar erros no
funcionais. Testar recursos tecnolgicos)
Carga e Stress (Limite mximo que o
software suporta)
Configurao (Testar as configuraes de
hardware e software)
Segurana (Formas de quebra de
segurana do software)
Desempenho (Situao normal e pico
esto dentro dos requisitos)
Confiabilidade e disponibilidade (Medidas)
Recuperao (comportamento aps
ocorrncia de erro ou condies anormais

Garantia da Segurana da Aplicao

Testes de validao:
Validao de usabilidade (acesso,
navegao, clareza e terminologia
dentro das especificaes)
Validao de Aceite (Cliente executa
testes para validar funcionalidade,
usabilidade e sistemas mitigando
problemas na entrada em produo)
Os mtodos de testes so:
Mtodo caixa-branca Busca
identificar problemas nas estruturas
internas dos programas.
Mtodo caixa-preta Garantir que os
requisitos de negcios esto atendidos.
Garantia da Segurana da Aplicao

http://qtsw.wordpress.com/tipos-de-testes-de-software/
Garantia da Segurana da Aplicao

Modelos de avaliao de maturidade dos processos de testes:
TPI Test Process Improvement (Europa)
TMM Test Maturity Model (EUA)
TCMM Test Capability Maturity Model (EUA)
Garantia da Segurana da Aplicao

Gesto do Desenvolvimento de
Software Seguro:
Implantar um processo de qualidade um
passo importante para chegarmos a um
software seguro, embora o primeiro no seja
pr-requisito e o nem o segundo consequncia.
O que no pode se controlar, no pode ser
medido.
Mtrica de custos, tempo e prazo, so comuns
na Engenharia de Software, as mtrica de
Segurana ainda so pouco utilizadas.
Deve ser acompanhada a questo da ocorrncia
de incidentes e divulgao da vulnerabilidade
com as respectivas correes.
Garantia da Segurana da Aplicao

Mtrica de Segurana:
Dois tipos de mtricas
podem ser adotadas:
No Nvel de Cdigo
Nmero de bugs
encontrados ou corrigidos
de uma verso para outra
No Nvel de Sistema
Nmero de vezes que um
sistema citado nos avisos
de sites como CERT,
MITRE Common
Vulnerabilities and Exposures e
Microsoft Security Bulletins

Garantia da Segurana da Aplicao

Superfcie de Ataque:
Considera aes do sistema
externamente visveis aos usurios
com os recursos do sistema
acessados ou modificados por cada
ao;
Quanto maior a superfcie de
ataque, maiores as chances de
ataques com sucesso.
Prope reduzi-la e assim melhorar a
segurana do sistema, atravs:
Reduzir a quantidade de cdigos em
execuo (Regra 80/20)
Reduzir o acesso a pontos de entrada
no confiveis. Reforar os princpios e
critrios de autenticao;
Garantia da Segurana da Aplicao

Superfcie de Ataque:
Reduzir privilgios para limitar o potencial de dado;
Caminhos de cdigo annimo. (Analise do DFD ou diagramas de interao da UML,
identificar pontos de entrada e refora-los);
Reduzir a superfcie de ataque preventivamente. Registrar na fase de projeto em um
documento especifico.
Medir a superfcie de ataque e medi-la durante o desenvolvimento;
Quanto maior a superfcie de ataque maior o trabalho de segurana. Se isso for inevitvel,
o cdigo deve ser de boa qualidade , conservador e defensivo.

Garantia da Segurana da Aplicao

Outras Mtricas:
Trabalhos desenvolvidos com foco nas vulnerabilidades de um
sistema como uma medida de segurana:
Brocklehurst, citado por Lyra, mede a segurana operacional
de um sistema estimado o esforo despendido por um
atacante para descobrir uma brecha de segurana e o
beneficio obtido a partir dela.
Voas, citado por MANADHATA, props o MTTI Minimum
Time To Intrusion (Tempo Mnimo para Intruso). Mtrica
baseada no tempo estimado antes de qualquer intruso. Para o
clculo MTTI, se requer conhecimento sobre as
vulnerabilidades do sistema.
Garantia da Segurana da Aplicao

Monitorizao de Vulnerabilidades:
Todo comportamento fora do normal deve ser registrado e analisado para que possa ou
no ser considerado como um incidente de segurana. Este procedimento deve fazer
parte da politica de segurana.





Garantia da Segurana da Aplicao

Divulgao de Vulnerabilidade:
Modelo de documento que descreva detalhadamente a vulnerabilidade (Exemplo, boletim
de vulnerabilidades da Microsoft) com divulgao automtica para toda base instalada /
usurios.
Garantia da Segurana da Aplicao

Resposta a Incidentes:
Ter um grupo responsvel por receber, analisar e responder as notificaes
e atividades relacionadas a incidentes de segurana em computadores;
CSIRT Computer Security Incident Response Team- Grupo de Resposta a
Incidentes de Segurana;
Pode atender uma empresa, um rgo governamental ou uma organizao
acadmica;
Deve ocorrer a troca de experincia e integrao entre diversos CSIRTs.
Garantia da Segurana da Aplicao

CSIRT Computer Security Incident Response Team
http://www.enisa.europa.eu/activities/cert/support/guide2
Garantia da Segurana da Aplicao

CSIRT Computer Security Incident Response Team
http://www.microsoft.com/security/msrc/whatwedo/history.aspx
REFERENCIAS

LYRA, M. R. Segurana e auditoria em sistema de infomaro. 1
Edio. Rio de Janeiro: Cincia Moderna, 2008
KROLL, Josiane. Um modelo conceitual para especificao da
gesto de riscos de segurana em sistemas de informao. Santa
Maria RS, UFSM: 2010. Dissertao de mestrado em engenharia de
produo. Disponvel em <
http://cascavel.cpd.ufsm.br/tede/tde_arquivos/12/TDE-2010-06-
08T143755Z-2677/Publico/KROLL,%20JOSIANE.pdf >. Acesso em 14
set 2012.
MANADHATA, P.K. KAYNAR, D.K., WING, J.M. A Formal Model for
A Systems Attack Surface. Pittsburgh, PA: Carnegie Mellon University,
2007 http://www.dtic.mil/dtic/tr/fulltext/u2/a476799.pdf acesso em
16/09/2012.
Glossrio

PMBOK (Project Management Body of Knowledge) um conjunto de
prticas em gerenciamento de projetos, publicado pelo PMI - Project
Management Institute e constitui a base do conhecimento em gerenciamento de
projetos do PMI. Estas prticas so compiladas na forma de um guia,
chamado de o Guia PMBOK.
SQL Injection, uma tcnica utilizada, por exemplo, para atacar bases de
dados atravs de um site. Isto feito atravs da incluso de instrues SQL
em um campo de entrada de formulrio web em uma tentativa de obter que
o site passe um comando SQL para o banco de dados (por exemplo,
disponibilizar o contedo do banco de dados para o atacante). Ela explora
uma vulnerabilidade de segurana no software do site. A vulnerabilidade
acontece quando a entrada do usurio no adequadamente validada.

Glossrio

VCS (version control system) ou SCM (source code management), um software
com a finalidade de gerenciar diferentes verses no desenvolvimento de um
documento qualquer. Esses sistemas so comumente utilizados no
desenvolvimento de software para controlar as verses histrico e
desenvolvimento - dos cdigos-fontes e documentao.
Presente em empresas e instituies de tecnologia e de software, tambm so
comuns no desenvolvimento de software livre. Entre os mais comuns
encontram-se as solues livres: CVS, Mercurial, Git e SVN. Muitas empresas
preferem solues comerciais em razo da garantia, optando pelo ClearCase
(IBM) ou SourceSafe (Microsoft).
Controle obrigatrio para Certificaes, por exemplo, CMMI.
Segurana e Auditoria de Sistemas

DVIDAS