Conteúdo


Combatendo ameaças virtuais do IoT

Melhores práticas de segurança superior para aplicativos IoT

Comments

Conteúdos da série:

Esse conteúdo é a parte # de # na série:

Fique ligado em conteúdos adicionais dessa série.

Esse conteúdo é parte da série:

Fique ligado em conteúdos adicionais dessa série.

O Internet of Things (IoT) revoluciona as operações de negócios

Inovação e benefícios de economia de custo estão orientando a emergência rápida do Internet of Things (IoT). Longe do centro das atenções da mídia de dispositivos de casa inteligente e de dispositivos práticos, o IoT revolucionou as operações de negócios dentro de cada setor da indústria, particularmente dentro de logística, warehousing, linhas de produção, transporte de pipeline e gerenciamento de tráfego.

O networking of things está fornecendo novos níveis de dados importantes e recursos de gerenciamento e está mudando a maneira como fazemos negócios orientando eficiências operacionais. Por exemplo, Continental Tires anteriormente contava com anotações escritas para localizar carrinhos de borracha em sua fábrica de produção de pneus. Com este método, os funcionários tinham problemas em localizar esses carrinhos dentro da fábrica grande, o que, por sua vez, levava a atrasos de produção onerosos. A empresa resolveu o problema quando os carrinhos de borracha foram integrados ao sistema de gerenciamento de inventário usando sensores com wifi. Conectar os carrinhos usando sensores com wifi permitiu que os funcionários localizassem instantaneamente todos eles na fábrica a partir de seus dispositivos móveis.

Outro exemplo é o Kenya Pipeline Company, que atualizou sua infraestrutura de pipeline com módulos que detectavam níveis de pressão de óleo, temperaturas e velocidades de fluxo. Esses módulos de rede (dispositivos conectados) não apenas forneceram alertas e métricas em tempo real para o gerenciamento operacional, mas foram capazes de reagir e automaticamente desligar o pipeline na detecção de vazamentos de óleo, fossem eles causados por acidente ou por furto.

Esta nova era de conectividade, coleta de dados e gerenciamento de objetos do mundo físico introduz novos riscos de segurança, desde ataques virtuais sofisticados até hackers que estão empenhados em roubar dados e causar danos. A segurança de dispositivos do IoT é altamente dependente do software e de aplicativos que os gerenciam, colocando equipes de desenvolvimento de software na vanguarda virtual para conseguirem desenvolver aplicativos IoT seguros. Este artigo esboça as melhores práticas para técnicas de codificação seguras e funções de segurança que ajudarão as equipes de desenvolvimento a produzir aplicativos IoT robustos que mitigam os riscos de segurança do IoT.

As ameaças virtuais do IoT são reais e fazem títulos

Qualquer dispositivo que tenha conectividade de rede pode ser atacado, seja diretamente através da rede ou indiretamente com um aplicativo. Os dados que são coletados por dispositivos do IoT e, em seguida, processados por aplicativos colocados podem incluir dados pessoais. Esses dados pessoais são sempre de valor para os dados e identificam ladrões, há também os hackers que parecem gostar de causar caos pela fama na comunidade e autoestima. Os aplicativos e dispositivos do IoT também estão na mira de pessoas que estão envolvidas com guerra virtual, espionagem virtual, hacktivismo e até mesmo terrorismo. Um ataque virtual ao IoT tem potencial para paralisar serviços físicos e infraestrutura e é perceptível que um ataque virtual ao IoT pode até mesmo tirar vidas.

Em junho de 2010, um warm de computador altamente sofisticado e exclusivo chamado Stuxnet chamou a atenção da mídia mundial. O Stuxnet foi projetado para visar apenas controles de software específicos que são usados em uma usina nuclear iraniana. Ele usou vulnerabilidades do dia zero no Microsoft Windows para se propagar através da rede da usina nuclear e para verificar a presença do software Siemens Step7. O malware Stuxnet comprometeu com êxito o aplicativo Siemens e emitiu instruções para rapidamente aumentar e diminuir a velocidade de rotação das centrífugas, o que causou vibrações que levaram à quebra das centrífugas. Entre novembro de 2009 e janeiro de 2010, estima-se que mais de 1000 centrífugas foram destruídas pelo malware Stuxnet, atrasando significativamente o programa nuclear iraniano. O malware Stuxnet demonstra que máquinas conectadas no mundo físico podem ser danificadas comprometendo o aplicativo conectado que as controla.

