paint-brush
Usos indevidos comuns de APIs de criptografia Python na naturezapor@cryptosovereignty
573 leituras
573 leituras

Usos indevidos comuns de APIs de criptografia Python na natureza

Muito longo; Para ler

Um estudo empírico usando LICMA analisou 895 projetos Python populares e 51 projetos MicroPython, descobrindo que 52,26% dos projetos Python apresentam uso indevido de criptografia. O design da API do Python contribui para menos usos indevidos, em contraste com Java e C. As análises híbridas são cruciais para avaliações de segurança abrangentes.
featured image - Usos indevidos comuns de APIs de criptografia Python na natureza
Crypto Sovereignty Through Technology, Math & Luck HackerNoon profile picture
0-item

Autores:

(1) Anna-Katharina Wickert, Technische Universität Darmstadt, Darmstadt, Alemanha ([email protected]);

(2) Lars Baumgärtner, Technische Universität Darmstadt, Darmstadt, Alemanha ([email protected]);

(3) Florian Breitfelder, Technische Universität Darmstadt, Darmstadt, Alemanha ([email protected]);

(4) Mira Mezini, Technische Universität Darmstadt, Darmstadt, Alemanha ([email protected]).

Tabela de Links

Resumo e 1 Introdução

2. Antecedentes

3 Projeto e Implementação do Licma e 3.1 Projeto

3.2 Implementação

4 Metodologia e 4.1 Pesquisa e download de aplicativos Python

4.2 Comparação com Estudos Anteriores

5 Avaliação e 5.1 Projetos GitHub Python

5.2 MicroPython

6 Comparação com estudos anteriores

7 ameaças à validade

8 Trabalhos Relacionados

9 Conclusão, Agradecimentos e Referências


ABSTRATO

Antecedentes : Estudos anteriores mostraram que até 99,59% dos aplicativos Java que usam APIs criptográficas fazem mau uso da API pelo menos uma vez. No entanto, esses estudos foram conduzidos em Java e C, enquanto faltam estudos empíricos para outras linguagens. Por exemplo, um estudo controlado de usuários com tarefas criptográficas em Python mostrou que 68,5% dos desenvolvedores profissionais escrevem uma solução segura para uma tarefa criptográfica.


Objetivos : Para entender se essa observação se aplica ao código do mundo real, conduzimos um estudo sobre o uso indevido de criptografia em Python.

Método : Desenvolvemos uma ferramenta de análise estática que cobre usos indevidos comuns de 5 APIs criptográficas Python diferentes. Com esta análise, analisamos 895 projetos Python populares do GitHub e 51 projetos MicroPython para dispositivos embarcados. Além disso, comparamos nossos resultados com os resultados de estudos anteriores.

Resultados : Nossa análise revela que 52,26% dos projetos Python apresentam pelo menos um uso indevido. Além disso, o design da API de algumas bibliotecas criptográficas Python ajuda os desenvolvedores a evitar o uso indevido de funções criptográficas, que eram muito mais comuns em estudos conduzidos com código Java e C. Conclusão : Concluímos que podemos ver um impacto positivo do bom design da API no uso indevido de criptografia para aplicativos Python. Além disso, nossa análise dos projetos MicroPython revela a importância das análises híbridas.

1. INTRODUÇÃO

A criptografia, doravante criptografada, é amplamente utilizada hoje em dia para proteger nossos dados e garantir a confidencialidade. Por exemplo, sem criptografia, não seríamos capazes de usar serviços bancários online ou fazer compras online com segurança. Infelizmente, resultados de pesquisas anteriores mostram que a criptografia é frequentemente usada de forma insegura [3, 4, 7, 9, 11]. Um desses problemas é a escolha de um parâmetro inseguro, como um modo de bloco inseguro, para criptografia primitivas como a criptografia. Existem muitas ferramentas de análise estática para identificar esses usos indevidos, como CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] e Cryptoguard [12].


Embora essas ferramentas e os respectivos estudos in-the-wild se concentrem em Java e C, estudos de usuários sugerem que as APIs Python existentes reduzem o número de usos indevidos de criptografia. Acar et al. [2] conduziram um experimento com 307 usuários do GitHub que tiveram que resolver 3 tarefas de desenvolvimento relacionadas à criptografia. Eles observaram que 68,5% dos desenvolvedores profissionais escreveram uma solução segura em Python para determinada tarefa. Dentro de um experimento controlado com 256 desenvolvedores Python que tentaram resolver tarefas criptográficas simples, Acar et al. [1] identificaram que um design de API simples, como a criptografia da biblioteca Python, apoia os desenvolvedores na escrita de código seguro. No entanto, nenhum estudo empírico ainda confirmou que o uso indevido de criptografia em Python ocorre com menos frequência do que em Java ou C.


Para avaliar empiricamente o uso indevido de criptografia em Python, apresentamos LICMA , uma estrutura de análise multilíngue com suporte para 5 APIs de criptografia Python diferentes e a API JCA de Java. Fornecemos 5 regras diferentes [4] para todas as APIs Python e 6 regras diferentes [4] para JCA detectar os usos indevidos de criptografia mais comuns. Com o LICMA, analisamos 895 aplicativos Python populares do GitHub e 51 projetos MicroPython para obter insights sobre o uso indevido do Python. Identificamos que 52,26% dos aplicativos Python GitHub com uso de criptografia têm pelo menos um uso indevido, causando 1.501 usos indevidos. No total, apenas 7% dos usos indevidos estão dentro do próprio código da aplicação, enquanto os restantes usos indevidos são introduzidos por dependências. Além disso, nosso estudo de projetos MicroPython revela que os desenvolvedores no domínio incorporado tendem a usar criptografia por meio de código C. Assim, revelando a importância das análises estáticas híbridas, que podem rastrear informações do programa, por exemplo, um gráfico de chamadas, em múltiplas linguagens [5, 10].


Para melhorar ainda mais nossa compreensão se as APIs Python são menos propensas ao uso indevido de criptografia, fazemos as seguintes contribuições:


• Uma nova ferramenta de análise multilíngue para detectar uso indevido de criptografia em Python e Java. Para Python, cobrimos o uso indevido de criptografia para 5 APIs criptográficas comuns do Python e para Java, a API padrão JCA.


Tabela 1: Seis usos indevidos de criptografia comumente discutidos em Java e C [4, 13] com um exemplo de violação em Python.


• Um estudo empírico sobre o uso indevido de criptografia nos 895 aplicativos Python mais populares no GitHub, revelando 1.501 usos indevidos.


• Uma comparação de nossas descobertas em aplicativos Python com estudos anteriores sobre uso indevido de criptografia em ambientes selvagens para aplicativos Android e imagens de firmware em C. Observamos que a maioria dos aplicativos Python são mais seguros e a distribuição entre os tipos concretos de uso indevido difere muito .


• Um estudo empírico sobre o uso indevido de criptografia em projetos MicroPython que revela a importância das análises estáticas híbridas.


• Um pacote de replicação incluindo ambos os conjuntos de dados utilizados para o nosso estudo, os resultados da nossa análise e o código do LICMA[1].


Este artigo está disponível no arxiv sob licença CC BY 4.0 DEED.


[1] dx.doi.org/10.6084/m9.figshare.16499085