O suporte do Snyk Code à análise de vulnerabilidades em PHP entra em beta
DeveloperSteve Coochin
2 de setembro de 2021
0 minutos de leituraO suporte do Snyk Code à análise de vulnerabilidades em PHP já está disponível em beta. Agora, é possível identificar problemas de segurança no código PHP de forma rápida e fácil.
Para começar, faça login no Snyk ou crie uma conta gratuita. Depois de entrar no painel, clique no botão Adicionar projeto no canto superior direito e conecte-se ao repositório que você quer analisar.

A partir daí, você pode se conectar a várias plataformas de repositório e analisar vulnerabilidades em PHP em todos os repositórios que gerencia, mesmo que sejam privados. Também é possível fazer a análise pela CLI ou por uma IDE. Conheça outras formas de integrar o Snyk Code ao seu ambiente de desenvolvimento.
Vamos conhecer três das principais vulnerabilidades que as novas análises de PHP podem identificar e ver o que observar nesta versão beta.
XSS
As vulnerabilidades de cross-site scripting (XSS) ocorrem quando um invasor injeta código malicioso em aplicações confiáveis. O ataque pode ter como alvo o navegador de uma pessoa ou injetar código no ambiente de execução da aplicação ou no sistema operacional.
Em PHP, isso pode ocorrer por vários motivos e costuma estar associado à sanitização inadequada de dados fornecidos pelo usuário. Abordei esse assunto com mais detalhes em uma publicação anterior sobre como evitar a injeção de código.
Vamos analisar um exemplo prático para entender melhor o que observar nesta pull request de um repositório.

No exemplo, você pode ver a comparação lado a lado: filter_var foi adicionado com o tipo de filtro FILTER_SANITIZE_NUMBER_INT para tratar a sanitização dos dados de entrada de $_POST. Esse filtro remove todos os caracteres, exceto os dígitos e os sinais de mais e menos.
Hash inseguro
O hash feito por código é uma forma de transformar com segurança uma sequência de caracteres em um valor ou chave que representa a sequência original. Isso pode ser feito, por exemplo, para armazená-la em um banco de dados ou no ambiente de execução para uso posterior. Muitas vezes, usa-se um hash reversível, para que os dados criptografados possam ser armazenados e descriptografados depois.
Tradicionalmente, o MD5 era o método padrão — principalmente em PHP — para criptografar itens como senhas de usuários, até que, em 2008, ficou comprovado que era “criptograficamente vulnerável e inadequado para uso futuro”.
Neste exemplo de correção feita para este repositório, vemos que null é definido como valor padrão na chamada da função de chave assinada. Isso significa que, se nenhum valor for passado para a função, o padrão será null, que poderá ser tratado adequadamente pela função de chave assinada.

Injeção de SQL
A injeção de SQL é semelhante ao XSS, mas a vulnerabilidade permite injetar uma carga maliciosa de SQL em um banco de dados. Em segurança de aplicações, isso pode levar à criação de um novo usuário com privilégios elevados, ao comprometimento de dados ou à exclusão de dados do banco.
É muito importante ter em mente, especialmente ao lidar com dados fornecidos pelo usuário que serão enviados a um banco de dados, que a sanitização adequada é essencial.
Em outro exemplo de repositório, você pode ver que a pull request implementada usa filter_input_array do PHP para tratar os dados de entrada enviados a essa função do banco de dados.

Analise seu código PHP com o Snyk Code
Esses são apenas alguns exemplos comuns da extensa base de conhecimento sobre vulnerabilidades do Snyk Code. Recomendo que você experimente para ver o que é identificado no seu código.
Vale reforçar que o suporte a PHP no Snyk Code está em beta. Adoraríamos receber seu feedback para aprimorar ainda mais nosso suporte a PHP. Entre em contato se tiver alguma dúvida ou quiser conversar sobre os resultados da análise.
Confira também estes conteúdos sobre segurança em PHP:
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.