Em fevereiro de 2015, um episódio de 60 Minutos demonstrou uma violação, a saber um ataque de estouro de buffer do aplicativo e o controle remoto subsequente de um carro, em que o hacker controlou para desativar os freios do carro. E em maio de 2015, um especialista em segurança de computador hackeou um avião usando o aplicativo de entretenimento; uma investigação subsequente do FBI relatou que ele controlou rapidamente a aeronave. Na maioria dos incidentes conhecidos do IoT, a brecha de segurança que foi explorada foi na camada de aplicativo. Portanto, a segurança com que os aplicativos IoT são desenvolvidos pode ser uma questão de vida e morte.

Desenvolvendo aplicativos seguros do IoT

A camada de aplicativo de um dispositivo do IoT fornece a maior superfície de ataque para hackers. A camada de aplicativo inclui qualquer aplicativo que tenha conectividade com o dispositivo do IoT, que pode incluir aplicativos da web locais, aplicativos baseados em nuvem e aplicativos de smartphone ou tablet. A segurança do aplicativo pode ser uma parte intrínseca do ciclo de vida de desenvolvimento de software (SDLC) para todos os aplicativos IoT, particularmente durante os estágios de design, desenvolvimento (escrita do código) e teste.

No estágio de planejamento ou design de um aplicativo IoT, deve haver uma avaliação formal de "cima a baixo" dos requisitos de segurança e privacidade do aplicativo planejado.

Projetando aplicativos IoT seguros

Os aplicativos IoT requerem uma abordagem de "Segurança pelo Design". Esta abordagem do design requer projetar funções de segurança a partir do zero e aplicar correções de segurança nas fases de desenvolvimento e teste do aplicativo. Se você esperar até depois de o aplicativo ser liberado, isso é não apenas uma receita para uma segurança geral fraca, mas também torna o processo de desenvolvimento mais longo e mais caro. Portanto, na fase de design do aplicativo é fundamental considerar e planejar todos os requisitos de segurança possíveis para o aplicativo IoT.

Além disso, quando os aplicativos IoT coletam, armazenam e processam dados pessoais, eles devem fazer isso em conformidade total com as leis de proteção e privacidade de dados. Essas leis podem ter vários graus de requisitos rigorosos, dependendo de qual país vêm os dados do cidadão.

No estágio de design, revise os requisitos de segurança para seu aplicativo IoT concluindo uma revisão de análise dos requisitos de segurança. Além disso, revise quais leis de proteção de dados se aplicam ao seu aplicativo IoT e realize uma revisão de análise dos requisitos de privacidade em relação a elas.

Dicas de análise dos requisitos de segurança

  • Planeje as funções de gerenciamento da conta do usuário. Certifique-se de que o aplicativo IoT terá um nível apropriado de customização da conta.
  • Projete um mecanismo seguro de reconfiguração de senha. Este processo é, com frequência, negligenciado em favor da conveniência do usuário, mas um processo de reconfiguração de senha fraco pode fornecer um backdoor fácil para o sistema.
  • Projete uma estrutura de conta do usuário para limitar privilégios de conta administrativa em uma base tem-que-ter. É aconselhável separar ações e direitos administrativos de contas do usuário padrão porque essa configuração limita o risco de configuração incorreta pelos usuários, o que pode causar sérios buracos na segurança.
  • Determine como as senhas de conta serão armazenadas pelo aplicativo. O armazenamento de senhas de texto simples em bancos de dados e arquivos simples deve ser evitado. A melhor prática é usar um algoritmo hash com salt, como SHA-256 e um salt, para calcular senhas em um valor do hash exclusivo, o que significa que as senhas não podem ser revertidas em texto simples.
  • Considere incluir uma função de autenticação de dois fatores, especialmente para aplicativos que processarão dados confidenciais que devem ser acessados de redes não confiáveis.
  • Considere incluir suporte para integrar o aplicativo IoT com sistemas de gerenciamento de contas, como o Microsoft Active Directory Services. Este recurso ajuda a integrar aplicativos IoT em ambientes da empresa.
  • Se você planeja armazenar dados pessoais ou confidenciais em ambientes de terceiros ou em ambientes não confiáveis, considere usar a criptografia para proteger os dados inativos.
  • Projete um recurso de atualização de software que assegure que apenas atualizações assinadas digitalmente (genuínas) possam ser aplicadas e, se factível, considere um processo de atualização automática.
  • Forneça uma função de notificação de segurança que permite que o aplicativo envie alertas de segurança, como tentativas de login com falha, com um sistema de monitoramento de segurança corporativo ou servidor syslog.
  • Convide um profissional de segurança para auditar e aprovar as funções de segurança e o design do aplicativo.

