SEGURANÇA E PROTEÇÃO DE SOFTWARE

Tópicos Principais e Palestrantes

Este ano o ISSISP oferecerá cursos excelentes nas áreas principais de segurança e proteção de software. Em particular em técnicas de proteção de software: ofuscação, incorruptibilidade e marca d’água, proteção dinâmica por virtualização, segurança de software: problemas e contramedidas, varredura e exploração de vulnerabilidades, engenharia reversa e análise de binários maliciosos.


Palestrantes
  • Christian Collberg (Universidade do Arizona, Estados Unidos)
  • Jack Davidson (Universidade da Virginia, Estados Unidos)
  • Erik Poll (Universidade de Radboud, Holanda)
  • Yuan Gu (IRDETO, Canadá)
  • Arun Lakhotia (Universidade da Louisiana, Estados Unidos)
  • Roberto Giacobazzi (Universidade de Verona, Itália e Instituto de Software IMDEA, Espanha)

  • Descrição dos Palestrantes:


    collberg
    Christian Collberg (Universidade da Arizona): Proteção de Software
    Resumo: Proteção de software é um ramo da segurança de computadores que estuda técnicas para proteger segredos contidos em programas de computador de serem descobertos, modificados, ou redistribuídos. Neste curso mostraremos como um adversário pode estudar um programa sob seu controle, por meio de ferramentas de engenharia reversa, com a finalidade de extrair informação proprietária ou para modificar o programa a fim de evadir um mecanismo de controle. Serão discutidos importantes algoritmos de ofuscação, incorruptibilidade, e marca d’água; bem como de engenharia reversa.

    davidson-cropped
    Jack Davidson (Universidade da Virginia): Proteção de código por translação dinâmica
    Resumo: O termo computação é cada vez mais onipresente, sendo utilizado em muitas áreas de nosso cotidiano, desde celulares, software para gerenciamento de registros financeiros e de saúde, comércio eletrônico, até softwares complexos para infraestruturas críticas. Usuários ou clientes destas distintas plataformas de computação exigem alta qualidade, serviço ininterrupto, e privacidade e segurança de suas informações pessoais. Além disso, devido a complexidade dos softwares utilizados em infraestruturas críticas, torna-se difícil construir um software que seja impermeável a ataques maliciosos. Na verdade, todos os dias são evidenciados relatos de invasões e violações de segurança que resultam em perda financeira e/ou divulgação de informações confidenciais. Uma abordagem promissora para proporcionar proteção de software contra uma variedade de ataques consiste na utilização de virtualização por meio da translação dinâmica do software. Este curso irá apresentar aos participantes o conceito de translação dinâmica, discutir a sua implementação eficiente, e descrever seu uso para proteger o software de vários ataques. Para fins práticos, o curso irá incluir vários exercícios onde o participante implementará um esquema de proteção utilizando translação dinâmica de software.

    images
    Erik Poll (Universidade de Radbound):
    Segurança de Software de aplicações embarcadas
    Resumo: O uso de software é cada vez mais intenso em dispositivos embarcados, trazendo assim outros vetores de ataque (notadamente ataques side-channel) e mais restrições em suas implementações. Ainda, técnicas de análise de caixa-preta são particularmente relevantes para software embarcado, uma vez que o acesso ao binário não é trivial. Este curso proverá uma visão geral dos aspectos de segurança de software em dispositivos embarcados, especialmente para smartcards, e discutirá técnicas automáticas de engenharia reversa de implementações de protocolo, que é uma forma avançada de fuzzing. A utilização desta técnica tem sido um sucesso para padrões de protocolo de rede, bem como para dispositivos embarcados.

    images-1
    Yuan Gu (IRDETO): O papel da indústria na proteção de software
    Resumo: Atualmente, não importa se é para uso comercial ou pessoal, os ambientes não confiáveis estão cada vez mais presentes, desde dispositivos de consumo até redes domésticas, Internet pública, serviços de nuvem e Web, e Internet das coisas, na qual os modelos tradicionais de segurança não são suficientes para resolver os modelos de ataque. Isso tudo torna a segurança de caixa-branca e a proteção de ativos digitais muito mais desafiador. Este curso descreve cenários de ataque caixa-branca, padrões de segurança e ciclo de vida de segurança de um ativo digital desde sua criação, distribuição até sua utilização em campo.

    recognition_Lakhotia-Arun
    Arun Lakhotia (Universidade de Louisiana): Análise de binários maliciosos
    Resumo: A análise de binários maliciosos apresenta novos desafios que não estão presentes na análise de programas usuais. Além do fato de estarem no formato binário, o que já dificulta a análise, estes são explicitamente criados para dificultar a análise por meio de construções de problemas indecidíveis em seu fluxo de execução. No entanto, o curso apresentará métodos de análise que podem responder a uma variedade de questões relacionadas a códigos maliciosos. Para fins práticos, o aluno analisará um código malicioso por meio da extração de propriedades semânticas, e utilizará estas, para encontrar códigos similares em um repositório por meio de aprendizado de máquina. Oportunidades e desafios de pesquisa futura também serão realçados durante os exercícios práticos.

    wyseur
    Roberto Giacobazzi (Universidade de Verona): Proteção de código baseado em semântica
    Resumo: Neste curso vamos estudar métodos sistemáticos e automáticos para proteção de código contra qualquer ferramenta automatizada de engenharia reversa, tais como depuração, análise estática, análise dinâmica, tracing, profiling, etc. Vamos especificar estas ferramentas como abstrações adequadas de um interpretador, proporcionando uma abordagem uniforme de um modelo de ataque em software. Ofuscação e marcas d’água serão então discutidos como métodos para construir interpretadores abstratos, ou seja, que mantem informações ocultas. A abordagem fornece uma base teórica avançada para entender profundamente o ocultamento de informações na programação. Métodos sistemáticos para construir interpretadores abstratos serão discutidos em conjunto com exemplos concretos, na qual serão apresentadas direções para pesquisas futuras.