Vou apresentar e explorar as 5 maiores falhas cometidas pelos programadosres na hora de codar e identificar as práticas de codificação inseguras que levam a esses erros para instruir os desenvolvedores sobre alternativas seguras, as organizações podem adotar medidas proativas para ajudar a reduzir ou eliminar significativamente as vulnerabilidades no software antes da implantação.
2. Aviso Legal
Meu empregador não tem qualquer
responsabilidade sobre o que será
tratado aqui. Este documento
contém informações confidenciais
e/ou privilegiadas.
AVISO DE CONFIDENCIALIDADE
Se você não for o destinatário ou a
pessoa autorizada a receber este
documento, não deve usar, copiar ou
divulgar as informações nele
contidas ou tomar qualquer ação
baseada nessas informações.
3. Alcyon Junior
Head of Cyber Security na
POUPEX
Três graduações
Redes de
Computadores
Pós em Redes pela
Cisco | MBA em
Governança de TI |
Pós em
CyberSecurity
Mestrado em
Segurança
Cibernética
Autor de livros
sobre Segurança
Cibernética
EHF | ISO27002
| ITILF | CNAP |
CEH | MVM |
LPIC-1
Instrutor
credenciado
pela EXIN e
Líder da OWASP
BSB
#WHOAMI
10. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
CONCEITOS
S Spoofing Forjamento de Identidade
Fingir ser alguém ou algo
que você não é
Autenticação
A2-Broken Authentication
and Session Management;
A3-Cross-Site Scripting (XSS)
T Tampering Adulteração de Dados
Modificar dados
armazenados ou dados
em trânsito
Integridade
A1-Injection;
A3-Cross-Site Scripting (XSS);
A4- Insecure Direct Object
References;
A6- Sensitive Data Exposure
R Repudiation Rejeição
Negar que fez ou não fez
algo
Não Repúdio
AA2-Broken Authentication and
Session Management;
A10-Unvalidated Redirects and
Forwards
I
Information
Discosure
Divulgação de
Informações
Ver informações que você
não está permitido a ver
Confidencialidade
A1-Injection;
A3- Cross-Site Scripting (XSS);
A4- Insecure Direct Object
References;
A6- Sensitive Data Exposure
D Denial of Service Recusa de Serviço
Negar um serviço, deixar o
sistema indisponível.
Disponibilidade
A5-Security Misconfiguration;
A9- Using Components with Known
Vulnerabilities
E
Elevation of
Privilege
Elevação de Privilégio Fazer algo sem permissão Autorização
A2-Broken Authentication and
Session Management;
A7- Missing Function Level Access
Control;
A8- Cross-Site Request Forgery (CSRF)
15. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
OS 5 ERROS - CSRF
<form action="transfer.do" method="GET">
<input type="text" name="acct" value="BETO">
<input type="text" name="amount" value="100">
</form>
16. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
OS 5 ERROS - CSRF
GET /transfer.do?acct=BETO&amount=100 HTTP/1.1
Host: bank.com
(...)
GET /transfer.do?acct=BETO&amount=50 HTTP/1.1
Host: bank.com
(...)
17. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
OS 5 ERROS - CSRF
GET /transfer.do?acct=HACKER&amount=500 HTTP/1.1
Host: bank.com
(...)
Para explorar a vulnerabilidade, o atacante prepara um link específico para tirar vantagem desta transação:
http://bank.co/transfer.do?acct=HACKER&amount=500
19. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
OS 5 ERROS - SQLi
SELECT * FROM Users WHERE Username='$username' AND Password='$password'
1' or '1' = '1
1' or '1' = ‘1
Resultado da Query:
SELECT * FROM Users WHERE Username='1' OR '1' = '1' AND Password='1' OR
'1' = '1'
20. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
OS 5 ERROS - SQLi
http://192.168.15.51/cgi-
bin/badstore.cgi?searchquery=1%27%3D%270%27+UNION+SELECT+1%2C+1%2C+1%2C+1
+from+userdb+%23+&action=search&x=0&y=0
1'='0' UNION SELECT 1, 1, 1, 1 from userdb #
22. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
• Um bom algoritmo de criptografia não deve
depender do sigilo do próprio algoritmo.
• A única parte que precisa ser secreta é a chave.
• SALT + PEPPER
OS 5 ERROS - CRYPTO
23. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
• Identifique APIs como possíveis pontos de
entrada;
• Evite APIs banidas e preteridas que são
suscetíveis a brechas de segurança;
• Use a autenticação adequada e faça auditoria de
todo o uso daAPI
OS 5 ERROS - API
26. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
• A codificação defensiva é uma forma de codificação proativa e segura
pretendida para garantir a função contínua do software sob imprevisto
circunstâncias. Técnicas de programação defensiva são usadas
especialmente quando um software pode ser mal utilizado.
• Os benefícios da codificação de defesa geralmente melhoram:
• Qualidade geral - reduzindo o número de erros e falhas associado ao
software
• Tornar o código fonte compreensível - o código fonte deve ser legível
e compreensível por isso é aprovado em um revisão de código
• Fazer com que o software se comporte de maneira previsível, apesar
entradas inesperadas ou ações do usuário.
COMO PROTEGER MEU CÓDIGO?
27. DESAFIOS DA SEGURANÇA
DA INFORMAÇÃO
• Sanitização
• Converta algo que é considerado perigoso em seu
forma segura. Ambas as entradas e saídas podem ser
higienizadas.
•Tipos de saneamento:
• Decapagem: Removendo caracteres nocivos do
usuário entrada fornecida
• Substituição: Substituir a entrada fornecida pelo
usuário por uma alternativa mais segura
COMO PROTEGER MEU CÓDIGO?
29. VAMOS PENSAR UM POUCO?
“- aquele que conhece o inimigo e a si mesmo,
lutará cem batalhas sem perigo de derrota;
- para aquele que não conhece o inimigo, mas
conhece a si mesmo, as chances para a vitória ou
para a derrota serão iguais;
- aquele que não conhece nem o inimigo e nem a si
próprio, será derrotado em todas as batalhas.”
SunTzu (A arte da Guerra)