Auditoria segurança em linguagens de programação

Post on 16-Jan-2017

138 views 6 download

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

Segurança em Linguagens de Programação

Auditoria e Segurança de Sistemas de Informaçã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

Introdução

Tratamento dos dados de entrada

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

Como isso poderia ser solucionado?

Expressões regulares!

Prevenção de ataque SQL Injection

Javaversões antigas

preparedStatement = connection.

prepareStatement("INSERT INTO Person

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

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

preparedStatement.executeUpdate();

Exemplo

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

Valor de parâmetro

username

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

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();

SecurityManager

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

Onde é utilizada Refaction

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

Vulnerabilidades da linguagem C

Funções inseguras Strcpy e Strcat

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

Exemplo

Exemplo

Vulnerabilidades da linguagem PHP

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

servidor!

Execução Remota de

Código

Diretiva Register_globals

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

Exemplo

Arquivos IncludeMétodo ao qual um usuario malicioso pode obter o conjunto de senhas ou até mesmo redirecionar o arquivo para outro endereç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.