Introdução e Conceitos Flashcards

1
Q

Trinity of trouble:

A
  1. Complexidade – Milhões de linhas de código
  2. Extensibilidade – Device drivers, plugins, modules, DLLs
  3. Conectividade – Internet (novos bugs propagam-se mais facilmente/ataques automatizados)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Objetivo da segurança consiste em garantir 3 atributos

A
  1. Confidencialidade → ausência de divulgação não autorizada de informação;
  2. Integridade → ausência de alterações não autorizadas ao sistema ou à informação em causa;
  3. Disponibilidade → prontidão do sistema para fornecer um serviço ou da informação para ser acedida.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Políticas de segurança

A

definem o que é ou não autorizado, ou seja, um conjunto de requisitos de segurança que têm
de ser satisfeitos pelo sistema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Tipos de vulnerabilidades

A
  1. Design/Projeto → introduzida durante a fase de projeto do software (Exemplo: decisão de usar mecanismos
    de autenticação fracos ou esquecer que as comunicações podem ser observadas na rede);
  2. Codificação/Implementação → introduzida durante a programação do software, ou seja, um bug com
    implicações de segurança (Exemplo: falta de verificação de limites de escrita num buffer);
  3. Operacional → causada pelo ambiente no qual o software é executado pela sua configuração (Exemplo:
    existência de contas sem senha num sistema de gestão de base de dados)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Zero Day

A

É um ataque executado contra uma ou mais vulnerabilidades previamente desconhecidas.
São muitas vezes vendidas na dark web, para combater estes ataques algumas empresas oferecem recompensas (bug
bounties) a quem descobre bugs e vulnerabilidades no seu software.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ataque vs Exploit

A

Ataque é uma ação maliciosa que visa ativar uma ou mais vulnerabilidades de modo a subverter a política de
segurança. Caso o ataque seja bem-sucedido existe uma intrusão.
Exploit → Um trecho de código capaz de ativar determinada vulnerabilidade OU ação de realizar um ataque.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Patch?

A

Software que resolve os exploits e por consequência remove as vulnerabilidades.
Para o fabricante o patch é uma declaração publica de que o seu produto tem problemas.
Para o utilizador, instalar o remendo tem custos de administração e pode deixar o sistema instável.
Path pode ser reserse engineered.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Patch?

A

Software que resolve os exploits e por consequência remove as vulnerabilidades.
Para o fabricante o patch é uma declaração publica de que o seu produto tem problemas.
Para o utilizador, instalar o remendo tem custos de administração e pode deixar o sistema instável.
Path pode ser reserse engineered.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vetor de Ataque

A

Pode ser caracterizado por:

  1. Como o ataque é realizado. (vírus/rede)
  2. Tipo de vulnerabilidade (SQl injection/BO)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Superfície de ataque

A

É a soma dos diferentes pontos onde um atacante pode tentar entrar ou extrair dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Objetivos para desenvolver software seguro são contraditórios

A
  1. Funcionalidade
    A necessidade de fornecer meios para realizar um conjunto de tarefas. Qualidade pode ser ligada à quantidade.
  2. Usabilidade
    Facilidade de um utilizador tirar partido do produto de software.
  3. Desempenho
    Mais alto melhor. Pode ser comprometido devido aos mecanismos de segurança.
  4. Simplicidade
    Mais simples melhor.
  5. Time to market
    Colocação rápida do produto no mercado. Segurança pode aumentar o tempo, com testes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Fatores afetam grau de vulnerabilidade

A

a. A existência de vulnerabilidades de projeto, de codificação e operacionais;
b. Os mecanismos (ou controlos) de segurança implementados
c. O nível de maturidade dos processos de segurança da organização que utiliza o software
d. A incerteza em relação aos conhecimentos listados acima.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Software Development Life Cycle

Porque devemos incluir?

A

É uma metodologia formar ou informal de desenhar, criar ou realizar manutenção de software.
A maior parte dos SDLC não têm em conta a segurança do software.
Devemos incluir a segurança nos SDLC para:
a. Reduzir o número de vulnerabilidades
b. Mitigar potencias impactos das vulnerabilidades existentes
c. Entender e resolver as causas roots das vulnerabilidades para prevenir recorrências.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Waterfall model

A

Fase 1 – Requisitos do sistema → Devem ser considerados os requisitos gerais de segurança dos sistemas nos quais o
software fará parte. Como a legislação em vigor (Sarbanes-Oxley Act; Health Insurance Portability and Accountability
Act) e as recomendações e normas internacionais (ISO 27000).
Fase 2 – Requisitos do software → Os requisitos definidos na fase 1 devem ser traduzidos em requisitos específicos
para o software a desenvolver. Uma forma é definindo os misuse cases (casos de abuso) que são casos nos quais as
interações são causadas por um atacante e não por um utilizador normal. Podemos usar fontes de informação como:
lista de problemas comuns em softwares similares, lista recursos que o software vai lidar.
Fase 3 – Análise & Fase 4 – Desenho → Os requisitos definidos nas duas primeiras fases devem ser traduzidos para
mecanismos que os concretizem. Exemplos: mecanismos de autenticação, de proteção de confidencialidade dos dados,
e integridade dos dados.
Fase 5 – Codificação → A programação deve ser realizada de modo a não criar vulnerabilidades de codificação.
Fase 6 – Teste → Devem ser realizadas validações e testes de segurança.
Fase 7 – Operação → Medidas de segurança posteriores ao desenvolvimento. (paths)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

NIST

