retornar retornar

Rayshadow - Vulnerabilidade para a estrutura de IA

Até o final de 2023, cinco vulnerabilidades exclusivas foram divulgadas no "Ray", uma estrutura de código aberto usada principalmente em cargas de trabalho semelhantes a IA.

Após a notícia, a Anyscale (desenvolvedora do Ray) publicou detalhes em seu blog para abordar as vulnerabilidades, esclarecer a cadeia de eventos e detalhar como cada CVE foi abordado. Embora quatro das vulnerabilidades relatadas tenham sido corrigidas em uma versão posterior do Ray (2.8.1), a quinta CVE (CVE-2023-48022) ainda está em disputa, o que significa que não foi considerada um risco e não foi abordada com uma correção imediata.

Por causa disso, muitas equipes de desenvolvimento (e a maioria das ferramentas de verificação estática) não estão cientes dos riscos dessa vulnerabilidade. Algumas podem ter ignorado essa seção da documentação do Ray e podem não estar cientes desse recurso.

Como acontece nesses casos, descobriu-se que milhares de servidores expostos publicamente em todo o mundo têm essa vulnerabilidade, chamada de ShadowRay. Algumas das máquinas afetadas foram comprometidas por pelo menos sete meses. Muitas das máquinas incluíam o histórico de comandos, facilitando aos invasores entender o que reside na máquina atual e vazar segredos de produção confidenciais que foram usados em comandos anteriores.

Definição de Ray

O Ray é uma estrutura unificada para dimensionar aplicativos de IA e Python para uma variedade de finalidades. Em termos simples, ele consiste em um mecanismo de execução conhecido como "Ray Core" e um conjunto de bibliotecas de IA complementares.

Até o momento, o projeto de Ray no Github tem 30.000 estrelas e, de acordo com a Anyscale, algumas das maiores organizações do mundo estão usando-o na produção, incluindo Uber, Amazon e OpenAI.

Ray como parte do treinamento dos modelos do ChatGPT


Muitos projetos contam com o Ray para cargas de trabalho convencionais de SaaS, dados e IA, aproveitando o projeto para obter altos níveis de escalabilidade, velocidade e eficiência.

A Anyscale mantém o projeto, que serve de base para várias bibliotecas, incluindo Ray Tune, Ray Serve e outras.

Algumas organizações que usam ray (Fonte: ray.io)


O valor da infraestrutura de IA

Um ambiente típico de IA contém uma grande quantidade de informações confidenciais, o suficiente para derrubar uma organização. Um ambiente ML-OPS (Machine Learning Operations) consiste em muitos serviços que se comunicam entre si, dentro do mesmo cluster e entre clusters. Quando usado para treinamento ou ajuste fino, ele normalmente tem acesso a conjuntos de dados e modelos, em disco ou em armazenamento remoto, como um contêiner S3. Muitas vezes, os modelos ou conjuntos de dados são a propriedade intelectual exclusiva e privada que diferencia uma organização de seus concorrentes.

Além disso, os ambientes de IA normalmente têm acesso a tokens de terceiros e integrações de vários tipos (HuggingFace, OpenAI, WanDB e outros provedores de SaaS). Os modelos de IA agora estão conectados a bancos de dados corporativos e gráficos de conhecimento. A infraestrutura de IA pode ser um ponto único de falha para empresas orientadas por IA e um tesouro para os invasores.

Além disso, os modelos de IA geralmente são executados em máquinas caras e de alta potência, o que os torna um grande alvo para os invasores.

Uso de Ray

Modelos como o GPT-4 compreendem bilhões de parâmetros e exigem uma enorme capacidade de computação. Esses modelos não podem ser simplesmente carregados na memória de uma máquina. Ray é a tecnologia que permite a execução desses modelos. O Ray se tornou uma espécie de prática recomendada do setor, especialmente para os profissionais de IA, que são proficientes em Python e frequentemente exigem que os modelos sejam executados e distribuídos em várias GPUs e máquinas.

