• Nenhum resultado encontrado

Lidando com Armazenamento de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Lidando com Armazenamento de Dados"

Copied!
29
0
0

Texto

(1)

1 Universidade Positivo

Lidando com Armazenamento de Dados

(2)

Armazenamento de Dados

A grande maioria das aplicações possuem algum mecanismo para armazenagem de dados

Dados de usuários Permissões

(3)

3 Universidade Positivo

Injeção em Contextos Interpretados

Muitas das ferramentas utilizadas para comunicação com repositórios de dados são interpretadas

Ex.: SQL, LDAP

Exposição a vulnerabilidades do tipo Code Injection

Geralmente uma injeção de código pode ser feita devido a uma falha de validação de input

(4)

Exemplo com SQL

No exemplo, se a consulta retornar um resultado, é

considerado que o usuário existe no banco de dados com aquele login e senha

Login efetuado com sucesso Observações

Em SQL, strings devem ficar entre aspas simples (‘)

Comentários no código sql são adicionados pela sequência -- ou # dependendo do SQBD

SELECT * FROM users WHERE

username = ‘meuLogin’ and password = ‘senha’

(5)

5 Universidade Positivo

Exercício

Considere o exemplo do slide anterior e descreva possíveis formas de se passar pelo sistema de login considerando:

Que você sabe que existe um usuário de login Alice, mas que você não sabe a senha

Que você não possui nem o login nem a senha de nenhum usuário

Você pode utilizar uma das seguintes aplicações demo para fazer seus testes:

http://www.codebashing.com/sql_demo http://sqlzoo.net/hack/

Obs.: No interpretador da aplicação # ou -- representa um comentário

(6)

Exercício

Dependendo da sequência que digitarmos nos campos de entrada, obtemos uma mensagem de erro.

Ex.: user name: '#sadsad O que isso nos revela?

(7)

7 Universidade Positivo

Exercício

Dependendo da sequência que digitarmos nos campos de entrada, obtemos uma mensagem de erro.

Ex.: user name: '#sadsad O que isso nos revela?

Uma string incorreta foi capaz de gerar um erro no sistema Logo, o sistema está interpretando comandos dessa string Não conseguimos burlar a segurança, mas estamos no caminho certo!!!

(8)

Exercício

Algumas soluções

Inserir no campo “User Name” o valor usuario1234’-- Inserir qualquer coisa na senha

SELECT * FROM users WHERE username = 'usuario1234'--' AND password = 'foo'

(9)

9 Universidade Positivo

Exercício

Algumas soluções

Inserir no campo “User Name” o valor usuario1234 Inserir na senha ‘ OR 1=1

SELECT * FROM users WHERE username = 'usuario1234' AND password =

(10)

Exercício

Algumas soluções

Inserir no campo “User Name” o valor ‘ OR 1=1-- Inserir qualquer coisa na senha

SELECT * FROM users WHERE username = '' OR 1=1--' AND password = 'foo'

(11)

11 Universidade Positivo

Até onde Podemos Chegar?

Algumas soluções

Em user name: ' or 1=1) UNION ALL SELECT users.* FROM users#

(12)

Algumas soluções

Em user name: ' or 1=1) UNION ALL SELECT users.* FROM users#

O que o Union All pode possibilitar?

Se conseguirmos imprimir o resultado dessa consulta na tela, podemos ter uma lista de todos usuários do sistema Podemos criar variantes mais perigosas

' or 1=1) UNION ALL select * from information_schema.tables#

(13)

13 Universidade Positivo

SQL Injection

Aplicações Web geralmente constroem SQLs dinamicamente através dos dados inseridos pelos usuários

Falhas de segurança podem tornar o sistema vulnerável a SQL Injection

O exercício anterior explorava SQL Injection através do campo login e senha de uma aplicação vulnerável

Em alguns casos uma SQL Injection pode permitir ao atacante:

Ler e alterar qualquer dado no banco

Obter acesso ao banco e ao servidor do banco de dados como um todo!!!

(14)

SQL Injection

Com SQL Injection podemos recuperar informações arbitrárias do sistema

Select

Inserir informações no banco de dados Insert

Ex.: Podemos inserir um novo login e senha no banco para podemos logar quando quisermos

Modificar informações no banco de dados Update

(15)

15 Universidade Positivo

SQL Injection – Vulnerabilidade Básica

Preconceito contra Joana D'Arc

Pode impedir que um usuário comum entre no sistema Qual o problema?

(16)

SQL Injection – Vulnerabilidade Básica

Preconceito contra Joana D'Arc

Pode impedir que um usuário comum entre no sistema Qual o problema?

Como Solucionar?

SELECT * FROM users WHERE username = ‘meuLogin’ and password = ‘senha’

SELECT * FROM users WHERE username =

(17)

17 Universidade Positivo

SQL Injection – Vulnerabilidade Básica

Preconceito contra Joana D'Arc

Muitos desenvolvedores podem ser tendenciosos em fazer uma sanitização simples da entrada

Ex.: colocar um caractere de escape nas aspas

Entrada: Joana D'Arc

Depois da Sanitização: Joana D\'Arc

Um usuário comum de nome “Joana D'Arc” agora pode utilizar o sistema. Mas ainda temos uma falha grave de segurança.

(18)

SQL Injection – Vulnerabilidade Básica

Preconceito contra Joana D'Arc

Muitos desenvolvedores podem ser tendenciosos em fazer uma sanitização simples da entrada

Ex.: colocar um caractere de escape nas aspas

