Investigadores encontram falhas de segurança na cloud IBM

Um ataque demonstrado por investigadores de cibersegurança na infraestrutura de cloud da IBM foi capaz de aceder ao servidor interno, utilizado para construir imagens de base de dados para implantações de clientes.

Por Lucian Constantin

Os investigadores de segurança sondaram recentemente a infraestrutura DBaaS (database-as-a-service) da IBM Cloud e encontraram vários problemas de segurança que lhes permitiram ter acesso ao servidor interno, utilizado para construir imagens de base de dados para implantações de clientes. O ataque demonstrado destaca alguns excessos de segurança comuns que podem levar a compromissos na cadeia de fornecimento em infraestruturas de clouds.

Desenvolvido por investigadores da empresa de segurança Wiz, o ataque combinou uma vulnerabilidade de escalada de privilégios no serviço IBM Cloud Databases for PostgreSQL com credenciais de ficheiro de texto espalhadas pelo ambiente e controlos de acesso à rede interna excessivamente permissivos que permitiram movimentos laterais dentro da infraestrutura.

O PostgreSQL é um alvo atrativo em ambientes de cloud

A auditoria do Wiz às bases de dados em cloud da IBM para PostgreSQL fez parte de um projeto de investigação mais vasto que analisa as implementações do PostgreSQL nos principais fornecedores de clouds que oferecem este motor de base de dados como parte das suas soluções DBaaS geridas. No início deste ano, os investigadores Wiz também encontraram e revelaram vulnerabilidades em implementações PostgreSQL na plataforma Microsoft Azure e Google Cloud Platform (GCP).

O motor de base de dados relacional PostgreSQL de código aberto está em desenvolvimento há mais de 30 anos, com ênfase na estabilidade, alta disponibilidade e escalabilidade. No entanto, esta complexa peça de software não foi concebida com um modelo de permissão adequado para ambientes de clouds de múltiplos locatários onde as instâncias das bases de dados precisam de ser isoladas umas das outras e da infraestrutura subjacente.

O PostgreSQL tem características poderosas através das quais os administradores podem alterar o sistema de ficheiros do servidor e até executar código através de consultas a bases de dados, mas estas operações não são seguras e precisam de ser restringidas em ambientes de cloud partilhada. Entretanto, outras operações administrativas tais como replicação de bases de dados, criação de pontos de controlo, instalação de extensões e gatilhos de eventos devem estar disponíveis aos clientes para que o serviço seja funcional. Como resultado, os fornecedores de serviços em cloud (CSP) tiveram de conceber soluções e fazer modificações ao modelo de permissão PostgreSQL para permitir estas capacidades, mesmo quando os clientes só operam com contas limitadas.

Escalada de privilégios através de injeção SQL

Ao analisar a implementação do PostgreSQL da IBM Cloud, os investigadores do Wiz observaram o mecanismo de Replicação Lógica que está disponível para os utilizadores. Esta funcionalidade foi implementada utilizando várias funções de base de dados, incluindo uma chamada create_subscription que é propriedade e executada por um superutilizador de base de dados chamado ibm.

Ao inspecionar o código desta função, os investigadores observaram uma vulnerabilidade de injeção SQL causada por uma sanitização inadequada dos argumentos que lhe foram transmitidos. Isto significava que podiam passar consultas SQL arbitrárias à função, que executaria então essas consultas como o superutilizador ibm. Os investigadores exploraram esta falha através da declaração COPY do PostgreSQL para executar comandos arbitrários na máquina virtual subjacente que hospedava a instância da base de dados e abriram uma shell inversa.

Com uma shell Linux começaram a fazer algum reconhecimento para compreender o seu ambiente, tal como listar processos em execução, verificar ligações de rede ativas, inspecionar o conteúdo dos ficheiros /etc/passwd, que listam os utilizadores do sistema, e executar um scan de portas na rede interna para descobrir outros servidores. O extenso scanning do porto chamou a atenção da equipa de segurança da IBM, que contactou a equipa do Feiticeiro para se inteirar das suas atividades.

“Depois de discutirmos o nosso trabalho e de partilharmos as nossas ideias com eles, eles gentilmente deram-nos permissão para continuar a nossa investigação e desafiar ainda mais os limites da segurança, o que reflete a cultura de segurança saudável da organização”, disse a equipa Wiz.

As credenciais armazenadas levam a um ataque na cadeia de abastecimento

A informação recolhida, tais como variáveis de ambiente, disse aos investigadores que estavam num contentor de cápsulas Kubernetes (K8s) e, após pesquisarem no sistema de ficheiros, encontraram um token de acesso API K8s armazenado localmente num ficheiro chamado /var/run/secrets/kubernetes.io/servicecount/token. A ficha API permitiu-lhes recolher mais informações sobre o aglomerado K8s, mas verificou-se que todas as cápsulas estavam associadas à sua conta e funcionavam sob o mesmo espaço de nomes. Mas isto não foi um beco sem saída.