Dicas de análise dos requisitos de privacidade

  • Documente e justifique todo o uso de dados pessoais planejado pelo aplicativo.
  • Limite a coleta de dados pessoais para apenas o que é absolutamente necessário.
  • Considere usar rotinas para tornar anônimos os dados pessoais; um processo que, quando feito corretamente, pode remover a carga de atender aos requisitos de privacidade de dados jurídicos.
  • Planeje gravar rotinas ou usar soluções (como SSL) que criptografam todos os dados pessoais armazenados e também como esses dados são transmitidos através das redes, incluindo redes privadas.
  • Certifique-se de que haverá transparência de privacidade com os consumidores. Qualquer coleta, processamento e armazenamento de dados pessoais, incluindo o armazenamento em nuvem, deve ficar claro para o consumidor dentro de uma declaração de privacidade. Antes de usar dados pessoais, obtenha o consentimento explícito do usuário e certifique-se de que o usuário assine ou concorde com um contrato de privacidade, que explica o uso de todos os dados pessoais pelo aplicativo.
  • Considere outros tipos de dados que estão sujeitos às regulamentações do setor. Certifique-se de que todos os requisitos regulamentares sejam totalmente entendidos e sejam obedecidos como parte do design do aplicativo.
  • Considere a privacidade de aplicativos móveis. Um aplicativo móvel pode fazer interface com GPS, cartões SIM, números de identificação de dispositivo, dados do dispositivo e dados de aplicativos móveis de terceiros. Todas essas interações podem ter implicações de privacidade no aplicativo e devem ser consideradas.

Codificando aplicativos IoT seguros

Muitos tipos de aplicativos diferentes podem controlar e gerenciar dispositivos do IoT, como aplicativos da web locais e baseados em nuvem, aplicativos móveis e o software que é executado no próprio dispositivo do IoT.

Aplicativos da web IoT: dicas de codificação segura

Os aplicativos da web são comumente usados para gerenciar dispositivos do IoT. Se o aplicativo da web tiver que ser hospedado diretamente do dispositivo do IoT, de um servidor de rede interna ou na nuvem, o desenvolvimento (codificação) desses aplicativos da web deve aderir às melhores práticas de desenvolvimento de segurança do aplicativo da web, como OWASP Top Ten.

Um erro comum com o desenvolvimento do aplicativo da web IoT é não proteger diligentemente os aplicativos da web de rede privada com o mesmo grau que os aplicativos da web voltados ao público. No entanto, as redes internas podem ser comprometidas e se tornarem ambientes não confiáveis. Portanto, as vulnerabilidades de aplicativos da web voltados internamente podem ser exploradas por hackers e malware.

Considere essas dicas de codificação segura para aplicativos da web IoT:

  • Limpe todas as entradas do usuário. Essa técnica de codificação pode evitar os ataques mais comuns de aplicativos da web, que aproveitam a validação de entrada de dados do usuário codificados de maneira fraca para injetar scripts maliciosos, executar comandos do banco de dados SQL e executar estouros de buffer. Portanto, é uma prática de codificação de aplicativo fundamental para todos os campos de entrada do usuário serem purificados para aceitar apenas uma "lista de desbloqueio" de caracteres esperados. Certamente, a validação do lado do cliente de códigos no navegador da web (como scripts Java), mas a sanitização de entrada deve sempre ocorrer dentro do aplicativo (servidor) porque a maioria das violações é tentada injetando-se o código por meio da URL.
  • Use cookies com segurança. Quando o aplicativo usa SSL para assegurar que o aplicativo marque os cookies como seguros, o SSL automaticamente também os criptografa. Quando o aplicativo da web não tiver como objetivo ser protegido por SSL, codifique uma rotina para criptografar os valores de cookies com um algoritmo de criptografia reconhecido pelo setor, como AES 256.
  • Bloqueie o relatório de erro de aplicativo. Essas mensagens de erro de aplicativo podem fornecer aos hackers pistas sobre como violar o aplicativo e as contas do usuário. Até mesmo a mensagem de erro mais simples, como "senha de usuário incorreta" pode revelar que um nome de conta do usuário foi corretamente imaginado.
  • Use rotinas de criptografia de dados. Se você precisar do aplicativo para criptografar dados pessoais ou confidenciais, não tente gravar suas próprias rotinas de criptografia. Em vez disso, use bibliotecas que usam algoritmos e metodologias de criptografia reconhecidos pelo setor.
  • Avalie e documente a segurança de bibliotecas de terceiros que o aplicativo usa antes de usá-las e, em seguida, monitore-as continuamente quanto a vulnerabilidades de segurança e correções. Por exemplo, descobriu-se recentemente que OpenSSL, uma biblioteca de software livre que é usada para criptografar comunicações de dados, tem falhas, o que torna os aplicativos da web vulneráveis a ataques. O problema foi rapidamente resolvido pela liberação de uma versão atualizada da biblioteca.
  • Certifique-se de que todos os desenvolvedores, incluindo as empresas contratadas e os terceiros, sejam qualificados e treinados para usar técnicas de codificação segura do aplicativo da web.