Alguns dos recursos do Ray são:

 • Permite cargas de trabalho distribuídas para treinamento, manutenção e ajuste de modelos de IA de todas as arquiteturas e estruturas.

 • Requer muito pouca proficiência em Python. Ele tem uma API Python simples com configuração mínima.

 • Ele é robusto e usa as práticas recomendadas para otimizar o desempenho, com instalação robusta e sem esforço, poucas dependências e código testado em batalha e em nível de produção.

 • Ele vai além do Python, permitindo que você execute trabalhos de qualquer tipo, inclusive comandos bash.

 • Ele é o canivete suíço para desenvolvedores e profissionais de IA, permitindo que eles dimensionem seus aplicativos sem esforço.

CVE-2023-48022: ShadowRay

Ray expõe seu painel de administração e sempre se vincula a 0.0.0.0.0 (todas as interfaces de rede), juntamente com o encaminhamento de porta em 0.0.0.0.0, possivelmente expondo o computador à Internet por padrão.

Além disso, nenhuma autorização de qualquer tipo está incluída em sua API O resultado é que qualquer pessoa com acesso à rede que possa acessar o painel de controle (porta HTTP 8265) poderia invocar trabalhos arbitrários no host remoto, sem autorização.

De acordo com a documentação oficial do Ray, as práticas recomendadas de segurança começam com o seguinte:

"... A segurança e o isolamento devem ser aplicados fora do Ray Cluster. O Ray espera operar em um ambiente de rede seguro e atuar em um código confiável. Os desenvolvedores e provedores de plataforma devem manter as seguintes invariantes para garantir a operação segura do Ray Clusters..."

Os recursos de execução de código por design estão incluídos; a Anyscale acredita que os usuários devem ser responsáveis por sua segurança. O painel de controle não deve ser exposto à Internet ou deve ser acessível apenas a partes confiáveis. O Ray carece de autorização com base na suposição de que operará em um ambiente seguro com lógica de roteamento adequada: isolamento de rede, namespaces do Kubernetes, regras de firewall ou grupos de segurança.

O problema se torna mais complexo quando os desenvolvedores de terceiros não estão cientes desses pontos fracos, por exemplo, o guia oficial de implantação do Kubernetes da Ray e o Kubernetes Operator da Kuberay sugerem que as equipes exponham o painel de controle em 0.0.0.0:

Capturando a documentação do Kubernetes para o Ray


Impacto do ShadowRay

Um ambiente de produção de IA comprometido pode significar um invasor que afeta a integridade ou a precisão de um modelo de IA inteiro, roubando modelos ou infectando modelos durante a fase de treinamento.

As organizações afetadas são de vários setores, incluindo empresas médicas, empresas de análise de vídeo, instituições educacionais de elite e muitas outras. Uma grande quantidade de informações confidenciais foi vazada por meio dos servidores comprometidos, por exemplo, variáveis de ambiente confidenciais, credenciais da OpenAI, Stripe, Slack e bancos de dados.

Exemplo de exposição de dados confidenciais


Conclusões

Normalmente, os especialistas em IA não são especialistas em segurança, o que nos deixa potencialmente inconscientes dos riscos reais apresentados pelas estruturas de IA.

Sem autorização, a API pode ser exposta a ataques de execução remota de código quando as práticas recomendadas não são seguidas. O CVE é rotulado como "contestado". Nesses casos, o Programa CVE não determina qual parte está correta.



Os rótulos "disputados" dificultam a detecção desse tipo de vulnerabilidade, pois muitos scanners simplesmente ignoram os CVEs disputados. Os usuários podem não estar cientes do risco, mesmo com as soluções mais avançadas disponíveis no mercado.

De acordo com a Anyscale, esse problema não é uma vulnerabilidade, mas sim um recurso essencial para o projeto do Ray, que permite a ativação de trabalhos e a execução dinâmica de códigos em um cluster. Embora um recurso de autorização seja reconhecido como uma dívida técnica que será abordada em uma versão futura, sua implementação é complexa e pode introduzir mudanças significativas. Portanto, a Anyscale decidiu adiar sua adição e contestou o CVE-2023-48022.

Essa abordagem reflete o compromisso da Anyscale em manter a funcionalidade do Ray e, ao mesmo tempo, priorizar os aprimoramentos de segurança. Essa decisão também ressalta a complexidade de equilibrar segurança e usabilidade no desenvolvimento de software, destacando a importância de uma consideração cuidadosa ao implementar alterações em sistemas críticos, como o Ray e outros componentes de código aberto com acesso à rede.