Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação

Click here to load reader

  • date post

    18-Feb-2017
  • Category

    Technology

  • view

    1.015
  • download

    0

Embed Size (px)

Transcript of Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação

  • Anlise de Cdigo e Segurana de SoftwarePor Davidson Boccardo Data: 23/11/2016

  • ClavisSegurana da informao

    www.clavis.com.br

    Green HatSegurana da Informao

    whoamiDoutor em Engenharia Eltrica (UNESP/ULL)

    Instrutor dos cursos de Forense, Testes de Invaso e de Desenvolvimento Seguro, Proteo de Software

    Coordenador de projetos de pesquisa, orientador de alunos de mestrado/doutorado MPMQ/PPGI - mais de 50 artigos cientficos publicados

    Entre 2007 e 2009 trabalhou no Software Research Lab da University of Louisiana at Lafayette, na qual se especializou em anlise esttica e dinmica de artefatos maliciosos

    Entre 2010 e 2015 desenvolveu metodologias para o Servio de Avaliao de Produtos de Software no Laboratrio de Informtica da Diviso de Metrologia em Tecnologia da Informao e Telecomunicaes do Inmetro

    02

    DAVIDSON RODRIGO BOCCARDODIRETOR DO GREEN HAT LABS

    Green HatSegurana da Informao

  • Green HatSegurana da informao

    www.clavis.com.br

    Sobre a Green Hat

    Anlise de SeguranaOrientada por Dados

    Anlise de Cdigo e Segurana de Software

    Auditorias Teste de Invaso

    Forense Computacional

    2009: empresa spin-off corporativa que nasceu a

    partir de um grupo da Clavis Segurana da

    Informao 2010: Framework de Teste de Invaso (FINEP) 2015: Auditoria de Cdigo-Fonte e Anlise Dinmica 2016: Anlise de Cdigo e Segurana de Software 2016: Anlise de Segurana Orientada por Dados

    (FAPERJ)

    Green Hat

    01

    Auditoria de Cdigo-Fonte Anlise dinmica

  • Green HatSegurana da Informao

    www.clavis.com.br

    Segurana de Software

    A economia e as defesas das naes dependem, em grande parte, da execuo de software confivel

    Software onipresente! afeta todos os aspectos de nossas vidas pessoais e profissionais

    Vulnerabilidades de software tambm so ubquas, comprometendo:

    identidades pessoais

    propriedade intelectual

    confiana do consumidor

    servios empresariais e operaes

    infra-estruturas crticas e governo

    03

  • Green HatSegurana da Informao

    www.clavis.com.br

    Falhas crescentes envolvendo software 04

    [GIZMODO, 2014] [FINANCIAL TIMES, 2014]

  • Green HatSegurana da Informao

    www.clavis.com.br

    Falhas crescentes envolvendo software 05

    [SLASHDOT, 2012]

    [REDDIT, 2014]

    [THEGUARDIAN, 2013]

  • Green HatSegurana da Informao

    www.clavis.com.br

    Falhas crescentes envolvendo software 06

    [NEWYORKTIMES, 2011] [FORBES, 2014]

  • Green HatSegurana da Informao

    www.clavis.com.br

    Falhas de software so custosas 07

    [NEWYORKTIMES, 2014]

    [THE WALL STREET JORNAL, 2014]

  • Green HatSegurana da Informao

    www.clavis.com.br

    Maioria das vulnerabilidades so causadas por erros de programao 64% das vulnerabilidades da base do NIST NVD 51% dessas so originadas em erros clssicos como buffer overflows, cross-site scripting, falhas de injeo

    Vulnerabilidades mais comuns incluem: Integer overflow Buffer overflow Format string Autenticao ausente Autorizao ausente ou incorreta Confiar em entradas no-confiveis

    08Origem das falhas de software

  • Green HatSegurana da Informao

    www.clavis.com.br

    Comea com o entendimento de prticas de codificao inseguras e como podem ser exploradas

    Projetos inseguros podem levar a erros intencionais, ou seja, o cdigo est corretamente implementado, mas o software resultante vulnervel

    Projetos seguros exigem um entendimento dos requisitos de

    software funcionais e no-funcionais

    Codificao segura exige um

    entendimento especfico de cada

    linguagem de programao

    09Desenvolvimento de Software Seguro

  • Green HatSegurana da Informao

    www.clavis.com.br

    Fontes de Insegurana em Software

    Consideraes mnimas ou ausentes de segurana durante todo o ciclo de vida do software

    Complexidade, mudanas, suposies incorretas

    No pensar como um atacante

    Especificaes e projetos falhos

    Implementao pobre das interfaces de software

    Interaes inesperadas e no-intencionais

    Conhecimento inadequado de prticas de codificao segura

    10

  • Green HatSegurana da Informao

    www.clavis.com.br

    11

    Anlise de requisitos de segurana e arquitetura de software

    Inspeo de cdigo e programao segura

    Anlise de fluxo de controle e de dados

    Anlise de vulnerabilidades (CWE/SANS Top 25, OWASP Top 10)

    Anlise dinmica de software e testes funcionais

    Proteo de Software

    Ofuscao, Incorruptibilidade e Marca d'gua

    Anlise de Cdigo e Segurana de Software

  • Green HatSegurana da Informao

    www.clavis.com.br

    Anlise de Requisitos de Segurana e Arquitetura de Software 12

    Requisitos gerais de segurana

    Confidencialidade, integridade e disponibilidade

    Ambiente de implantao, arquivamento, anti-pirataria

    Gerenciamento de sesses, gerenciamento de erros e excesses, gerenciamento de parmetros de configurao

    Arquitetura de segurana

    Princpios bsicos de projeto seguro: reduo das superfcies de ataque, falha segura, defesa em profundidade, privilgio mnimo, separao de deveres, etc

    Utilizao correta de algoritmos criptogrficos e protocolos de segurana

  • Green HatSegurana da Informao

    www.clavis.com.br

    Inspeo de Cdigo e Programao Segura13Anlise do Fluxo de Controle: Rastreabilidade de Software

  • Green HatSegurana da Informao

    www.clavis.com.br

    14Inspeo de Cdigo e Programao SeguraAnlise do Fluxo de Controle: Funcionalidades Escondidas

  • Green HatSegurana da Informao

    www.clavis.com.br

    15Inspeo de Cdigo e Programao SeguraOrientaes para Codificao Segura

  • Green HatSegurana da Informao

    www.clavis.com.br

    16

    Um estouro de buffer ocorre quando dados so gravados fora dos limites da memria alocada para uma estrutura de dados especfica

    Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Buffer overflow

    Origem

    Destino

    16 Bytes

    Memria Alocada Memria Adjacente

    Montparnasse derailment [1895]

  • Green HatSegurana da Informao

    www.clavis.com.br

    17Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Buffer overflow

    Ocorre quando o limite de buffer negligenciado e no-verificado

    Pode ocorrer em qualquer segmento de memria

    Pode ser explorado para modificar:

    varivel

    ponteiro de dados

    ponteiro de funo

    endereo de retorno na pilha

  • Green HatSegurana da Informao

    www.clavis.com.br

    18Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Buffer overflow

    printf(Nome:.\n"); rc = scanf("%s", registro[idx].nome);

    if (rc != 1) {

    printf(Entrada invlida.\n");

    exit(1);

    }

  • Green HatSegurana da Informao

    www.clavis.com.br

    19Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Buffer overflow

    printf(Nome:.\n"); rc = scanf("%s", registro[idx].nome);

    if (rc != 1) {

    printf(Entrada invlida.\n");

    exit(1);

    } Captura at acabar a entrada ouencontrar um espao

  • Green HatSegurana da Informao

    www.clavis.com.br

    20Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Buffer overflow

    void* rp;

    ...

    printf(Nome:.\n");

    rp = fgets(registro[idx].nome, sizeof(registro[idx].nome), stdin);

    if(rp == NULL) {

    printf(Entrada invlida.\n");

    exit(1);

    } Captura at acabar a entrada ou

    atingir o limite do buffer

  • Green HatSegurana da Informao

    www.clavis.com.br

    21

    Uma entrada de usurio maliciosa enviada para algum processador:

    Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo

    Processador Tipo de Injeo

    HTML Parser (inc. navegador) Cross-Site Scripting (XSS)

    Shell OS Command

    C printf () Format String

    Banco de Dados SQL

    Funo de acesso a arquivo (fopen()) Pathname

  • Green HatSegurana da Informao

    www.clavis.com.br

    22Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo SQL

    Programas devem tomar medidas para garantir que quaisquer dados que cruzem uma fronteira de confiana sejam apropriados e no-malicioso

  • Green HatSegurana da Informao

    www.clavis.com.br

    23Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo SQL

    boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException {

    Connection connection = getConnection(); ...

    String pwd = new String(password);

    String sqlString = "SELECT * FROM Users WHERE name = ' + name + "' AND password = '" + pwd + "'";

    Statement stmt = connection.createStatement();

    ResultSet rs = stmt.executeQuery(sqlString);

    if (!rs.next())

    return false;

    }

  • Green HatSegurana da Informao

    www.clavis.com.br

    boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException {

    Connection connection = getConnection(); ...

    String pwd = new String(password);

    String sqlString = "SELECT * FROM Users WHERE name = ' + name + "' AND password = '" + pwd + "'";

    Statement stmt = connection.createStatement();

    ResultSet rs = stmt.executeQuery(sqlString);

    if (!rs.next())

    return false;

    }

    24Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo SQL

  • Green HatSegurana da Informao

    www.clavis.com.br

    boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException {

    Connection connection = getConnection(); ...

    String pwd = new String(password);

    String sqlString = "SELECT * FROM Users WHERE name = ' + name + "' AND password = '" + pwd + "'";

    Statement stmt = connection.createStatement();

    ResultSet rs = stmt.executeQuery(sqlString);

    if (!rs.next())

    return false;

    }

    25Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo SQL

    name e password no foram tratados!

  • Green HatSegurana da Informao

    www.clavis.com.br

    boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException {

    Connection connection = getConnection(); ...

    String pwd = new String(password);

    String sqlString = "SELECT * FROM Users WHERE name=? AND password=?";

    PreparedStatement stmt = connection.prepareStatement(sqlString);

    stmt.setString(1, name);

    stmt.setString(2, pwd);ResultSet rs = stmt.executeQuery();

    if (!rs.next()) {

    return false;

    }

    26Inspeo de Cdigo e Programao SeguraAnlise de Vulnerabilidades: Injeo SQL

    sanitizao da entrada =)

  • Green HatSegurana da Informao

    www.clavis.com.br

    27Inspeo de Cdigo e Programao SeguraAnlise Dinmica: Anlise do Fluxo de Controle e Dados

  • Green HatSegurana da Informao

    www.clavis.com.br

    28Inspeo de Cdigo e Programao SeguraAnlise Dinmica: Propagao de Atributos e Execuo Simblica

  • Green HatSegurana da Informao

    www.clavis.com.br

    29

    Resistir engenharia reversa esttica e dinmica

    Resistir modificaes no autorizadas

    Resistir clonagem de software

    Resistir ao spoofing

    Esconder segredos estticos e dinmicos (criao, transmisso, utilizao)

    Impedir a distribuio de programas crackeados

    Ofuscao proteo contra engenharia reversa

    Incorruptibilidade proteo contra modificao/monitoramento

    Marca dgua identificao de autoria e rastreamento de propriedade

    Proteo de Software

  • Green HatSegurana da Informao

    www.clavis.com.br

    30

    Ofuscao

    Marca dgua Incorruptibilidade

    Proteo de Software

  • Green HatSegurana da Informao

    www.clavis.com.br

    Ofuscao: movfuscator

    The M/o/Vfuscator compiles programs into "mov" instructions, and only "mov" instructions. Arithmetic, comparisons, jumps, function calls, and everything else a program needs are all performed through mov operations; there is no self-modifying code, no transport-triggered calculation, and no other form of non-mov cheating

    31

  • Green HatSegurana da Informao

    www.clavis.com.br

    Movfuscator: Grafo de Fluxo de Controle 32

  • Green HatSegurana da Informao

    www.clavis.com.br

    Incorruptibilidade 33

  • Green HatSegurana da Informao

    www.clavis.com.br

    Marca dgua e Impresso Digital 34

    Como?Para qu?

  • Green HatSegurana da Informao

    www.clavis.com.br

    Marca dgua e Impresso Digital: CFG 35

  • Green HatSegurana da Informao

    www.clavis.com.br

    Concluses

    A iminncia de falhas de software em infraestruturas crticas, aplicaes e servios aumenta a necessidade de

    Novas regulamentaes referentes segurana de software

    Servios, metodologias e ferramentas para avaliao de segurana

    Treinamento/conscientizao em desenvolvimento seguro

    36

  • Green HatSegurana da informao

    www.clavis.com.br

    Muito Obrigado!

    37

    [email protected]

    Davidson R. BoccardoDiretor do Green Hat Labs