A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Carlos Alberto Felippi Lucas Ricardo Rafael Schadeck

Apresentações semelhantes


Apresentação em tema: "Carlos Alberto Felippi Lucas Ricardo Rafael Schadeck"— Transcrição da apresentação:

1 Carlos Alberto Felippi Lucas Ricardo Rafael Schadeck
ANÁLISE DAS TÉCNICAS DE PROGRAMAÇÃO SEGURA EM C E JAVA, COM ênfase em Buffer Overflow. Carlos Alberto Felippi Lucas Ricardo Rafael Schadeck

2 Relevante OBJETIVO: Analisar as técnicas de programação segura em C e Java, definindo conceitos e as técnicas de programação e suas utilizações em casos, com ênfase em Buffer Overflow afim de definir boas práticas para o desenvolvimento. JUSTIFICATIVA: Um meio de verificar uma programação segura é conhecer os sistemas, e desta forma analisar o melhor meio de evitar possíveis erros indesejados na programação. Porém, cada sistema possui suas características, sendo assim é importante analisar cada sistema, C e JAVA, dentro de suas características. Cada técnica demonstrada será destacada dentro de seu contexto operacional, de forma que a implementação dos códigos posam ser os mais seguros possíveis evitando transtornos como os Buffer Overflow.

3 Introdução Programação Segura Buffer Overflow C & JAVA Técnicas

4 Definições de C Unix Baixo e alto nível e linguagem compilada
Imperativa e procedural Structs

5 Técnicas de programação segura em C
03 principais princípios: Integridade; Robustez; Segurança. 03 vulnerabilidades Dangling pointers; Double free. Buffer overflow;

6 Técnicas para melhorar a segurança dos códigos em C
Cuidado com “gets” e “scanf”; Reutilize seu código; Facilite seu código; Clean code; Criptografia; Só apague o que você conhece; Teste e deixe testar; Auditoria de segurança; Setuid;

7 Caso comentado

8 Análise das implementações em C
Técnicas; Planejamento;

9 Comparativos e pontos a serem considerados em C
Princípios; Técnicas; Ferramentas; Objetivo;

10 Definição de JAVA Sun Microsystems, 1995 Linguagem própria
Notebooks, desktops, tablets, celulares, smartphones e diversos outros sistemas embarcados JVM JRE JDK

11 Técnicas de programação segura em JAVA
OWASP (The Open Web Application Security Project) Cross-Site Request Forgery Command Injectionl Buffer Overflow

12 Técnicas de programação segura em JAVA
Command Injection

13 Técnicas de programação segura em JAVA
Buffer Overflow

14 Conclusões casos JAVA Seguro; Fácil; Organizado; Leitura; Manutenção;

15 Definição de Buffer Overflow
1515 Definição de Buffer Overflow Memória Inundação Quantidade de dados maior do que se possa conter Estático ou Dinâmico Recebe mais dados do que está preparado Variável nome A B Valor [] 1979 Valor hexadecimal 00 07 BB Variável nome A B Valor 'e' 'x' 'c' 's' 'i' 'v' 25856 Valor hexadecimal 65 78 63 73 69 76 00

16 Normas e boas práticas de programação segura
1616 Normas e boas práticas de programação segura Em JAVA tipos de prática: FAÇA Sempre classifique os atributos de uma classe como private. Defina políticas para detalhar os privilégios de acesso a objetos de classes ou a applets específicos com base em arquivos fonte e/ou assinaturas. EVITE Evite ao máximo o uso de atributos static. Esse tipo de atributo é alocado à classe e não ao objeto e desse modo pode ser localizado por qualquer outra classe. NÃO FAÇA Não use o tipo String para armazenar senhas, mesmo temporariamente, pois esse tipo de variável é immutable, e seu valor será mantido na memória até a próxima operação. Use o tipo char[] e sobrescreva o valor da variável assim que possível. Nunca armazene senhas ou outras informações secretas diretamente no código.

