Injection ainda é um dos maiores riscos segundo o OWASP. Se você deixar essa falha passar, um invasor pode causar muitos danos, custando milhões. Quer saber sobre as tendências dos ataques cibernéticos? A galera da CISCO já disse, entre 2016 e 2017 os ataques triplicaram, e o custo pode ultrapassar os US $150 milhões antes de você notar.

Quando falamos de invasões na Web, o velho SQL Injection ainda está em segundo lugar, atrás apenas do famoso DDOS.

Full Red

OWASP

Nunca ouviu falar do OWASP? O Open Web Application Security Project é uma organização que tenta ajudar os desenvolvedores a se preocuparem mais com segurança. Eles promovem práticas seguras na Web através de workshops e eventos. Já ouviu falar do "OWASP Top Ten"?

De tempos em tempos, eles atualizam a lista das 10 principais falhas. Resolver essas falhas não torna o site 100% seguro, mas dificulta bastante a vida de quem tenta invadir.

Segurança

Segurança e desenvolvedores, sempre um desafio. Tem LGPD, segurança de infraestrutura, mas quem está cuidando dos aplicativos? Documentos importantes são enviados por e-mail como se fossem piadas. Google e Microsoft tentam ajudar, mas...

Firewall ativo, antivírus atualizado, USB bloqueado, e a aplicação daquele sistema de cadastro de plantas? Já pensou nisso?

Segurança

Pedir ajuda para Daniel Donda, porque causar danos dá trabalho, e 53% dos ataques são de pessoas com tempo de sobra, gerando mais de meio milhão em custos.

Injection

Falhas de Injection são erros onde um script malicioso toma conta da aplicação. O SQL Injection é o mais famoso, mas não é só ele.

Segundo a galera da Akamai, 51% dos ataques em 2017 usavam o SQL Injection. Cadê os devs para proteger esses aplicativos?

SQL Injection

No caso do SQL Injection, o invasor altera os parâmetros de consulta do site. Insere uma consulta e mexe nos parâmetros, pura diversão! Ainda tem quem ache que o Bob Drop Table é só piada!

exploits_of_a_mom

O Ataque

Imagine uma aplicação que lista estudantes:

find

Aqui está a consulta que faz isso funcionar:

Teste a vulnerabilidade inserindo consultas SQL como abc' OR 1=1 --.

O servidor mostra todos os registros.

nivel1

Passo 2 - Mapeando o banco

Usando sys.Tables, se o usuário tiver acesso suficiente, o invasor pode consultar: abc' UNION SELECT [name], cast(max_column_id_used as varchar(5)) FROM sys.Tables --.

tabelas

Passo 3 - Dados confidenciais

Com as tabelas à mostra, busca por dados confidenciais:

abc' UNION SELECT Username, Password FROM AspnetUsers --

users

E nunca podemos esquecer do clássico abc'; DROP TABLE AspnetUsers --

Como se proteger

Hora de aprender a se defender dessas ameaças do SQL:

Consultas Parametrizadas

SEMPRE use consultas parametrizadas.

Veja a parametrização nas linhas 5 e 11!

Usuário do Banco

O usuário não deve ter permissões demais. Não ajuda só o invasor, mas também atrapalha seus planos.

ORMs

Use ORM, como EntityFramework ou Hibernate, para ajudar a evitar SQL Injection.

Stored Procedures

Stored procedures protegem contra consultas concatenadas que te deixam vulnerável.

Considerações

Injection é um problema sério. Precisamos corrigir esses códigos mal escritos!

Conclusão

Se a demonstração não te deixou preocupado, pelo menos serve para mostrar na prática como os ataques de SQL Injection funcionam.

Download

Clippy Octocat

Pratique suas habilidades de segurança revisando meu trabalho no GitHub

Referências