Entrada: Joana D'Arc

Depois da Sanitização: Joana D\'Arc

Um usuário comum de nome “Joana D'Arc” agora pode utilizar o sistema. Mas ainda temos uma falha grave de segurança.

Como burlar esse sistema?

Entrada: Joana D\'Arc

(19)

19 Universidade Positivo

Como Prevenir SQL Injections?

Sanitização das entradas Solução Parcial

Pode impedir alguns ataques, mas os algoritmos de sanitização sempre são propensos a falhas

(20)

Como Prevenir SQL Injections?

Stored Procedures Solução parcial

Criam-se as Sqls estáticas no banco de dados para inserção, por exemplo.

Problemas

SQL Injections ainda são possíveis em Stored

Procedures, principalmente se elas tiverem problemas de desgn

Pode ser considerada uma má prática de

desenvolvimento do ponto da Eng. De Software Custo de desenvolvimento

(21)

21 Universidade Positivo

Queries Parametrizadas

Os parâmetros sempre serão interpretados como dados, e nunca como sendo parte da estrutura da consulta.

A estrutura da consulta foi definida no primeiro passo A API do banco de dados (driver) garante que qualquer placeholder definido será tratado de maneira segura

(22)

Como Prevenir SQL Injections?

Queries Parametrizadas (Parametrized Queries)

Solução efetiva que geralmente pode ser utilizada

String sql = "insert into pessoa (cpf,nome,nascimento) values (?,?,?)";

PreparedStatement statement = connection.prepareStatement(sql);

statement.setInt(1, cpf);

(23)

23 Universidade Positivo

Queries Parametrizadas

O comando é construído em dois passos:

A estrutura da consulta é definida, deixando-se alguns espaços reservados (placeholders) para as entradas de usuário

Os conteúdos dos espaços reservados é especificado pela aplicação

String sql = "insert into pessoa (cpf,nome,nascimento) values (?,?,?)";

PreparedStatement statement = connection.prepareStatement(sql);

statement.setInt(1, cpf);

(24)

Queries Parametrizadas

Os parâmetros sempre serão interpretados como dados, e nunca como sendo parte da estrutura da consulta.

(25)

25 Universidade Positivo

Queries Parametrizadas

Os parâmetros sempre serão interpretados como dados, e nunca como sendo parte da estrutura da consulta.

A estrutura da consulta foi definida no primeiro passo A API do banco de dados (driver) garante que qualquer placeholder definido será tratado de maneira segura

(26)

Queries Parametrizadas

Para que as queries parametrizadas tenham efeito, temos que manter em mente que:

Todas consultas no sistema devem ser parametrizadas

Todos itens de dados inseridos devem ser parametrizados

De nada adianta parametrizar alguns itens, e outros não Placeholders devem ser utilizados somente para especificar os dados, e nunca a estrutura da consulta

Ex:. Não devem ser utilizados para especificar colunas, tabelas, schemas, …

(27)

27 Universidade Positivo

Demais Mecanismos de Defesa

A aplicação deve ter o menor nível de privilégios possível para acessar o banco de dados

Se a aplicação somente precisa consultar informações no banco, e nunca inserir ou atualizar, deve-se criar um

usuário no banco que possa somente fazer consultas que será utilizado pela aplicação

A aplicação nunca deve ter privilégios de root (administrador) no banco de dados

Desabilitar as funcionalidades do banco de dados que não são utilizadas

Ex.: o banco pode ter uma funcionalidade serializar os dados via SOAP, que não é utilizada pela aplicação

Aplicar patches de correção no banco de dados recomentados pelo fabricante

(28)

Exercício (Valor 1,0)

Considere o banco de dados da imagem que contém somente a tabela pessoa

Crie uma aplicação que insira, atualize e remova os dados nessa tabela utilizando a linguagem de sua preferência e queries parametrizadas

A grande maioria das linguagens oferece drivers para conexão com bancos de dados utilizando queries

parametrizadas

Java (JDBC), .Net, C++, PHP, …

Utilize o banco de Dados de sua preferência PostgreSQL, HSLQDB, Oracle, …

Os scripts para criação de um banco HSQLDB, bem como uma aplicação de exemplo encontram-se no site da disciplina

(29)

29 Universidade Positivo

Exercício (Valor 1,0)

Exemplos: Insert:

insert into pessoa (cpf,nome,nascimento) values (?,?,?) Update:

update pessoa set cpf = ?, nome = ?, nascimento = ? where pessoa_id = ?

Delete

Referências

Documentos relacionados

No entanto, quando se eliminou o efeito da soja (TABELA 3), foi possível distinguir os efeitos da urease presentes no grão de soja sobre a conversão da uréia em amônia no bagaço

Os instrumentos de pesquisa utilizados serão: Ficha de Rastreamento das Participantes do Estudo, International Consultation on Incontinence Questionnaire – Short Form

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

Therefore, the aim of this study was to identify the species of Colletotrichum associated with chayote anthracnose in different production poles of Brazil, based on DNA sequence

In this study, we describe the fish demersal assemblage along the continental shelf of the northeast Brazilian coast 5°-9°S, specifically the ecological descriptors and the

compra dele, no que diz respeito aos gastos relacionados com alimentos e motivos de escolha do ponto de venda, é chegada a hora de entendermos o conhecimento dele acerca de

desenvolvimento deste trabalho têm as seguintes metas a serem atingidas: 1 Confirmar que o cenário apresentado depois do Plano1 Diretor de Reforma do Aparelho do Estado 1997, CPI