Vulnerabilidades na Adaptação de Software de 32 para 64 bits

Ainda a propósito do SINO, um dos artigos em que estive envolvido (com Ibéria Medeiros) estuda o problema das vulnerabilidades que surgem quando código escrito para processadores de 32 bits é mal "portado" para processadores de 64. Mais precisamente os problemas surgem quando código escrito em linguagem C para o modelo de dados ILP32 é mal portado para o modelo de dados LP64, usado pelos derivados do SO Unix em processadores de 64 bits (o modelo da Microsoft, LLP64, não gera este tipo de problemas). Além de estudar o problema, o artigo apresenta a ferramenta de análise estática de código DEEEP, que descobre esse tipo de vulnerabilidades. A ferramenta descobriu uma vulnerabilidade desse tipo no Sendmail.

Resumo do artigo:
Fabricantes como a Intel e a AMD começaram a comercializar processadores com arquitecturas de 64 bits mas muito do software executado nesses processadores foi desenvolvido inicialmente para arquitecturas de 32 bits. As aplicações concebidas na linguagem de programação C para a arquitectura de 32 bits ao serem portadas para 64 bits podem ficar com vulnerabilidades relacionadas com a manipulação de inteiros. Este artigo estuda as vulnerabilidades que podem surgir quando se adapta (“porta”) sem os necessários cuidados software de 32 para 64 bits, considerando o modelo de dados LP64, muito utilizado em software de código aberto. O artigo propõe também a ferramenta DEEEP que faz a detecção dessas vulnerabilidades através de análise estática de código fonte. A ferramenta é baseada em duas ferramentas de análise estática de código abertas, que são usadas para encontrar bugs na manipulação de inteiros através de verificação de tipos, e para fazer análise de fluxo de dados para verificar se funções perigosas (p.ex., memcpy, strcpy) estão acessíveis de fora do programa. Após estas duas formas de análise, a ferramenta DEEEP permite correlacionar essas duas informações identificando se os bugs encontrados são realmente vulnerabilidades, ou seja, se são atacáveis. O artigo apresenta resultados da utilização da ferramenta com código vulnerável sintético, criado especificamente para avaliar a ferramenta, e com o Sendmail.

Artigo completo: http://www.di.fc.ul.pt/~mpc/pubs/medeiros-sino07_v2.pdf