Aplicativos do dispositivo móvel do IoT: dicas de codificação segura

Aplicativos IoT móveis, especificamente aplicativos de smartphone e tablet, são ativamente visados por hackers. As mesmas técnicas de codificação segura que são usadas com aplicativos da web também são requeridas quando você desenvolve aplicativos IoT móveis. No entanto, considerações adicionais de segurança do aplicativo, como autenticação de dispositivo móvel, telecomunicações e comunicações de dados SMS, e riscos adicionais à privacidade, existem.

Considere essas dicas de codificação segura para aplicativos de dispositivo móvel IoT:

  • Avalie a integração de aplicativos com os recursos e capacidades de sua plataforma de dispositivo móvel e sistema operacional, que podem variar com cada tipo de plataforma de dispositivo móvel e sistema operacional. A integração com funções móveis pode aprimorar a segurança, mas elas também podem enfraquecer a segurança do aplicativo. Por exemplo, usar o scanner de impressão digital biométrica em dispositivos Apple pode aprimorar o processo de autenticação de um aplicativo móvel; no entanto, contar unicamente com um sistema de autenticação de dispositivo móvel que pode ser desativado pode enfraquecer seriamente o aplicativo.
  • Certifique-se de que seu aplicativo móvel IoT proteja todos os dados pessoais e sensíveis enquanto em trânsito e que os dados sejam armazenados no dispositivo móvel com criptografia. O aplicativo precisa forçar o uso de serviços de rede criptografados pela Internet e conexões com wifi (ou seja, assumir que elas são públicas) e também incluir dados que são enviados através de redes de celular. Além disso, certifique-se de que o aplicativo criptografe todos os dados pessoais armazenados em mídia removível.

Software de dispositivo do IoT: dicas de codificação segura

Além das técnicas de aplicativo seguro já abrangidas, você tem algumas considerações adicionais no desenvolvimento de software que irão operar nos dispositivos do IoT, como o uso de firmware e o controle de acesso de interfaces físicas.

Considere essas dicas de codificação segura para o software de dispositivo IoT:

  • Certifique-se de usar a versão mais recente do firmware de dispositivo do IoT.
  • Monitore os fabricantes de firmware para notificações de atualizações de firmware e a descoberta de vulnerabilidades de segurança de firmware.
  • Teste novas liberações de firmware com o aplicativo. Nova liberações de firmware podem exigir uma atualização no código do aplicativo.
  • Revise os requisitos de interfaces físicas para seu dispositivo do IoT, que podem requerer que o aplicativo forneça uma função de controle de acesso.
  • Os aplicativos IoT =devem ser capazes de ser atualizados com correções de segurança. As correções devem ser digitalmente assinadas e verificadas pelo processo de atualização do aplicativo antes da instalação para assegurar que correções maliciosas não possam ser instaladas.
  • Os aplicativos IoT devem criptografar todos os dados pessoais e também os dados do aplicativo e de dispositivo do IoT sensíveis, que devem ser armazenados na mídia removível do dispositivo do IoT (ou seja, placas de memória).

Testando a segurança nos aplicativos IoT

Uma das técnicas mais efetivas na identificação de fraquezas e falhas de segurança na fase de desenvolvimento, independentemente do tipo de aplicativo IoT, é concluir uma revisão de código. As revisões de código devem ser executadas por gravadores do codificador adequadamente qualificados que são idealmente independentes do projeto de desenvolvimento. Certifique-se de que a revisão de código seja um processo rigoroso formal e considere usar desenvolvedores que trabalham em projetos diferentes e usando ferramentas como IBM Security AppScan Source. AppScan Source pode varrer e identificar vulnerabilidades do código-fonte de aplicativo móvel e da web antecipadamente no SDLC (antes do estágio de teste). Suporta o código que é escrito em JavaScript, HTML5, Cordova, Java, Objective-C ou a plataforma de dispositivo móvel corporativa IBM MobileFirst Platform.

