View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Visão Geral

Este documento aborda os modelos de ameaças para um projeto de amostra que captura quadros de vídeo de uma câmera de vídeo, processa esses quadros em um dispositivo IoTEdge e os envia para o Azure Cognitive Service para obter a saída de áudio. Esses modelos podem ser considerados como um modelo de referência para mostrar como podemos construir um documento de modelagem de ameaças. Cada uma das entidades rotuladas nas figuras abaixo é acompanhada por metainformações que descrevem as ameaças, as mitigações recomendadas e os princípios ou objetivos de segurança associados.

Diagrama de Arquitetura

Interface de usuário gráfica, descrição do aplicativo gerada automaticamente

Ativos

Ativo Ponto de Entrada Nível de Confiança
Armazenamento de Blobs do Azure Ponto de extremidade HTTP String de conexão
Monitor do Azure Ponto de extremidade HTTP String de conexão
Serviço Cognitivo do Azure Ponto de extremidade HTTP String de conexão
Módulo IoTEdge: M1 Ponto de extremidade HTTP Acesso Público (Rede Local)
Módulo IoTEdge: M2 Ponto de extremidade HTTP Acesso Público (Rede Local)
Módulo IoTEdge: M3 Ponto de extremidade HTTP Acesso Público (Rede Local)
Módulo IoTEdge: IoTEdgeMetricsCollector Ponto de extremidade HTTP Acesso Público (Rede Local)
Application Insights Ponto de extremidade HTTP String de conexão

Diagrama de Fluxo de Dados

Descrição do diagrama gerada automaticamente

Lista de Ameaças

Descrição do diagrama gerada automaticamente

Suposições

Ameaças

Vetor Ameaça Mitigação
(1) Sniff Dados não criptografados podem ser interceptados em trânsito Não Mitigado
(2) Acesso ao Módulo IoT Edge M1 Acesso não autorizado ao Módulo IoT Edge M1 Não Mitigado
(3) Acesso ao Módulo IoT Edge M2 Acesso não autorizado ao Módulo IoT Edge M2 Não Mitigado
(4) Acesso ao Módulo IoT Edge M3 Acesso não autorizado ao Módulo IoT Edge M3 Não Mitigado
(5) Roubo de Credenciais de Armazenamento Acesso não autorizado ao Módulo IoT Edge M2 onde são usados segredos de banco de dados Não Mitigado
(6) Negação de Serviço Ataque de negação de serviço (DoS) em todos os módulos IoT Edge, uma vez que não há autenticação Não Mitigado
(7) Manipulação de Dados de Log Application Insights está conectado via String de Conexão, que é armazenada em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode manipular os dados de log. Não Mitigado
(8) Manipulação do Dispositivo da Câmera de Vídeo O caminho da câmera de vídeo é armazenado em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode manipular o feed de vídeo ou usar outra fonte de vídeo ou um fluxo de vídeo falso. Não Mitigado
(9) Falsificação de Manipulação A string de conexão do Azure IoT Hub é armazenada em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode causar ataques DoS no IoTHub. Não Mitigado
(10) Ataque de Negação de Serviço DDOS A string de conexão do Azure Cognitive Service é armazenada em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode causar ataques DoS no Azure Cognitive Service. Não Mitigado
(11) Manipulação de Armazenamento A string de conexão do armazenamento é armazenada em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode manipular dados no armazenamento  
ou ler do armazenamento. Não Mitigado    
  (12) Manipulação do Serviço Cognitivo A string de conexão do serviço cognitivo é armazenada em um arquivo .env no dispositivo IoT Edge. Uma vez que um usuário ganha acesso ao dispositivo, o arquivo .env pode ser lido e um atacante pode usar as API’s do serviço cognitivo para seu próprio propósito, causando um aumento no custo de uso. Não Mitigado

Modelo de Ameaças

Uma imagem contendo texto, mapa, descrição interna gerada automaticamente

Propriedades das Ameaças

