Falha de Injeção de Comando expõe bancos de dados
27 de Junho de 2024

Pesquisadores de cibersegurança revelaram uma falha de segurança de alta gravidade na biblioteca Vanna.AI, que poderia ser explorada para realizar uma vulnerabilidade de execução remota de código via técnicas de injecção de prompts.

A vulnerabilidade, identificada como CVE-2024-5565 (pontuação CVSS: 8.1), está relacionada a um caso de injeção de prompts na função "ask" que poderia ser explorada para enganar a biblioteca e executar comandos arbitrários, segundo a firma de segurança de supply chain, JFrog.

Vanna é uma biblioteca de aprendizado de máquina baseada em Python que permite aos usuários conversar com seu banco de dados SQL para obter insights "apenas fazendo perguntas" (também conhecidas como prompts), que são traduzidas em uma consulta SQL equivalente usando um modelo de linguagem grande (LLM).

O rápido desenvolvimento de modelos de inteligência artificial (IA) generativa nos últimos anos trouxe à tona os riscos de exploração por atores maliciosos, que podem armar as ferramentas fornecendo entradas adversas que contornam os mecanismos de segurança incorporados a elas.

Uma dessas classes proeminentes de ataques é a injeção de prompts, que se refere a um tipo de jailbreak de IA que pode ser usado para desprezar as barreiras erguidas pelos provedores de LLM para prevenir a produção de conteúdo ofensivo, prejudicial ou ilegal, ou executar instruções que violem o propósito pretendido da aplicação.

Tais ataques podem ser indiretos, onde um sistema processa dados controlados por um terceiro (por exemplo, e-mails recebidos ou documentos editáveis) para lançar um payload malicioso que leva a um jailbreak de IA.

Eles também podem assumir a forma do que é chamado de jailbreak many-shot ou multi-turn jailbreak (também conhecido como Crescendo), no qual o operador "começa com diálogos inofensivos e, progressivamente, direciona a conversa para o objetivo proibido pretendido."

Essa abordagem pode ser estendida para realizar outro tipo de ataque de jailbreak conhecido como Skeleton Key.

"Esta técnica de jailbreak de IA funciona usando uma estratégia de múltiplos turnos (ou várias etapas) para fazer com que um modelo ignore suas barreiras," disse Mark Russinovich, diretor de tecnologia da Microsoft Azure.

Uma vez as barreiras sendo ignoradas, um modelo não será capaz de distinguir solicitações maliciosas ou não autorizadas de outras.

Skeleton Key também é diferente de Crescendo no sentido de que, uma vez o jailbreak bem-sucedido e as regras do sistema alteradas, o modelo pode criar respostas para perguntas que, de outra forma, seriam proibidas, independentemente dos riscos éticos e de segurança envolvidos.

"Quando o jailbreak Skeleton Key é bem-sucedido, um modelo reconhece que atualizou suas diretrizes e, consequentemente, cumprirá instruções para produzir qualquer conteúdo, não importando o quanto viole suas diretrizes originais de IA responsável," disse Russinovich.

Diferente de outros jailbreaks como Crescendo, onde modelos devem ser questionados sobre tarefas indiretamente ou com codificações, Skeleton Key coloca os modelos em um modo onde um usuário pode solicitar tarefas diretamente.

Além disso, a saída do modelo parece ser completamente desfiltrada e revela a extensão do conhecimento do modelo ou a capacidade de produzir o conteúdo solicitado.

Os últimos achados da JFrog – também divulgados de forma independente por Tong Liu – mostram como injeções de prompts podem ter impactos severos, particularmente quando estão atrelados à execução de comandos.

CVE-2024-5565 tira vantagem do fato de que Vanna facilita a geração de text-to-SQL para criar consultas SQL, que são então executadas e graficamente apresentadas aos usuários usando a biblioteca de gráficos Plotly.

Isso é realizado por meio de uma função "ask" – por exemplo, vn.ask("Quais são os 10 melhores clientes por vendas?") – que é um dos principais pontos de API que permite a geração de consultas SQL a serem executadas no banco de dados.

O comportamento mencionado, juntamente com a geração dinâmica do código Plotly, cria um buraco de segurança que permite a um ator de ameaça enviar um prompt especialmente elaborado incorporando um comando para ser executado no sistema subjacente.

"A biblioteca Vanna usa uma função de prompt para apresentar ao usuário os resultados visualizados, é possível alterar o prompt usando injeção de prompt e executar código Python arbitrário em vez do código de visualização pretendido," disse a JFrog.

Specificamente, permitir entrada externa ao método 'ask' da biblioteca com 'visualize' definido como True (comportamento padrão) leva à execução remota de código. Após a divulgação responsável, Vanna emitiu um guia de fortalecimento que adverte os usuários de que a integração com Plotly poderia ser usada para gerar código Python arbitrário e que os usuários que expõem essa função devem fazê-lo em um ambiente sandboxed.

"Esta descoberta demonstra que os riscos do uso generalizado de GenAI/LLMs sem governança e segurança adequadas podem ter implicações drásticas para as organizações," disse Shachar Menashe, diretor sênior de pesquisa de segurança na JFrog, em um comunicado.

Os perigos da injeção de prompts ainda não são amplamente conhecidos, mas são fáceis de executar.

As empresas não devem confiar na pré-prompting como um mecanismo de defesa infalível e devem empregar mecanismos mais robustos ao interagir LLMs com recursos críticos como bancos de dados ou geração dinâmica de código.

Publicidade

Curso gratuito de Python

O curso Python Básico da Solyd oferece uma rápida aproximação à linguagem Python com diversos projetos práticos. Indo do zero absoluto até a construção de suas primeiras ferramentas. Tenha também suporte e certificado gratuitos. Saiba mais...