Código Apex inseguro impacta várias implementações do Salesforce
27 de Fevereiro de 2024

Pesquisadores de segurança alertam que muitas organizações possuem instâncias de código Apex inseguras em suas implementações do Salesforce, o que abre espaço para vulnerabilidades graves e pode resultar em vazamento ou corrupção de dados, colocando os negócios em risco.

Apex é uma linguagem de programação orientada a objetos com tipologia forte, cuja sintaxe é semelhante à linguagem Java que os desenvolvedores podem usar para executar instruções de fluxo e controle em servidores Salesforce em conjunto com chamadas através da API do Salesforce.

Ela permite que os usuários personalizem suas instâncias do Salesforce adicionando lógica de negócios aos eventos do sistema, incluindo cliques em botões, atualizações de registros relacionados e páginas do Visualforce.

Pesquisadores da empresa de segurança Varonis relataram ter encontrado vulnerabilidades de alta e crítica gravidade no código Apex utilizado por várias empresas da lista Fortune 500 e agências governamentais, mas alertam que práticas inseguras semelhantes são, provavelmente, comuns em organizações de todos os tamanhos e de todos os setores.

"Se exploradas, as vulnerabilidades podem resultar no vazamento de dados, corrupção de dados e danos às funções de negócios no Salesforce", disseram os pesquisadores em um relatório.

"É por isso que é fundamental acompanhar as classes Apex e suas propriedades, quem pode executá-las e como elas são usadas."

De acordo com a documentação Salesforce, o código Apex pode fazer chamadas da Linguagem de Manipulação de Dados (DML), realizar consultas Salesforce Object Query Language (SOQL) e Salesforce Object Search Language (SOSL) para retornar listas de registros sObject, realizar processamento em massa de vários registros ao mesmo tempo, ser usado para criar chamadas de API públicas personalizadas a partir de métodos Apex armazenados e muito mais.

Isso torna as classes Apex uma ferramenta poderosa para desenvolvedores, mas também muito importante para revisar cuidadosamente suas capacidades e limitar quem pode acessá-las.

O código Apex pode ser executado em dois modos: "sem compartilhamento", em que o código Apex ignora as permissões do usuário e pode acessar qualquer registro e confirmar alterações, e "com compartilhamento", cujo código respeita as permissões no nível do registro do usuário, mas ignora o nível do objeto e as permissões de campo.

Às vezes, as classes Apex configuradas para execução no modo "sem compartilhamento" são necessárias para implementar funcionalidades importantes, mas podem se tornar um risco sério, especialmente quando são disponibilizadas para convidados ou usuários externos.

Alguns dos problemas mais comuns que podem surgir das classes Apex são referências diretas a objetos (IDOR) inseguras, que podem permitir que um atacante leia, manipule ou exclua tabelas completas de dados aos quais não deveria ter acesso, ou injeção de SOQL ; e injeção SOSL onde o código apresenta falhas que permitem que invasores manipulem as consultas feitas pela classe para exfiltrar dados ou alterar o fluxo de processo pretendido.

Embora os pesquisadores não tenham descrito cada vulnerabilidade em detalhes, o relatório inclui um exemplo de prova de conceito em que um atacante com acesso de convidado abusa de uma classe excessivamente permissiva para acessar um valor secreto de um campo personalizado nos registros de outros usuários.

Os pesquisadores da Varonis incentivam as organizações a revisar quem pode chamar as diferentes classes Apex usadas em suas instâncias e seus recursos, especialmente classes executadas no modo "sem compartilhamento".

Isso pode ser feito manualmente, passando por cada aula, mas é um processo demorado.

O relatório Varonis também inclui práticas recomendadas sobre como proteger o código Apex para evitar entradas inseguras que podem levar à injeção de SOQL ou SOSL.

Com base no modelo de responsabilidade compartilhada, são os clientes do Salesforce e não o Salesforce que são responsáveis pela segurança de seu código Apex.

"Uma estratégia de segurança abrangente deve garantir que as classes Apex foram revisadas por especialistas em segurança, não apenas por desenvolvedores e administradores do Salesforce", disseram os pesquisadores.

Publicidade

Pentest do Zero ao Profissional

O mais completo curso de Pentest e Hacking existente no Brasil, ministrado por instrutores de referência no mercado. Oferece embasamento sólido em computação, redes, Linux e programação. Passe por todas as fases de um Pentest utilizando ambientes realísticos. Se prepare para o mercado através da certificação SYCP. Saiba mais...