OpenCyber Academy
Engenharia · Capítulo 13 · Português
Código do curso: OCA-117Capítulo 13: OCA-117-C013

Capítulo 13 — Sistemas de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 13 publicada. Mapa, exemplo, EX037.

flowchart TD
  N0["13.1 Acesso ao banco de dados"]
  N1["13.2 Injeção"]
  N2["13.3 Campos sensíveis"]
  N3["13.4 Backups para a recuperação"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX037"]

Desenho lógico

flowchart LR
  N0["13.1 Acesso ao banco de dados"]
  N1["13.2 Injeção"]
  N2["13.3 Campos sensíveis"]
  N3["13.4 Backups para a recuperação"]
  N0 --> N1 --> N2 --> N3 --> Q["EX037"]
[13.1 Acesso ao banco de dados]
    |
    v
[13.2 Injeção]
    |
    v
[13.3 Campos sensíveis]
    |
    v
[13.4 Backups para a recuperação]
    |
    v
[Exemplo resolvido] --> [Exercício EX037]

Objetivos de aprendizagem

Você vai (1) proteger bancos de dados contra ataques comuns; (2) controlar o acesso a campos sensíveis; (3) projetar backups que sustentem a recuperação.

13.1 Acesso ao banco de dados

O banco de dados de remessas da Saltmarsh guarda endereços de clientes e observações de entrega. Lindiwe descobre que a aplicação web se conecta com uma conta que pode ler, alterar e excluir todas as tabelas. Ela recomenda contas separadas para leitura e gravação, cada uma limitada às tabelas necessárias. Se a aplicação fosse comprometida, o atacante poderia então fazer menos. O Prof. Hale explica que as permissões de banco de dados muitas vezes são concedidas de forma ampla durante o desenvolvimento e nunca são restringidas, então revisá-las é valioso no início de qualquer avaliação. Os desenvolvedores criam as duas novas contas em uma semana.

13.2 Injeção

Lindiwe estuda como as aplicações montam as consultas ao banco de dados. Um código que insere a entrada do usuário diretamente no texto da consulta permite a injeção, em que uma entrada elaborada muda o significado da consulta. Ela revisa uma página de busca sintética e descobre que ela monta as consultas juntando strings. Ela a reescreve para usar consultas parametrizadas, de modo que a entrada seja sempre tratada como dado. Ela aprende que a injeção continua comum porque montar strings é fácil, e que a revisão de código e os testes precisam procurá-la especificamente. Ela acrescenta um teste que envia uma aspa e um ponto e vírgula.

13.3 Campos sensíveis

Alguns campos, como os números das carteiras de motorista, precisam de proteção mais forte que outros. Lindiwe pensa em cifrá-los no nível do campo, para que os administradores do banco de dados e os backups vejam apenas texto cifrado. As aplicações que precisam dos valores os decifram com chaves guardadas separadamente. Ela anota o custo: buscar e ordenar campos cifrados fica mais difícil. O Prof. Hale pede que ela justifique a cifração de campos por quem deve e quem não deve ver os valores, e não por um desejo geral de cifrar tudo. Ela conclui que apenas os números das carteiras justificam a cifração de campo na Saltmarsh.

13.4 Backups para a recuperação

Os backups protegem a disponibilidade e a integridade, mas só se puderem ser restaurados. Lindiwe aprende que o ransomware muitas vezes ataca os backups primeiro, então as cópias precisam ficar onde um atacante que controla a rede principal não consiga excluí-las. A Saltmarsh mantém backups noturnos num compartilhamento de rede acessível a partir dos servidores. Ela recomenda uma cópia adicional que não possa ser alterada por um período definido. Ela também observa que as restaurações precisam ser testadas, um tema a que o curso volta com um laboratório de verificação. A equipe de infraestrutura orça a cópia imutável.

Exemplo resolvido

Lindiwe restringe as contas do banco de dados, substitui as consultas montadas com strings por consultas parametrizadas, pondera a cifração de campo para os números das carteiras e recomenda cópias de backup imutáveis.

Caso sintético. Os bancos de dados são sintéticos.

Erros e limites

Um backup acessível e excluível a partir da rede principal pode não sobreviver ao ransomware.

Exercícios

Respostas comentadas

EX037. Contas separadas de leitura e gravação, limitadas às tabelas necessárias.

EX038. Usando consultas parametrizadas.

EX039. Uma cópia imutável que não pode ser alterada por um período definido.