OWASP Developer Guide

Security Fundamentals

2.1 Fundamentos de segurança

Os princípios fundamentais da segurança de aplicativos baseiam-se nos conceitos de segurança mencionados neste guia do desenvolvedor. Esta seção tem como objetivo fornecer uma introdução aos princípios fundamentais com os quais qualquer equipe de desenvolvimento deve estar familiarizada.

Modelo de Maturidade de Software Assurance

SAMM logo

O Modelo de Maturidade de Software Assurance (SAMM) fornece contexto para o escopo da segurança de software e os fundamentos das boas práticas de segurança:

O modelo SAMM descreve esses fundamentos de segurança de software como Funções de Negócio, que são subdivididos em Práticas de Negócio. O Modelo de Maturidade de Software Assurance OWASP (SAMM) é usado ao longo deste Guia do Desenvolvedor; a maioria das seções do Guia do desenvolvedor faz referência a pelo menos uma das funções ou práticas de negócios do SAMM.

Tríade CID

Segurança é simplesmente controlar quem pode interagir com sua informação, o que eles podem fazer com ela e quando podem interagir com ela. Estas características de segurança podem ser descritas utilizando a tríade CID.

CID significa Confidencialidade, Integridade e Disponibilidade, e geralmente é retratada como um triângulo que representa os fortes laços entre seus três princípios. Esta tríade é considerada os pilares de segurança de aplicações, frequentemente Confidencialidade, Integridade ou Disponibilidade são usadas como propriedades de dados ou processos dentro de um determinado sistema. A tríade CID pode ser ampliada com a tríade AAA: Autorização, Autenticação e Auditoria.

Confidencialidade

Confidencialidade é a proteção dos dados contra a divulgação não autorizada; trata-se de garantir que apenas aqueles com a autorização correta possam acessar os dados e se aplica tanto aos dados em repouso quanto aos dados em trânsito. Confidencialidade também está relacionada ao conceito mais amplo de privacidade de dados.

Integridade

Integridade refere-se à proteção os dados contra modificações não autorizadas ou garantir a confiabilidade dos dados. O conceito contém a noção de integridade de dados (os dados não foram alterados acidental ou deliberadamente) e a noção de integridade da fonte (os dados vieram ou foram alterados por uma fonte legítima).

Disponibilidade

Disponibilidade refere-se à garantia da presença de informação ou recursos. Este conceito não se baseia apenas na disponibilidade dos dados em si, por exemplo, através da utilização da replicação de dados, mas também na proteção dos serviços que fornecem acesso aos dados, por exemplo, através da utilização de balanceamento de carga.

Tríade AAA

A tríade CID é frequentemente ampliada com Autenticação, Autorização e Auditoria, uma vez que estas estão intimamente ligadas aos conceitos da CID. A CID depende fortemente da autenticação e autorização; a confidencialidade e a integridade de dados sensíveis não podem ser garantidas sem elas. A auditoria é adicionada porque pode fornecer o mecanismo para garantir a prova de qualquer interação com o sistema.

Autenticação

Autenticação consiste em confirmar a identidade da entidade que deseja interagir com um sistema seguro. Por exemplo, a entidade poderia ser um cliente automatizado ou um ator humano; em ambos os casos, a autenticação é necessária para um aplicativo seguro.

Autorização

Autorização consiste em especificar direitos de acesso a recursos seguros (dados, serviços, arquivos, aplicativos, etc.). Esses direitos descrevem os privilégios ou níveis de acesso relacionados aos recursos que estão sendo protegidos. Autorização geralmente é precedida por uma autenticação bem-sucedida.

Auditoria

Auditoria trata-se do registro de eventos em nível de implementação, bem como eventos em nível de domínio que ocorrem em um sistema. Isso ajuda a proporcionar o não repúdio, o que significa que as alterações ou ações no sistema protegido são inegáveis. Auditoria pode fornecer não apenas informações técnicas sobre o sistema em execução, mas também prova de que ações específicas foram realizadas. As perguntas típicas respondidas pela auditoria são “Quem fez o quê, Quando e potencialmente Como?”

Vulnerabilidades

O NIST define vulnerabilidade como ‘Fragilidade em um sistema de informação, procedimentos de segurança do sistema, controles internos ou implementação que possa ser explorada ou desencadeada por uma fonte de ameaça.’

Existem muitas fragilidades ou bugs em todas as aplicações grandes, mas o termo vulnerabilidade é geralmente reservado para aquelas fragilidades ou bugs onde existe o risco de um agente de ameaça poder explorá-las usando um vetor de ameaça.

Vulnerabilidades de segurança bem conhecidas:

HTTP and HTML

Embora não seja uma segurança fundamental como tal, as aplicações web dependem de comunicações HTTP e HTML. Tanto os desenvolvedores de aplicações quanto os engenheiros de segurança devem ter um bom entendimento de HTTP e a linguagem HTML juntamente com seus vários controles de segurança.

A maioria das equipes de desenvolvimento de aplicações estará familiarizada com as comunicações HTTP e o padrão HTML mas, se necessário, consulte o treinamento do W3 Consortium ou da W3 Schools. O OWASP Cheat Sheet Series fornece aos desenvolvedores de aplicações web as informações necessárias para produzir software seguro:

Referências


O Guia do Desenvolvedor da OWASP é um trabalho da comunidade; se há algo que precisa ser mudado então submeta uma issue ou edite no GitHub.