Nova Vulnerabilidade 0day de Injection no Salesforce SOQL Expõe Milhões de Implantações

Um pesquisador de segurança revelou uma vulnerabilidade crítica de injeção de SOQL no controlador interno do Salesforce

Um pesquisador de segurança revelou uma vulnerabilidade crítica de injeção de SOQL no controlador interno do Salesforce, que potencialmente expôs dados confidenciais de usuários em milhares de implantações corporativas em todo o mundo.

A vulnerabilidade foi descoberta durante uma avaliação de segurança abrangente de um aplicativo baseado no Salesforce, onde um pesquisador desenvolveu uma ferramenta de fuzzing automatizada para testar centenas de controladores Aura presentes em instâncias do Salesforce.

A ferramenta testou sistematicamente várias mutações de endpoint, identificando um ponto de injeção SOQL perigoso em um controlador que é enviado por padrão com todos Salesforce implantações.

O endpoint vulnerável aceitou um parâmetro contentDocumentId que não estava incorporado de forma segura em consultas SOQL sem sanitização adequada.

Quando a entrada malformada foi fornecida, o sistema retornou mensagens de erro detalhadas revelando a estrutura de banco de dados subjacente, incluindo o sinal revelador: “MALFORMED_QUERY: ContentVersion WHERE ContentDocumentId = ”’” seguido de detalhes de erro de sintaxe.

Vulnerabilidade de Injeção SOQL de 0 dias

Ao contrário do tradicional Injeção SQL ataques, injeções de SOQL enfrentam restrições significativas, incluindo a incapacidade de executar operações UNION, recursos limitados de junção e restrições na execução de consultas múltiplas.

No entanto, o pesquisador desenvolveu uma técnica inovadora de injeção cega que alavancou discrepâncias de resposta para extrair informações sensíveis sistematicamente.

O método de exploração utilizou duas respostas distintas do servidor: quando existia um documento válido, o sistema devolveu “Não é possível invocar ‘common.udd.EntityInfo.getEntityId()’ porque ‘ei’ é nulo,” enquanto documentos inexistentes acionaram “Erro na recuperação de conteúdo document”.

Criando cargas úteis como “069TP00000HbJbNYAV’ E OwnerId IN (SELECT Id FROM User WHERE Email LIKE ‘a%25’) E ContentDocumentId != ‘”, os atacantes podem enumerar o conteúdo do banco de dados caractere por caractere.

O escopo do attackilits foi dramaticamente expandido através do uso de técnicas de geração de IDs do Salesforce.

As tentativas dos investigadores de participar no programa de recompensas por bugs do Salesforcelotes foram recusadas, com a empresa a afirmar que estavam “a não procurarem novos candidatos no momento”.

Como os identificadores do Salesforce seguem padrões previsíveis, os pesquisadores poderiam gerar milhares de contentDocumentIds válidos a partir de um único identificador conhecido, permitindo a massa extração de dados.

O script automatizado extraiu com sucesso nomes de documentos, descrições e detalhes abrangentes do usuário, incluindo e-mails, nomes completos, endereços e números de telefone nas instalações afetadas.

Práticas de Divulgação

Seguindo responsável divulgação para a Salesforce no final de fevereiro de 2024, a vulnerabilidade foi resolvida silenciosamente sem reconhecimento público.

Notavelmente, a Salesforce não emitiu nenhum aviso de segurança, não atribuiu nenhum identificador CVE e não forneceu nenhuma menção nas notas oficiais de lançamento sobre essa correção de segurança crítica.

Essa abordagem silenciosa contrasta fortemente com as melhores práticas do setor para divulgação de vulnerabilidades, particularmente para problemas que afetam uma base de usuários tão ampla.

Essa divulgação de erros forneceu a base para explorar a vulnerabilidade de injeção, apesar das limitações de segurança inerentes ao SOQL

Essa resposta destaca possíveis lacunas na forma como os principais provedores de nuvem lidam com contribuições de pesquisa de segurança externa, especialmente para vulnerabilidades que afetam sua infraestrutura de plataforma principal que atende milhões de clientes corporativos em todo o mundo.