17 Normas e boas práticas de programação segura
1717 Normas e boas práticas de programação segura Boas práticas em C: 1. Sempre escolha nomes significativos para variáveis, funções e procedimentos. 2. Mantenha a documentação concisa e descritiva. 3. Lembrar que o tempo de leitura e compreensão de um programa é muito maior do que o tempo para escrevê-lo. A leitura do programa deve ser o mais fácil possível. 4. As três de estruturas de controle em programação são: · sequência · seleção · repetição 5. Cada subprograma (função ou procedimento) deve fazer uma única tarefa e deve fazê-la corretamente. 6. Inclua comentários

18 Normas e boas práticas de programação segura
1818 Normas e boas práticas de programação segura Normas sobre Programação em C/C++: 1. Todo comando em C/C++ termina com um ponto-e-vírgula (;). 2. Alinhe um { na mesma coluna que seu } correspondente. 3. Todo programa C/C++ inicia sua execução no programa principal, denominado main. 4. Ao utilizar qualquer estrutura de seleção ou repetição, por exemplo, comandos de seleção (if, switch) ou de repetição (for, while, do-while), desloque dois espaços para a direita (indentation) os comandos contidos neles. 5. O comando break usado nos comandos while, for, do/while, ou switch causa a saída imediata dessas estruturas para o próximo comando. 6. O comando continue usado nos comando while, for, do/while faz com que o controle do programa passe para o próximo passo da iteração. 7. Evite usar somente letras maiúsculas. 8. Colocar um ponto-e-vírgula logo após um comando de seleção ou repetição constitui um erro.

19 Como evitar o Buffer Overflow
1919 Como evitar o Buffer Overflow Construção de um bom projeto estrutural de programação Atentando as condições de testes e homologações de todos os tipos de diferentes ambientes, testes em várias plataformas Estar em dia com atualizações e patchs de segurança (remendo em inglês), servem para adicionar recursos ou corrigir erros em alguns programas. Não devemos depender exclusivamente das boas práticas de programação dos desenvolvedores Técnicas que ajudam a melhorar a segurança dos programas: Melhores práticas de programação: - Proteção pelo sistema operacional - Proteção pelo compilador - Verificações na altura da execução - Invalidar a execução de código na pilha

20 Análise Buffer Overflow
2020 Análise Buffer Overflow Normas Cuidados na construção do código Identificar um código fonte seguro Análise dos códigos Testes de requisitos Prevenir ataques Conhecer as ferramentas

21 Boas Práticas Programação defensiva
2121 Boas Práticas Programação defensiva Não existe um sistema totalmente seguro Dicas: Não complique seu código Faça auditoria de segurança Todo dado é importante Todo código é inseguro A experiencia e conhecimento são importantes na melhor qualidade

22 ?

23 Referencias “Buffer Overflow”,  “Crimes Cibernéticos: Entendendo o Buffer Overflow”, buffer-overflow.html.  “developerWorks : Introdução a Programação Java”, CT801, 4 de junho de 2012,  “file.pdf”, teorica/at_download/file.  “G2T6-secur.program-final.pdf”, final.pdf.  “Microsoft Word rtf pdf”,  “O que é um Buffer Overflow ?”, Under-Linux.Org,   “Programação Segura: Uma Introdução à Auditoria de Códigos - gts slides-progsec-gts2004.pdf”, ftp://ftp.registro.br/pub/gts/gts0204/gts slides-progsec-gts2004.pdf.  Sandro Süffert, “Segurança - blog.suffert.com: Portal Brasileiro de Programação Segura Java”, SSegurança - blog.suffert.com,  “Tomando o controle de programas vulneráveis a buffer overflow”, developerWorks : Introdução a Programação Java. CT801. Segurança (guia de programação C#). de-programacao-c Segurança no desenvolvimento de sistemas em Java. Acesso em: 22 ago


Carregar ppt "Carlos Alberto Felippi Lucas Ricardo Rafael Schadeck"

Apresentações semelhantes


Anúncios Google