Auditoria segurança em linguagens de programação

30
Segurança em Linguagens de Programação Auditoria e Segurança de Sistemas de Informação

Transcript of Auditoria segurança em linguagens de programação

Page 1: Auditoria   segurança em linguagens de programação

Segurança em Linguagens de Programação

Auditoria e Segurança de Sistemas de Informação

Page 2: Auditoria   segurança em linguagens de programação

Programação

Introdução

Tratamento dos dados de entrada

Prevenção de ataque SQL Injection com Java

Vulnerabilidades da linguagem C

Vulnerabilidades da linguagem PHP

Referências

Page 3: Auditoria   segurança em linguagens de programação

Introdução

Page 4: Auditoria   segurança em linguagens de programação

Tratamento dos dados de entrada

Page 5: Auditoria   segurança em linguagens de programação

O que pode ocorrer de tão ruim se não tratar os dados de entrada?

Page 6: Auditoria   segurança em linguagens de programação

Como isso poderia ser solucionado?

Page 7: Auditoria   segurança em linguagens de programação

Expressões regulares!

Page 8: Auditoria   segurança em linguagens de programação

Prevenção de ataque SQL Injection

Page 9: Auditoria   segurança em linguagens de programação

Javaversões antigas

preparedStatement = connection.

prepareStatement("INSERT INTO Person

(name, email) VALUES ('" + person.

getName() + "', '" + person.getEmail() + "'");

preparedStatement.executeUpdate();

Page 10: Auditoria   segurança em linguagens de programação

Exemplo

Page 11: Auditoria   segurança em linguagens de programação

conn = pool.getConnection( );String sql = "select * from user where username='" + username +"' and password='" + password + "'";stmt = conn.createStatement();rs = stmt.executeQuery(sql);if (rs.next()) {loggedIn = true;

out.println("Successfully logged in");} else {

out.println("Username and/or password not recognized");}

Abertura para ataque

Page 12: Auditoria   segurança em linguagens de programação

Valor de parâmetro

username

select * from user where username='admin' OR '1'='1' and password=' '

Page 13: Auditoria   segurança em linguagens de programação

PrepareStatement implementação segura

preparedStatement = connection.prepareStatement("INSERT INTO Person (name, email, birthdate, photo) VALUES (?, ?, ?, ?)");preparedStatement.setString(1,person.getName());preparedStatement.setString(2, person.getEmail());preparedStatement.setTimestamp(3, new Timestamp(person.getBirthdate().getTime()));preparedStatement.setBinaryStream(4, person.getPhoto());preparedStatement.executeUpdate();

Page 14: Auditoria   segurança em linguagens de programação

SecurityManager

Page 15: Auditoria   segurança em linguagens de programação

O que é SecurityManager é uma classe que permite criar uma politica de segurança para acesso as classes ou metodos.

Page 16: Auditoria   segurança em linguagens de programação

Onde é utilizada Refaction

Page 17: Auditoria   segurança em linguagens de programação

O que houve Brecha permite a partir de um exploid o sistema ou processo ter acesso total aos arquivos.

Page 18: Auditoria   segurança em linguagens de programação

Vulnerabilidades da linguagem C

Page 19: Auditoria   segurança em linguagens de programação

Funções inseguras Strcpy e Strcat

Page 20: Auditoria   segurança em linguagens de programação

Abertura para injeção de código malicioso!

Page 21: Auditoria   segurança em linguagens de programação

Exemplo

Page 22: Auditoria   segurança em linguagens de programação

Exemplo

Page 23: Auditoria   segurança em linguagens de programação

Vulnerabilidades da linguagem PHP

Page 24: Auditoria   segurança em linguagens de programação

Vulnerabilidade baseada na permissão da execução de código malicioso à nvel

servidor!

Execução Remota de

Código

Page 25: Auditoria   segurança em linguagens de programação

Diretiva Register_globals

● Diretiva do PHP que controla a disponi- bilidade de variáveis "globais" em um script PHP.

Page 26: Auditoria   segurança em linguagens de programação

Exemplo

Page 27: Auditoria   segurança em linguagens de programação
Page 28: Auditoria   segurança em linguagens de programação

Arquivos IncludeMétodo ao qual um usuario malicioso pode obter o conjunto de senhas ou até mesmo redirecionar o arquivo para outro endereço.

Page 29: Auditoria   segurança em linguagens de programação
Page 30: Auditoria   segurança em linguagens de programação

Referências

LEVANDOSKI, Fausto. Análise de vulnerabilidades de um código escrito em C.

Universidade do Vale do Rios dos Sinos (UNISINOS), 2011.

WIKIPÉDIA. Expressão Regular. Disponível em: <https://pt.wikipedia.

org/wiki/Expressão_regular> Acesso em 24/01/2016

MERCES, Fernando. Especificações da linguagem C. Disponível em:

<http://www.mentebinaria.com.br/artigos/0x1c/0x1c-cspecs.html#1> Acesso em

24/01/2016

PAUL,Mano. Código (In)seguro. Disponível em:< http://www.las.ic.unicamp.

br/paulo/cursos/segc/mat.extra/isc-codigo.seguro.pdf>

http://insights.sei.cmu.edu/cert/2013/01/anatomy-of-java-exploits.html

VIEIRA, Diego. Principais Falhas de Segurança em PHP . Disponível em: <http:

//phpbrasil.com/artigo/cA6agoMO2lP/2/principais-falhas-de-seguranca-em-php>

Acesso em 24/01/2016.