As revisões de código podem parecer uma adição cara e que consome tempo para o SDLC, mas elas podem pagar grandes dividendos evitando uma retestagem dispendiosa, evitando correções de segurança pós-liberação e evitando danos à sua reputação ao ter um aplicativo IoT não seguro comprometido. Além das revisões de código no estágio de desenvolvimento, o estágio de teste de SDLC deve incluir o teste de segurança intensiva, que deve ser específico para cada tipo de aplicativo IoT.

Dicas de teste de segurança para aplicativos da web IoT

Executar varreduras de vulnerabilidade e testes de penetração para detectar falhas de segurança de software é uma etapa final vital a ser executada antes de você liberar aplicativos IoT. Testar o código do aplicativo evita vulnerabilidades de aplicativo comuns, como injeção SQL, cross-site scripting, falsificação de solicitação de cross-site e ataques de estouro de buffer.

Considere essas dicas de teste de segurança para aplicativos da web IoT

  • Use uma ferramenta de verificação de vulnerabilidade de aplicativo como IBM Security AppScan para testar com segurança o aplicativo e identificar vulnerabilidades do aplicativo da web. Consulte o tutorial do developerWorks, "Verificar seu aplicativo para localizar e corrigir vulnerabilidades do OWASP Top 10 2013", para obter mais informações sobre esta abordagem.
  • Certifique-se de que os desenvolvedores entendam os problemas quando a codificação de aplicativo não segura for descoberta.
  • Não se esqueça de proteger todas as APIs de teste.
  • Execute um teste de penetração, que replica a abordagem que os hackers habilidosos realizam. O teste de penetração deve ser executado por certified and experienced ethical hackers (CEH). A abordagem é considerada uma melhor prática de segurança para qualquer aplicativo voltado para a Internet. Conclua o teste de penetração antes da liberação do aplicativo, depois de qualquer mudança de codificação significativa e anualmente depois disso.
  • Certifique-se de que os testadores de penetração sejam capazes de explicar adequadamente as vulnerabilidades localizadas e seu método de exploração para desenvolvedores.

Dicas de teste de segurança para aplicativos móveis IoT

Use uma ferramenta de verificação de vulnerabilidade de aplicativo móvel especializada, como IBM Security AppScan Mobile Analyzer, que é especificamente projetado para aplicativos móveis de teste de segurança. O AppScan Mobile Analyzer não apenas detecta vulnerabilidades de aplicativo de dispositivo móvel, mas também mostra detalhadamente a vulnerabilidade aos desenvolvedores, juntamente com o nível de risco e as soluções para tratar a vulnerabilidade.

Dicas de teste de segurança para software de dispositivo IoT

O software de dispositivo IoT deve ser submetido a teste por profissionais e empresas de segurança especializados em encontrar vulnerabilidades em software de dispositivo IoT.

Conclusão

O desenvolvimento de aplicativos IoT seguros impulsiona equipes de desenvolvimento para fora de sua zona de conforto tradicional. Reservar tempo para analisar funções de segurança e requisitos de privacidade no estágio de planejamento ou de design paga grandes dividendos no desenvolvimento de um aplicativo IoT seguro. Ao executar uma revisão de código com o IBM Security AppScan Source no estágio de desenvolvimento, os desenvolvedores podem detectar e corrigir vulnerabilidades de código antecipadamente no desenvolvimento, o que é mais eficiente do que detectar e corrigir vulnerabilidades no estágio de teste. Enquanto no estágio de teste, as equipes de desenvolvimento devem replicar os ataques da camada de aplicativo que os hackers executam usando ferramentas como IBM Security AppScan e IBM Security AppScan Mobile Analyzer. O AppScan inclui tutoriais de vídeo úteis, explicações de vulnerabilidades e exemplos de codificação segura que educam os desenvolvedores a melhorar suas técnicas de codificação segura e sua confiança na composição de aplicativos IoT seguros.

Essas técnicas de desenvolvimento beneficiam as equipes de desenvolvimento reduzindo o tempo e o custo gerais de desenvolvimento e reduzindo significativamente a probabilidade de vulnerabilidades do aplicativo IoT. As vulnerabilidades de aplicativo que são descobertas em aplicativos IoT depois de sua liberação, especialmente quando descobertas por um hacker, tendem a demorar para serem resolvidas e podem causar danos para a empresa e para a reputação da equipe de desenvolvimento.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Internet of Things, Desenvolvimento móvel
ArticleID=1021990
ArticleTitle=Combatendo ameaças virtuais do IoT
publish-date=11242015