Organizado em 4 grupos?

A

Descreve um subset de práticas de alto nível baseados no estabelecimento de standards e guias para práticas de
desenvolvimento de software seguro. Pode ser integrado nos SDLC.
Organizado em 4 grupos:
1. Preparar a organização → Garantir que os colaboradores, processos e tecnologias estão preparados para
desenvolver software seguro.
2. Preparar o software → proteger todos os componentes do software de manipulação ou acesso não autorizado.
3. Produzir software seguro → Objetivo é produzir software seguro que têm vulnerabilidades mínimas.
4. Responder a reports de vulnerabilidades → Identificar vulnerabilidades no software e responder de forma
apropriada a essas vulnerabilidades e prevenir vulnerabilidades similares.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Produce Well Structured Software

A

a. Durante o design do software ter em conta security requirements and risk information. (criar modelos de
ataque e analisar como implementsr mitigações, mais rigoroso em áreas sensíveis)
b. Rever o design de software para confirmar se está de acordo com os requisitos de segurança e risk
information. (utilizar experts que não estiveram no desenvolvimento do software)
c. Verificar se o software fornecido por terceiros também está de acordo com os requisitos de segurança e risk
information. (comunicar requisitos aos terceiros)
d. Reutilizar software existente e seguro, invés de desenvolver software menos seguro.
e. Criar o código-fonte utilizando as práticas de codificação mais seguras.
f. Reviews e analises de código, de forma a identificar vulnerabilidades e verificar se estão de acordo com os
requisitos de segurança.
g. Testar o código.
h. Configurar o software para ter segurança por default.

17
Q

Selecionar Linguagem de programação

A

As linguagens têm implicações importantes em termos de segurança.
A linguagem C quando compilada é traduzida para reduzidas instruções, o que permite um grande desempenho, mas
leva a uma gestão de memória deficiente que cria muitas vulnerabilidades.
A linguagem Java não é perfeita, mas limita alguns problemas. Quando compilada origina bytecodes, o que origina a
uma redução de desempenho, mas leva a uma melhor gestão de memória. Programas podem correr numa sandbox, que
impõe políticas de controlo de acesso a recursos do sistema.
A linguagem Perl é mais lenta, mas apresenta alguns recursos importante do ponto de vista da segurança. O interpretador consegue (taint mode) inspecionar o percurso das entradas, como input do utilizador, e termina com um
erro se estes atingirem algum comando perigoso sobre o ponto de vista da segurança.

18
Q

Open source vs closed source

A

Open source permite o código tenha “many eyeballs”, permitindo que esteja disponível para escrutínio, o que leva à
descoberta e à correção de vulnerabilidades.
Closed source torna mais complicado para o atacante de encontrar vulnerabilidades. No entanto, a segurança por
obscuridade não é boa ideia. Existem ferramentas que permitem realizar reserve engineering dos executáveis.

19
Q

Design Principles to Avoid Vulnerabilities

A
  1. Nunca assumir ou confiar
  2. Usar um mecanismo de autenticação que não possa ser contornado ou comprometido
  3. Identificar dados sensíveis e como devem ser tratados
  4. Perceber o impacto dos componentes externos
  5. Conceber antevendo alterações futuras
20
Q

8 Princípios da Segurança

A
  1. Privilégio Mínimo
    Cada programa e utilizador de um sistema deve operar usando o mínimo de privilégios necessários para realizarem o
    seu objetivo.
  2. Predefinições Seguras (Fail-Safe)
    Falhar de modo seguro. Negar acesso por omissão
  3. Economia de Mecanismo
    Simplicidade. Mais fácil de entender e testar (menos bugs)
  4. Mediação Completa
    Verificação contínua da autorização para aceder a um determinado recurso.
  5. Desenho Aberto
    Não depender de segredos de implementação. Possibilidade de testes contínuos por vários experts.
  6. Separação de Privilégios
    Autorização com várias condições. Usar autenticação multifator.
  7. Mínimo Mecanismo Comum
    Limitar o número de mecanismos comuns entre utilizadores. Cada mecanismos partilhado é um caminho para a falta
    de segurança e confidencialidade. Cloud Computing usa mesma máquina física com vários clientes em VMs
  8. Aceitação Psicológica
    Não dificultar a vida dos utilizadores. UI deve ser fácil de usar.
21
Q

Design Principles by Microsoft SD3+C

A
  1. Secure by Design
    O sistema deve ser desenvolvido para ser seguro, do design para o desenvolvimento.
  2. Secure by Default
    Software devem ser desenvolvidos considerando a possibilidade de intrusões. Usar privilégios mínimos e não correr
    serviços desnecessários.
  3. Secure in Deployment
    Software deve conter ferramentas e documentação que permita uma correta configuração e pathces
  4. Communication
    Entre desenvolvedores e utilizadores sobre aspetos de segurança. Patches devem ser entregues e instalados pelos
    utilizadores.
22
Q

Outros Princípios importante (3)

A
  1. Consider Security From Start → Decisões na fase de design de um sistema resultam em consequências na
    segurança no produto em desenvolvimento. Adicionar segurança em fases tardias do desenvolvimento pode
    levar a custos ou até mesmo ao redesign do sistema.
  2. Secure the Weakest Link → Sistema é tão seguro quanto o seu ponto mais fraco. No entanto temos de
    priorizar.
  3. Fail Securely → Sistemas ficam menos seguros quando falham. Garantir a funcionalidade do sistema em caso
    de rutura e entender as consequências de diferentes versões do mesmo sistema.