Ameaças Notáveis      
# Princípio Ameaça Mitigação
1 Autenticidade Uma vez que o canal entre o navegador e o Módulo IoTEdge não é autenticado, qualquer pessoa pode falsificá-lo depois de ganhar acesso à rede Wi-Fi. Adicione autenticação em todos os módulos IoTEdge.
2 Confidencialidade e Integridade Como resultado da vulnerabilidade de não criptografar dados, dados em texto simples podem ser interceptados durante a transmissão por meio de um ataque do homem no meio (MitM). Dados sensíveis podem ser expostos ou adulterados para permitir explorações adicionais. Todos os produtos e serviços devem criptografar os dados em trânsito usando protocolos e algoritmos criptográficos aprovados. Use TLS para criptografar todo o tráfego de rede baseado em HTTP. Use outros mecanismos, como o IPSec, para criptografar o tráfego de rede não baseado em HTTP que contenha dados de cliente ou confidenciais. Aplica-se ao fluxo de dados do navegador para os módulos IoTEdge.
3 Confidencialidade Dados são um alvo valioso para a maioria dos atores de ameaças e atacar diretamente o armazenamento de dados, em vez de roubá-lo durante a transmissão, permite a exfiltração de dados em uma escala muito maior. Em nosso cenário, estamos armazenando alguns dados em contêineres de blob do Azure. Todos os dados de clientes ou confidenciais devem ser criptografados antes de serem gravados em mídia de armazenamento não volátil (criptografados em repouso) de acordo com os seguintes requisitos. Use algoritmos aprovados. Isso inclui AES-256, AES-192 ou AES-128. A criptografia deve ser habilitada antes de gravar dados no armazenamento. Aplica-se a todos os repositórios de dados no diagrama. O Azure Storage criptografa os dados em repouso por padrão (AES-256).
4 Confidencialidade Mecanismos de autenticação quebrados ou inexistentes podem permitir que atacantes acessem informações confidenciais. Todos os serviços dentro do Limite de Confiança do Azure devem autenticar todas as solicitações recebidas, inclusive as solicitações provenientes da mesma rede. Autorizações adequadas também devem ser aplicadas para evitar privilégios desnecessários. Sempre que possível, use Identidades Gerenciadas do Azure para autenticar os serviços. Identidades de serviço podem ser usadas se as Identidades Gerenciadas não forem suportadas. Usuários ou serviços externos podem usar Nomes de Usuário + Senhas, Tokens, Certificados ou Strings de Conexão para autenticação, desde que esses sejam armazenados no Key Vault ou em qualquer outra solução de segurança. Para autorização, use o Azure RBAC para segregação de tarefas e conceda apenas a menor quantidade de acesso para executar uma ação em um escopo específico. Aplica-se a serviços do Azure como Azure IoTHub, Azure Cognitive Service, Azure Application Insights autenticados usando strings de conexão.
5 Confidencialidade e Integridade Uma grande superfície de ataque, especialmente aquelas expostas na Internet, aumentará a probabilidade de comprometimento Minimize a superfície de ataque do aplicativo limitando os serviços publicamente expostos. Use controles de rede fortes, usando redes virtuais, sub-redes e grupos de segurança de rede para proteger contra tráfego não solicitado. Use o Azure Private Endpoint para o Azure Storage. Aplica-se ao armazenamento do Azure.
6 Confidencialidade e Integridade Navegador e dispositivo IoTEdge estão conectados em uma rede Wi-Fi local. Minimize o ataque à rede Wi-Fi usando um algoritmo seguro como o WPA2. Aplica-se à conexão entre o navegador e os dispositivos IoTEdge.
7 Integridade A exploração de logs e monitoramento insuficientes é a base de quase todo incidente importante. Os atacantes dependem da falta de monitoramento e resposta oportuna para atingir seus objetivos sem serem detectados. O registro de eventos críticos da aplicação deve ser realizado para garantir que, caso ocorra um incidente de segurança, a resposta ao incidente e a análise da causa raiz possam ser feitas. Medidas também devem ser tomadas para garantir que os logs estejam disponíveis e não possam ser sobrescritos ou destruídos por ocorrências maliciosas ou acidentais. No mínimo, os seguintes eventos devem ser registrados. Eventos de login/saída Eventos de delegação de privilégios Falhas de validação de segurança (por exemplo, falhas de validação de entrada ou falhas de verificação de autorização) Erros de aplicação e eventos do sistema Inicializações e desligamentos de aplicação e sistema, bem como inicialização de registro
8 Disponibilidade A exploração do ponto de extremidade público por atores maliciosos que visam tornar o serviço indisponível para seus usuários pretendidos, interrompendo a atividade normal do serviço, por exemplo, inundando o serviço de destino com solicitações até que o tráfego normal não possa ser processado (Negação de Serviço) O aplicativo é acessado por meio de um aplicativo da web implantado como um dos módulos IoTEdge no dispositivo IoTEdge. Este aplicativo pode ser acessado por qualquer pessoa na rede local. Portanto, ataques DDoS são possíveis se o atacante ganhar acesso à rede local. Todos os serviços implantados como módulos IoTEdge devem usar autenticação. Aplica-se a serviços implantados em dispositivos IoTEdge.
9 Integridade Manipulação de dados Os dados em repouso, no Azure Storage, devem ser criptografados no disco. Os dados em repouso, no Azure, podem ser protegidos ainda mais pelo Azure Advanced Threat Protection. Os dados em repouso, no Azure Storage e no espaço de trabalho do Azure Monitor, usarão o Azure RBAC para segregação de tarefas e concederão apenas a menor quantidade de acesso para executar uma ação em um escopo específico. Os dados em trânsito entre os serviços podem ser criptografados em TLS 1.2 Aplica-se ao fluxo de dados entre os módulos IoTEdge e os Serviços Azure.

Princípios de Segurança