O K8s é um sistema de orquestração de contentores utilizado para a implantação de software onde os contentores são normalmente implantados a partir de imagens, ou seja, pacotes pré-construídos contendo todos os ficheiros necessários para um contentor e os seus serviços pré-configurados para funcionar. Estas imagens são tipicamente armazenadas num servidor de registo de contentores, que pode ser público ou privado. No caso do IBM Cloud, tratava-se de um registo privado de contentores que exigia autenticação.

Os investigadores utilizaram o símbolo API para ler as configurações da cápsula no seu namespace e encontraram a chave de acesso para quatro registos de contentores internos diferentes nesses ficheiros de configuração. A descrição desta chave recentemente encontrada no IBM Cloud Identity and Access Management (IAM) API sugeriu que tinha privilégios de leitura e escrita nos registos dos contentores, o que teria dado aos investigadores a capacidade de sobrescrever imagens existentes com imagens falsas.

No entanto, verificou-se que a descrição chave era imprecisa e que só podiam descarregar imagens. Este nível de acesso teve implicações de segurança, mas não representou uma ameaça direta para outros clientes da IBM Cloud, pelo que os investigadores avançaram.

As imagens do contentor podem incluir muita informação sensível que é utilizada durante a implantação e posteriormente removida, incluindo o código fonte, scripts internos que referenciam serviços adicionais na infraestrutura, bem como as credenciais necessárias para aceder aos mesmos. Os investigadores decidiram, portanto, descarregar todas as imagens do serviço de registo e utilizar uma ferramenta automatizada para as digitalizar em busca de segredos, tais como credenciais e fichas API.

“A fim de procurar segredos de forma exaustiva, desembalámos as imagens e examinámos a combinação dos ficheiros que compunham cada imagem”, explicam os investigadores. “As imagens dos recipientes são baseadas em uma ou mais camadas; cada camada pode inadvertidamente incluir segredos. Por exemplo, se um segredo existe numa camada, mas é removido da seguinte, seria completamente invisível do recipiente. Portanto, a digitalização de cada camada separadamente pode revelar segredos adicionais”.

Os ficheiros do manifesto JSON das imagens do contentor têm uma secção de “história” que lista os comandos históricos que foram executados durante o processo de construção de cada imagem. Em vários destes ficheiros, os investigadores encontraram comandos que tinham palavras-passe passadas como argumentos de linha de comando. Estas incluíam palavras-passe para um servidor FTP IBM Cloud interno e para um repositório de artefactos de construção.

Finalmente, os investigadores testaram se conseguiam aceder a estes servidores a partir do seu contentor e verificou-se que conseguiam. Este acesso demasiado permissivo à rede, combinado com as credenciais extraídas, permitiu-lhes sobrescrever ficheiros arbitrários no repositório de artefactos de construção que o processo de construção automática da IBM Cloud utiliza para criar imagens de contentores. Essas imagens são então utilizadas em destacamentos de clientes, abrindo a porta a um ataque na cadeia de abastecimento.

“A nossa investigação sobre as bases de dados em cloud da IBM para PostgreSQL reforçou o que aprendemos com outros fornecedores de clouds, que as modificações ao motor PostgreSQL introduziram efetivamente novas vulnerabilidades ao serviço”, disseram os investigadores. “Estas vulnerabilidades poderiam ter sido exploradas por um ator malicioso como parte de uma extensa cadeia de exploração que culminou num ataque à cadeia de abastecimento da plataforma”.

Lições para outras organizações

Embora todas estas questões já tenham sido comunicadas a título privado e fixadas pela equipa da IBM Cloud, não são exclusivas da IBM. Segundo a equipa do Wiz, o problema dos “segredos dispersos” é comum a todos os ambientes de clouds.

Os fluxos de trabalho automatizados de construção e implementação deixam frequentemente segredos em vários locais, tais como ficheiros de configuração, histórico de bash Linux, ficheiros de diário, etc., que os programadores se esquecem de apagar quando a implementação está completa. Além disso, alguns programadores carregam acidentalmente todos os seus ficheiros de configuração. git e CircleCI para servidores de produção. Os segredos esquecidos frequentemente encontrados pela equipa Wiz incluem chaves de acesso à cloud, palavras-passe, credenciais CI/CD e fichas de acesso API.

Outro problema comum que desempenhou um papel crítico no ataque ao IBM Cloud é a falta de controlos de acesso rigorosos entre os servidores de produção e os sistemas internos de CI/CD. Isto permite frequentemente que os atacantes se desloquem lateralmente e ganhem uma posição mais profunda na infraestrutura de uma organização.

Finalmente, os registos de contentores privados podem fornecer uma riqueza de informação aos atacantes que vai para além das credenciais. Podem revelar informações sobre servidores críticos dentro da infraestrutura ou podem conter código que revele vulnerabilidades adicionais. As organizações devem assegurar-se de que as suas soluções de registo de contentores aplicam controlos de acesso e alcance adequados, disse a equipa Wiz.




Deixe um comentário

O seu email não será publicado