Snyk Code amplia o suporte a linguagens com Apex e segurança para APIs e GraphQL
Frank Fischer
28 de outubro de 2021
0 minutos de leituraO Snyk Code teve um 2021 extraordinário. Começou o ano com suporte a três linguagens — Java, JavaScript e TypeScript — e, desde então, adicionou Python, C#, PHP, Ruby e Go. Mais linguagens e recursos estão a caminho e, neste artigo, temos o prazer de anunciar o suporte ao Apex da Salesforce, além de segurança para APIs e GraphQL. Vamos conferir!
O Snyk Code oferece suporte ao Apex da Salesforce
Agora, o Snyk Code oferece suporte à análise de segurança da linguagem Apex da Salesforce. Em 2016, a Salesforce anunciou o Lightning Experience como uma estrutura geral para criar front-ends na Salesforce. Ele usa uma abordagem de arquitetura model-view-controller (MVC), em que os objetos da Salesforce atuam como modelo, a visualização é implementada como marcação e os controladores são escritos em JavaScript no cliente ou em uma linguagem chamada Apex no servidor.

Apex é uma linguagem de desenvolvimento proprietária usada na plataforma Force da Salesforce. Ela foi desenvolvida por Parker Harris — um dos fundadores da Salesforce — para permitir uma lógica de negócios mais complexa e o processamento de dados armazenados na plataforma Salesforce. O Apex foi criado para essa finalidade. Por exemplo, como a Salesforce é uma plataforma multi-inquilino, separar os ambientes de execução de diferentes clientes é uma preocupação importante.
Apex tem muito em comum com Java e C#: é uma linguagem de programação orientada a objetos, fortemente tipada e que não diferencia maiúsculas de minúsculas, com sintaxe baseada em notação de ponto e chaves. No início, Apex era interpretada, mas, em 2012, foi publicado um compilador. Desenvolver esse compilador não foi uma tarefa fácil, já que Apex está profundamente integrado à plataforma Salesforce. Ainda assim, ele possibilitou um suporte melhor a IDEs como o Visual Studio Code.
Observação: O Apex da Salesforce (Advanced Programming Experience) não tem relação com o Oracle APEX (Oracle Application Express).
Com esse novo suporte à análise de Apex, o Snyk Code abre um novo capítulo em SAST. É extremamente rápido — tão rápido que analisa o código diretamente na sua IDE e também verifica o impacto de qualquer correção. Além dessa velocidade em tempo real, o mecanismo consegue analisar o projeto inteiro usando toda a base de conhecimento — sem análises delta, diferenciais ou incrementais: uma análise completa.
O Snyk Code usa um processo exclusivo de aprendizado de máquina, orientado por pessoas, para criar e manter sua base de conhecimento. Para treinar seus modelos, utiliza centenas de milhares de projetos, ou bilhões de linhas de código. Assim, aprende com o conhecimento coletivo da comunidade global de desenvolvedores. Esse processo permite que o Snyk Code crie bases de conhecimento rapidamente e mantenha uma precisão de ponta. E, como é padrão na Snyk, o Snyk Code é desenvolvido pensando em quem programa e se integra diretamente ao processo de desenvolvimento. Isso inclui plugins para IDEs, verificações de PR, pontuações de prioridade, sugestões fáceis de entender, exemplos de como outras pessoas resolveram o mesmo problema e muito mais.
Observação: A relação entre a Salesforce e a Snyk é próxima. A Salesforce é cliente da Snyk e também investidora na Snyk. Somos muito gratos pela confiança que a Salesforce depositou em nós.
Adoraríamos mostrar a você como o Snyk Code analisa Apex ou qualquer outra das linguagens compatíveis, como JavaScript, Java, TypeScript, C#, Python, Ruby, Go ou PHP.
Proteja seu código com inteligência de ponta
Conheça toda a gama de recursos de análise estática (SAST) do Snyk Code em apenas 30 minutos.
Segurança de APIs
As APIs são essenciais para a grande maioria das aplicações atuais. Em aplicações na nuvem, as APIs REST baseadas em JSON se popularizaram por serem muito fáceis de configurar e consumir. Nos últimos anos, as APIs REST evoluíram e deram origem ao GraphQL — assunto para outro momento.
JavaScript e TypeScript são linguagens frequentemente usadas para criar ou consumir APIs, e há diversas bibliotecas disponíveis para desenvolvê-las. Mas, com grandes liberdades vêm grandes responsabilidades. E as APIs não são exceção: elas estão sujeitas a alguns tipos específicos de ataque.
Observação: Uma ótima fonte para aprender mais sobre segurança de APIs é o OWASP API Top 10 .
O Snyk Code adicionou regras para identificar e sinalizar problemas comuns em APIs. Além disso, uma sugestão de correção é exibida sobre o código-fonte original, acompanhada de exemplos de como outras pessoas resolveram o mesmo problema em situações semelhantes. Vamos ver um exemplo.
Em geral, as APIs REST dão acesso a objetos de dados individuais usando uma URL específica. Por exemplo, [Your URL]/api/v1/notes/345 selecionaria a nota 345. Para descobrir quais elementos estão disponíveis, você pode chamar um serviço de listagem que retorna os IDs disponíveis. Se esses IDs forem fáceis de adivinhar e não houver uma verificação do usuário ou da função que ele exerce, um invasor poderá simplesmente enviar uma solicitação com um ID específico que tenha adivinhado e receber os dados. Isso é chamado de referência direta insegura a objetos (IDOR). O Snyk Code detecta esse e outros problemas semelhantes usando uma abordagem totalmente inovadora para testes estáticos de segurança de aplicações (SAST), capaz de identificar esse tipo de vulnerabilidade. Além de alertar quem desenvolve sobre possíveis problemas, também ajuda a corrigi-los. Às vezes, basta definir um sinalizador na biblioteca.
Em resumo, a OWASP considera a segurança de APIs uma área de grande preocupação. Com uma abordagem exclusiva, o Snyk Code aborda a segurança de APIs e amplia os limites do setor de SAST. E tem mais...
Segurança de GraphQL
As APIs REST passaram por grandes mudanças nos últimos anos. Liderado pelo Facebook, foi desenvolvido um protocolo chamado GraphQL. Uma crítica às APIs REST tradicionais é que são necessárias várias chamadas à API para reunir todos os dados de um objeto (primeiro, a função de listagem para obter o ID da instância e, depois, talvez várias chamadas para coletar todos os detalhes dela). Com o GraphQL, essas chamadas podem ser agrupadas em uma só, reduzindo o processamento adicional.
O Snyk Code é a primeira solução do mercado a oferecer suporte ao GraphQL. A equipe do Snyk Code pesquisou possíveis problemas de segurança, adicionou regras e as aprimorou usando o processo exclusivo orientado por pessoas e repositórios de código aberto como dados de treinamento. Mais uma vez, o Snyk Code aproveitou o conhecimento da comunidade global de desenvolvedores para aprender e evoluir. Um grande número de aplicações que usam GraphQL é escrito em JavaScript ou TypeScript com graphql-express, koa-graphql, mercurius, ApolloServer e graphql-js. Agora, todas elas têm cobertura do Snyk Code.
Vou dar apenas dois exemplos de tipos de problemas que o Snyk Code consegue encontrar no GraphQL. Primeiro, por padrão, as bibliotecas GraphQL costumam permitir consultas com níveis de aninhamento muito profundos — centenas de milhares de níveis. Embora isso seja raramente usado na prática, um invasor poderia consultar o sistema com uma consulta tão profunda, fazendo com que a biblioteca consumisse enormes quantidades de memória e outros recursos do sistema para gerar objetos internos e processar essas solicitações. Isso pode esgotar os recursos ou até causar uma falha no sistema. O resultado é um ataque de negação de serviço. O Snyk Code verifica se as bibliotecas foram configuradas para limitar a profundidade das solicitações e, assim, evitar esse tipo de ataque.

Em segundo lugar, o GraphQL permite que quem usa a API consulte um servidor GraphQL sobre o esquema subjacente por meio do recurso de introspecção. Isso pode ser desejável em uma API pública, mas talvez você não queira divulgar esse tipo de informação em uma API interna. Impedir a introspecção evita que invasores descubram os recursos da API inspecionando-a. Isso talvez não impeça alguém que já tenha ultrapassado o perímetro interno de invadir o sistema, mas dificulta bastante o trabalho e reduz significativamente o ritmo do ataque. Nesse caso, o Snyk Code avisa você que a introspecção está ativada e chama sua atenção para a importância de tomar uma decisão consciente.

Observação: A OWASP publicou um guia rápido de GraphQL que lista os problemas mencionados e outros possíveis problemas de APIs GraphQL.
Esses são apenas dois exemplos, sem entrar em muitos detalhes técnicos. Com o suporte ao GraphQL, o Snyk Code leva o setor a um território até então inexplorado. Na Snyk, acompanhamos a adoção do GraphQL e quisemos ser o parceiro certo, oferecendo segurança integrada e fácil de usar por desenvolvedores desde o início. O Snyk Code nos deu uma plataforma versátil e rápida para liderar o setor no suporte ao CodeQL.
Para concluir
Recapitulando, veja os anúncios relacionados ao Snyk Code:
Suporte ao Apex da Salesforce
Suporte à segurança de APIs REST
Suporte à segurança de GraphQL
Essas são adições importantes ao mecanismo do Snyk Code. Como trabalhamos em estreita colaboração com nossos clientes para criar uma solução que atenda às suas necessidades, adoraríamos mostrar o que o Snyk Code e os outros componentes da plataforma Snyk podem fazer por você. Reserve meia hora da sua agenda e marque uma demonstração para conhecer o produto ao vivo e tirar todas as suas dúvidas.
Proteja seu código com inteligência de ponta
Conheça toda a gama de recursos de análise estática (SAST) do Snyk Code em apenas 30 minutos.
